Spaces:
Paused
Paused
lanny xu
commited on
Commit
·
f3ef5e1
1
Parent(s):
f131a12
add Milvus db
Browse files- main.py +1 -0
- workflow_nodes.py +14 -4
main.py
CHANGED
|
@@ -137,6 +137,7 @@ class AdaptiveRAGSystem:
|
|
| 137 |
"transform_query": "transform_query",
|
| 138 |
"prepare_next_query": "prepare_next_query",
|
| 139 |
"generate": "generate",
|
|
|
|
| 140 |
},
|
| 141 |
)
|
| 142 |
workflow.add_edge("transform_query", "retrieve")
|
|
|
|
| 137 |
"transform_query": "transform_query",
|
| 138 |
"prepare_next_query": "prepare_next_query",
|
| 139 |
"generate": "generate",
|
| 140 |
+
"web_search": "web_search", # 添加 web_search 作为回退选项
|
| 141 |
},
|
| 142 |
)
|
| 143 |
workflow.add_edge("transform_query", "retrieve")
|
workflow_nodes.py
CHANGED
|
@@ -298,10 +298,14 @@ class WorkflowNodes:
|
|
| 298 |
print("---网络搜索---")
|
| 299 |
question = state["question"]
|
| 300 |
|
| 301 |
-
|
| 302 |
-
|
| 303 |
-
|
| 304 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 305 |
|
| 306 |
return {"documents": web_results, "question": question}
|
| 307 |
|
|
@@ -386,8 +390,14 @@ class WorkflowNodes:
|
|
| 386 |
current_query_index = state.get("current_query_index", 0)
|
| 387 |
sub_queries = state.get("sub_queries", [])
|
| 388 |
original_question = state.get("original_question", "")
|
|
|
|
| 389 |
|
| 390 |
if not filtered_documents:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 391 |
# 所有文档都被过滤掉了
|
| 392 |
# 我们将重新生成一个新查询
|
| 393 |
print("---决策:所有文档都与问题不相关,转换查询---")
|
|
|
|
| 298 |
print("---网络搜索---")
|
| 299 |
question = state["question"]
|
| 300 |
|
| 301 |
+
try:
|
| 302 |
+
# 网络搜索
|
| 303 |
+
docs = self.web_search_tool.invoke({"query": question})
|
| 304 |
+
web_results = "\n".join([d["content"] for d in docs])
|
| 305 |
+
web_results = [Document(page_content=web_results)]
|
| 306 |
+
except Exception as e:
|
| 307 |
+
print(f"⚠️ 网络搜索失败: {e}")
|
| 308 |
+
web_results = [Document(page_content="无法进行网络搜索,请根据已有知识回答。")]
|
| 309 |
|
| 310 |
return {"documents": web_results, "question": question}
|
| 311 |
|
|
|
|
| 390 |
current_query_index = state.get("current_query_index", 0)
|
| 391 |
sub_queries = state.get("sub_queries", [])
|
| 392 |
original_question = state.get("original_question", "")
|
| 393 |
+
retry_count = state.get("retry_count", 0)
|
| 394 |
|
| 395 |
if not filtered_documents:
|
| 396 |
+
# 检查是否超过最大重试次数
|
| 397 |
+
if retry_count >= 3:
|
| 398 |
+
print(f"⚠️ 已达到最大重试次数 ({retry_count}) 且无相关文档,回退到网络搜索")
|
| 399 |
+
return "web_search"
|
| 400 |
+
|
| 401 |
# 所有文档都被过滤掉了
|
| 402 |
# 我们将重新生成一个新查询
|
| 403 |
print("---决策:所有文档都与问题不相关,转换查询---")
|