lanny xu commited on
Commit
f3ef5e1
·
1 Parent(s): f131a12

add Milvus db

Browse files
Files changed (2) hide show
  1. main.py +1 -0
  2. 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
- docs = self.web_search_tool.invoke({"query": question})
303
- web_results = "\n".join([d["content"] for d in docs])
304
- web_results = Document(page_content=web_results)
 
 
 
 
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("---决策:所有文档都与问题不相关,转换查询---")