From c6a17ad1e4df9b00e02c7407e501ccb29b223daf Mon Sep 17 00:00:00 2001 From: lacerate551 <128470311+lacerate551@users.noreply.github.com> Date: Sun, 21 Jun 2026 16:20:34 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20search=5Fhybrid=20=E6=94=B9=E7=94=A8?= =?UTF-8?q?=E6=94=B9=E5=86=99=E5=90=8E=E7=9A=84=20retrieval=5Fquery=20+=20?= =?UTF-8?q?=E6=B8=85=E7=90=86=20engine.py=20=E6=AD=BB=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 关键修复: - chat_routes.py: search_hybrid(message,...) → search_hybrid(retrieval_query,...) 修复无状态模式下追问场景("那工作流程呢?")用原始模糊文本做向量检索的问题, 现在使用意图分析改写后的完整查询("货源投放的具体工作流程是什么?") 死代码清理 (Claude Code review 反馈): - engine.py: 移除 4 处未使用的 doc_ids 变量和 2 处过时注释 --- api/chat_routes.py | 2 +- core/engine.py | 6 ------ 2 files changed, 1 insertion(+), 7 deletions(-) diff --git a/api/chat_routes.py b/api/chat_routes.py index 2bbb380..b0c32d4 100644 --- a/api/chat_routes.py +++ b/api/chat_routes.py @@ -2351,7 +2351,7 @@ def rag(): sub_queries = intent.sub_queries search_result = search_hybrid( - message, + retrieval_query, top_k=RAG_SEARCH_TOP_K, candidates=RAG_SEARCH_CANDIDATES, allowed_collections=collections, diff --git a/core/engine.py b/core/engine.py index 2749f30..8491074 100644 --- a/core/engine.py +++ b/core/engine.py @@ -559,7 +559,6 @@ class RAGEngine: top_dist = result['distances'][0][0] if result.get('distances') and result['distances'][0] else 1.0 top_score = 1.0 - top_dist if top_score >= CACHE_MIN_SCORE: - doc_ids = result.get('ids', [[]])[0] if result.get('ids') else [] cache.set_query_result(query, kb_name, result) result['_debug'] = _debug return result @@ -581,7 +580,6 @@ class RAGEngine: top_dist = result['distances'][0][0] if result.get('distances') and result['distances'][0] else 1.0 top_score = 1.0 - top_dist if top_score >= CACHE_MIN_SCORE: - doc_ids = result.get('ids', [[]])[0] if result.get('ids') else [] cache.set_query_result(query, kb_name, result) result['_debug'] = _debug return result @@ -617,8 +615,6 @@ class RAGEngine: top_dist = result['distances'][0][0] if result.get('distances') and result['distances'][0] else 1.0 top_score = 1.0 - top_dist if top_score >= CACHE_MIN_SCORE: - # 传递 doc_ids 实现细粒度缓存失效 - doc_ids = result.get('ids', [[]])[0] if result.get('ids') else [] cache.set_query_result(query, kb_name, result) _debug['timing']['total_ms'] = int((time.time() - _overall_start) * 1000) result['_debug'] = _debug @@ -810,8 +806,6 @@ class RAGEngine: top_dist = fused_results['distances'][0][0] if fused_results.get('distances') and fused_results['distances'][0] else 1.0 top_score = 1.0 - top_dist # 距离转相似度 if top_score >= CACHE_MIN_SCORE: # 置信度阈值 - # 传递 doc_ids 实现细粒度缓存失效 - doc_ids = fused_results.get('ids', [[]])[0] if fused_results.get('ids') else [] cache.set_query_result(query, kb_name, fused_results) fused_results['_debug'] = _debug