工业级大模型学习之路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))))
相关推荐
回眸&啤酒鸭3 天前
【回眸】Minicart 电商购物车核心功能落地指南
人工智能
一隅论数智3 天前
给AI一张“业务概念地图“:本体如何从哲学走向企业智能
大数据·人工智能·经验分享·笔记·学习·学习方法·政务
默_笙3 天前
🍙 给每个请求过安检:FastAPI 是怎么把校验写进类型注解的
python
AI的探索之旅3 天前
97 个 OpenCV 实例(三十):双目立体,从标定到点云
人工智能·opencv·计算机视觉
AlbertZein3 天前
Step-5-Preview 上手实测:3D 游戏、金融分析、网页设计一次跑完
人工智能·aigc
XiHongShi20163 天前
STM32F407 RTC定时器例程,建议保存
stm32·单片机·学习
LaughingZhu3 天前
Product Hunt 每日热榜 | 2026-09-19
人工智能·深度学习·神经网络·搜索引擎·百度
qq_426003963 天前
启动playwright录制codegen生成自动化测试脚本
python·自动化
虎头金猫3 天前
4K 视频总卡在公网带宽?用 N1 + OpenList 把网盘播放链路重新理顺
运维·服务器·网络·python·容器·beautifulsoup·pandas