Spaces:
Sleeping
Sleeping
Update retriever.py
Browse files- retriever.py +30 -12
retriever.py
CHANGED
|
@@ -38,25 +38,43 @@ class GuestInfoRetrieverTool(Tool):
|
|
| 38 |
for guest in guest_dataset
|
| 39 |
]
|
| 40 |
|
| 41 |
-
# Create retriever
|
| 42 |
-
self.retriever = BM25Retriever.from_documents(self.docs)
|
| 43 |
-
print(" Guest retriever ready")
|
| 44 |
|
| 45 |
def forward(self, query: str):
|
| 46 |
-
print(f" Searching guest database for: '{query}'")
|
| 47 |
|
| 48 |
# Safety check
|
| 49 |
if self.retriever is None:
|
| 50 |
return "ERROR: Guest database not initialized."
|
| 51 |
|
| 52 |
-
|
| 53 |
-
|
| 54 |
-
|
| 55 |
-
|
| 56 |
-
|
| 57 |
-
|
| 58 |
-
|
| 59 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 60 |
|
| 61 |
|
| 62 |
def load_guest_dataset():
|
|
|
|
| 38 |
for guest in guest_dataset
|
| 39 |
]
|
| 40 |
|
| 41 |
+
# Create retriever with k parameter for better results
|
| 42 |
+
self.retriever = BM25Retriever.from_documents(self.docs, k=10)
|
| 43 |
+
print("✅ Guest retriever ready")
|
| 44 |
|
| 45 |
def forward(self, query: str):
|
| 46 |
+
print(f"🔍 Searching guest database for: '{query}'")
|
| 47 |
|
| 48 |
# Safety check
|
| 49 |
if self.retriever is None:
|
| 50 |
return "ERROR: Guest database not initialized."
|
| 51 |
|
| 52 |
+
try:
|
| 53 |
+
# Use invoke() instead of get_relevant_documents()
|
| 54 |
+
results = self.retriever.invoke(query)
|
| 55 |
+
|
| 56 |
+
if results:
|
| 57 |
+
print(f"✅ Found {len(results)} matches")
|
| 58 |
+
# Return more results
|
| 59 |
+
return "\n\n".join([doc.page_content for doc in results[:5]])
|
| 60 |
+
else:
|
| 61 |
+
print("❌ No matches found")
|
| 62 |
+
return "No matching guest information found."
|
| 63 |
+
|
| 64 |
+
except AttributeError:
|
| 65 |
+
# Fallback for older LangChain versions
|
| 66 |
+
try:
|
| 67 |
+
results = self.retriever.get_relevant_documents(query)
|
| 68 |
+
if results:
|
| 69 |
+
print(f"✅ Found {len(results)} matches (using old method)")
|
| 70 |
+
return "\n\n".join([doc.page_content for doc in results[:5]])
|
| 71 |
+
else:
|
| 72 |
+
print("❌ No matches found")
|
| 73 |
+
return "No matching guest information found."
|
| 74 |
+
except Exception as e:
|
| 75 |
+
return f"ERROR: Failed to retrieve documents - {str(e)}"
|
| 76 |
+
except Exception as e:
|
| 77 |
+
return f"ERROR: {str(e)}"
|
| 78 |
|
| 79 |
|
| 80 |
def load_guest_dataset():
|