singhankur01 commited on
Commit
8532f92
·
verified ·
1 Parent(s): 23035b3

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +26 -5
app.py CHANGED
@@ -48,7 +48,7 @@ if not os.path.exists(MODEL_DIR):
48
  # Load environment variables
49
  load_dotenv()
50
 
51
-
52
  ml_models = {}
53
 
54
  @asynccontextmanager
@@ -161,13 +161,34 @@ async def run_hackrx(req: RunRequest):
161
  print(f"chunking done: {end_time}")
162
  if not chunks:
163
  return JSONResponse({"error": "No documents could be processed."}, status_code=400)
 
 
 
 
164
  start_time2 = time.time()
165
- vectorstore = await FAISS.afrom_documents(
166
- documents=chunks,
167
- embedding=ml_models["embedder"]
168
- )
 
 
 
 
 
 
 
 
 
169
  end_time2 = time.time() - start_time2
170
  print(f"vector done: {end_time2}")
 
 
 
 
 
 
 
 
171
  # dense_retriever = vectorstore.as_retriever(search_type="mmr",search_kwargs={"k": 8})
172
  dense_retriever = vectorstore.as_retriever(search_type="mmr",search_kwargs={"k": 12 ,"lambda_mult": 0.5} )
173
 
 
48
  # Load environment variables
49
  load_dotenv()
50
 
51
+ vector_cache = {}
52
  ml_models = {}
53
 
54
  @asynccontextmanager
 
161
  print(f"chunking done: {end_time}")
162
  if not chunks:
163
  return JSONResponse({"error": "No documents could be processed."}, status_code=400)
164
+
165
+ doc_url = str(req.documents) # Assuming it's a URL or unique path
166
+
167
+
168
  start_time2 = time.time()
169
+ # ✅ Reuse vectorstore if already cached
170
+ if doc_url in vector_cache:
171
+ print(f"♻ Using cached vectorstore for: {doc_url}")
172
+ vectorstore = vector_cache[doc_url]
173
+ else:
174
+ print(f"📄 Processing new document: {doc_url}")
175
+ if not chunks:
176
+ return JSONResponse({"error": "No documents could be processed."}, status_code=400)
177
+
178
+ # Build vectorstore & save to cache
179
+ vectorstore = await FAISS.afrom_documents(documents=chunks, embedding=ml_models["embedder"])
180
+ vector_cache[doc_url] = vectorstore # store in memory cache
181
+ print(f"✅ Vectorstore cached for: {doc_url}")
182
  end_time2 = time.time() - start_time2
183
  print(f"vector done: {end_time2}")
184
+
185
+ # start_time2 = time.time()
186
+ # vectorstore = await FAISS.afrom_documents(
187
+ # documents=chunks,
188
+ # embedding=ml_models["embedder"]
189
+ # )
190
+ # end_time2 = time.time() - start_time2
191
+ # print(f"vector done: {end_time2}")
192
  # dense_retriever = vectorstore.as_retriever(search_type="mmr",search_kwargs={"k": 8})
193
  dense_retriever = vectorstore.as_retriever(search_type="mmr",search_kwargs={"k": 12 ,"lambda_mult": 0.5} )
194