Spaces:
Sleeping
Sleeping
Update app.py
Browse files
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
|
| 166 |
-
|
| 167 |
-
|
| 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 |
|