1
1
# retrieval_engine.py
2
2
3
+ from langchain_neo4j import GraphCypherQAChain
4
+ from langchain_openai import ChatOpenAI
5
+ from langchain .chains .retrieval import create_retrieval_chain
3
6
from langchain .chains .combine_documents import create_stuff_documents_chain
4
- from langchain . chains . retrieval import create_retrieval_chain
7
+ from configs . openai_key import get_openai_api_key # New import
5
8
from langchain .prompts import PromptTemplate
6
9
7
-
8
10
class RetrievalEngine :
9
11
def __init__ (self , resume_processor , neo4j_model ):
10
12
"""
@@ -19,7 +21,7 @@ def __init__(self, resume_processor, neo4j_model):
19
21
20
22
# Initialize Language Model (already initialized in Neo4jModel)
21
23
self .llm = self .neo4j_model .llm
22
-
24
+
23
25
# Initialize GraphCypherQAChain (already initialized in Neo4jModel)
24
26
self .graph_chain = self .neo4j_model .get_graph_chain ()
25
27
@@ -51,12 +53,12 @@ def __init__(self, resume_processor, neo4j_model):
51
53
{context}
52
54
\" \" \"
53
55
""" ,
54
- input_variables = ["input" ]
56
+ input_variables = ["input" ]
55
57
)
56
58
57
- # Create a documents chain
59
+ # Create a documents chain
58
60
self .combine_docs_chain = create_stuff_documents_chain (self .llm , prompt = prompt )
59
-
61
+
60
62
# Initialize Retrieval Chain
61
63
# Default node_label is 'JD'; can be adjusted as needed
62
64
self .retrieval_chain = create_retrieval_chain (
@@ -77,13 +79,13 @@ def perform_mixed_retrieval(self, resume_text, node_label="JD"):
77
79
"""
78
80
# Process resume into a Document
79
81
doc = self .resume_processor .process_resume (resume_text )
80
-
82
+
81
83
if not doc :
82
84
return [], {}
83
-
85
+
84
86
# Store the Document in the appropriate vector store
85
87
self .neo4j_model .store_documents ([doc ], node_label = node_label )
86
-
88
+
87
89
# Access the schema property correctly
88
90
schema = self .neo4j_model .graph .get_schema
89
91
@@ -92,15 +94,16 @@ def perform_mixed_retrieval(self, resume_text, node_label="JD"):
92
94
similar_docs = similar_docs_result .get ("output" , [])
93
95
print ("similar_docs_result:" , similar_docs_result )
94
96
print ("Keys in similar_docs_result:" , similar_docs_result .keys ())
97
+
98
+
95
99
96
100
for doc in similar_docs :
97
101
print ("Document Metadata:" , doc .metadata )
98
102
99
- query = (f"Based on the following resume, recommend relevant job positions based on skills and experience, "
100
- f"while ignoring the location: { resume_text } " )
103
+ query = f"Based on the following resume, recommend relevant job positions: { resume_text } "
101
104
graph_response = self .graph_chain .invoke ({"query" : query , "schema" : schema })
102
105
# After graph query
103
106
print ("Graph Response:" )
104
107
print (graph_response )
105
-
106
- return similar_docs , graph_response
108
+
109
+ return similar_docs , graph_response
0 commit comments