工业级大模型学习之路025:问题解决-检索质量全为0

问题

检索质量评估结果为0

说明检索没有找到相关文档!问题可能是:

  • 评估数据集生成时的chunk_id与实际向量数据库不匹配

  • 文档内容与问题不相关

原因

向量数据库中的ID有两种:

  1. Chroma内部UUID : 8e5d606e-896c-4117-83a6-31d3ca4638d9 (自动生成)

  2. Metadata中的chunk_id : rag_guide_md_0 (文档处理器生成)

评估数据集记录的是:

  • d6dc2ed0-448d-4b4b-8de2-73e81a3dc2fe (Chroma的UUID)

检索器返回的文档中:

  • chunk_id 字段是 rag_guide_md_0 (自定义格式)

评估器比较的是:

  • 把检索结果的 chunk_id (如 rag_guide_md_0 )与评估数据集的 relevant_chunk_ids (如 d6dc2ed0-448d-4b4b-8de2-73e81a3dc2fe )进行比较。

这两种ID完全不同!所以无法匹配,导致Recall全为0。

评估数据集生成时:

python 复制代码
all_ids = self.retriever.vector_store.get()["ids"]  # 获取的是 Chroma 内部UUID
...
"relevant_chunk_ids": [chunk_id]  # 保存的是UUID,如 `d6dc2ed0-448d-4b4b-8de2-73e81a3dc2fe`

评估时比较的是:

python 复制代码
retrieved_ids = set([doc.metadata["chunk_id"] for doc in retrieved_docs])  # 取的是metadata中的chunk_id,如 `rag_guide_md_0`

修复

修改 core/rag_evaluator.py :

python 复制代码
# 修复前:使用Chroma内部UUID
all_ids = self.retriever.vector_store.get()["ids"]

# 修复后:使用metadata中的chunk_id
chunk_id = metadata.get("chunk_id", metadata.get("id", str(hash(chunk_content))))
相关推荐
岁月宁静36 分钟前
RAG 文档摄入全链路,从原理到生产落地
vue.js·人工智能·python
小和尚同志37 分钟前
AI 自动化测试探索(一):Playwright MCP
前端·人工智能·aigc
硅谷秋水1 小时前
面向长上下文自动驾驶的规划对齐Token压缩
人工智能·深度学习·机器学习·计算机视觉·自动驾驶
JaydenAI1 小时前
[对比学习LangChain和MAF-07]如何引入人机交互的审批流程
python·ai·langchain·c#·agent·hitl·maf
郭泽斌之心1 小时前
MQL5 EA 怎么和外部程序通信?文件三件套协议:参数热更新不重启、状态心跳、远程触发
人工智能·经验分享·深度学习·ea·fay数字人·easydeal
mit6.8241 小时前
“泄露了windows12“
人工智能
syc78901231 小时前
中文语境下AI编码工具实战对比:从迭代体验看日常开发选择
linux·人工智能·ubuntu
dualven_in_csdn1 小时前
用户点击“一键起飞“
人工智能
米核AI易山1 小时前
扣子工作流变量体系深度解析:从踩坑到精通
人工智能·coze·扣子工作流·米核ai易山