[Bug]: Inconsistent retrieval results between Knowledge Retrieval Test and Agent Retrieval with identical configurations

该问题通常发生在 RAGFlow 中同一知识库、同一查询在“知识检索测试”和“Agent 检索”之间返回不同的 Top-N 结果和排序,这主要是因为两个功能默认使用了不同的 vector_similarity_weight (0.3 vs 0.5)和 top_n (30 vs 8)参数,优先排查这两

快速结论:该问题通常发生在 RAGFlow 中同一知识库、同一查询在“知识检索测试”和“Agent 检索”之间返回不同的 Top-N 结果和排序,这主要是因为两个功能默认使用了不同的 vector_similarity_weight(0.3 vs 0.5)和 top_n(30 vs 8)参数,优先排查这两项配置是否一致。

适用环境:RAGFlow v0.26.4(官方 Docker 镜像部署),使用 Qwen3 Embedding 模型和 Qwen3-Reranker-4B 重排序模型。

最快修复方案:暂无确认的一步修复方案。可优先尝试将知识检索测试中的 vector_similarity_weight 调整为 0.5、page_size 调整为 8,或反向调整 Agent 检索组件参数以对齐。

注意事项:参数调整仅基于 Issue 中的代码路径分析,尚未有用户在 Issue 中明确验证该方案;此外,即使参数一致,查询预处理差异(如 Agent 自动去除 user: 前缀)仍可能导致细微结果差异。

问题场景

用户在 RAGFlow v0.26.4 中,使用同一知识库、同一 Embedding 模型(Qwen3 Embedding)和同一 Rerank 模型(Qwen3-Reranker-4B),在“知识检索测试”与“Agent 检索”中配置完全相同的检索参数(包括 Similarity Weight、Top-N、Top-K),但在同一查询下发现两者返回的候选文档和排名顺序不一致,导致无法通过知识检索测试准确评估 Agent 的实际检索表现。

报错原文

[Bug]: Inconsistent retrieval results between Knowledge Retrieval Test and Agent Retrieval with identical configurations

Although both features are expected to use the same retrieval pipeline, the returned Top-N results and ranking order are different for the same query.

原因分析

可能原因:RAGFlow 的知识库检索测试和 Agent 检索虽然在底层都调用同一个核心检索引擎(Dealer.retrieval(),位于 rag/nlp/search.py),但两个功能模块在调用时使用了不同的默认参数值,导致即使界面配置看似一致,实际执行逻辑仍存在差异。主要差异包括:

  • vector_similarity_weight:知识库检索测试默认 0.3(30% 向量 + 70% 关键词),而 Agent 检索默认 0.5(50% 向量 + 50% 关键词)。
  • top_n:知识库检索测试默认返回 30 条结果,Agent 检索默认仅返回 8 条。

这两个参数差异会直接改变同一条查询的候选文档集合和排序权重,从而造成结果不一致。此外,Agent 检索会自动去除查询中的 user: 前缀,而知识库检索测试支持可选的关键词抽取增强(Agent 不支持),这些预处理差异也可能对结果产生细微影响。

环境排查

  • 确认 RAGFlow 版本为 v0.26.4,部署方式为 Docker。
  • 确认知识库检索测试与 Agent 检索使用的是同一个知识库。
  • 逐一核对以下参数在两个功能中的实际取值(不要只看界面显示,需检查后端默认值):
    • vector_similarity_weight
    • top_n
    • top_k
    • 是否开启 keyword_extraction 增强
  • 检查查询文本是否包含 user: 前缀(Agent 会自动剥离该前缀)。

解决步骤

  1. 先检查两个功能当前生效的参数值:知识库检索测试对应后端 api/apps/restful_apis/chunk_api.py,Agent 检索对应 agent/tools/retrieval.py
  2. 手动对齐参数(可优先尝试):
    • 方式一:在知识库检索测试的 API 或配置中,将 vector_similarity_weight 显式设为 0.5,将结果数量设为 8,使其与 Agent 默认值一致。
    • 方式二:调整 Agent 检索组件的设置,使其匹配知识库测试的 0.3 / 30 参数。
  3. 确认查询文本中不存在 user: 前缀,或确保两个功能对查询文本的预处理方式一致。
  4. 如需彻底对齐,需确认两个调用路径中其余与检索相关的参数(如 top_k、rerank 开关、关键词抽取开关)均保持一致。

验证方法

在完成参数对齐后,使用同一知识库、同一查询分别运行“知识检索测试”和“Agent 检索”,对比两者返回的候选文档列表、排序顺序以及相似度分数是否一致。若排序和候选集合均相同,则说明问题已解决;若仍存在差异,建议检查查询预处理环节是否有额外差异。

参考来源

infiniflow/ragflow #17296

GamsGo AI

AI 工具推荐

想把多个 AI 模型放在一个入口?

GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。

了解 GamsGo AI

推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 20006

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注