工业级大模型学习之路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))))
相关推荐
测试者家园1 小时前
为什么意图驱动测试是自动化测试的下一站,而不是替代品
自动化测试·软件测试·人工智能·持续测试·ai赋能·智能化测试·软件测试变革
点心的游戏开发世界2 小时前
Unity C# 脚本学习笔记:命名空间与 using
学习·unity·c#
D202020203 小时前
TikTok Shop禁止AI语音直播落地后,跨境卖家如何通过达秘合规调整带货内容
人工智能
2601_962299243 小时前
Azure python操作系统列表
python·操作系统·azure·虚拟机·存储配置文件
像风一样自由20203 小时前
20.Milvus常见问题检索不到维度错误和数据一致性
人工智能·大模型·milvus
现代野蛮人3 小时前
【深度学习实验】—— 基于 LSTM 与 Optuna 调参的丙型肝炎预测
人工智能·深度学习·lstm
支支დ3 小时前
VO by Vercel 前端特定优势:为什么它是构建 AI 应用的新范式
前端·人工智能
ZGIAI3 小时前
ZGI 让那些"等你去处理"的事,真正跑起来
人工智能·架构
ZGIAI4 小时前
ZGI:别再做Agent Demo了,先问问它在业务里能不能撑过下周三
人工智能·架构
香芋芋圆4 小时前
AI 冲击内卷之下,普通前端如何破局?WebGIS—— 低门槛突围赛道
前端·javascript·人工智能·学习·职场发展