工业级大模型学习之路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))))
相关推荐
Eloudy6 分钟前
ReAct 原理简介
前端·javascript·人工智能·react.js·agent·gpu
COOLMO研究AI26 分钟前
Python 如何在 AI 接口中实现请求幂等性:防止重复提交与重复扣费
人工智能·python·php
微三云-张梅30 分钟前
东莞企业做GEO:AI信任体系的三个建设层级
大数据·人工智能·微三云geo·东莞系统开发·东莞geo
北斗落凡尘36 分钟前
LangGraph 入门实战(7)
后端·langchain
CTA量化套保37 分钟前
新手学量化,先做能复查的小流程
人工智能·python
狂奔蜗牛(bradley)41 分钟前
RKNN Toolkit2开发环境搭建实操
人工智能
ctlover1 小时前
Python文件操作
开发语言·python
weixin_446260851 小时前
AutoDesign:面向长时序智能体设计的元调度优化框架
人工智能
weixin_446260851 小时前
AVA-Encoder:面向智能体原生视频表征学习框架
学习·音视频
Rocktech_ruixun1 小时前
机器人端侧大模型部署对主板有哪些要求?瑞迅主控板分级方案对比
人工智能·嵌入式硬件·机器人