工业级大模型学习之路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))))
相关推荐
hongyucai1 小时前
随意学习-模型工程:因子、隐空间、采样策略
学习
fanstuck3 小时前
1M 上下文能怎么用?我用 Seed Evolving 做了一个招标文件版本差异审查器
服务器·人工智能·数据分析·开源·aigc
墨舟的AI笔记5 小时前
React 组件库的 Tree Shaking:按需加载与副作用的工程化治理
人工智能
Amazing_Cacao5 小时前
CFCA精品可可产区风土体系(亚洲):彻底拒绝应试背诵,将感官复核作为检验真实物理差异的唯一铁律
学习
tkevinjd6 小时前
MiniCode 项目详解6:原项目控制系统的10个缺陷(已修复)
python·llm·agent
WoooChi6 小时前
DailyTech-20260724
人工智能·科技·业界资讯
zh路西法6 小时前
【CAM Grad-CAM Grad-CAM++】深度学习模型可解释性:从原理到YOLOv8部署实战
人工智能·深度学习·yolo·yolov8·grad-cam·cam
雨辰AI6 小时前
全集实战:企业级大模型服务化部署全栈指南|FastAPI 封装 + Nginx 负载均衡 + 高可用架构 从单机到生产一步到位
人工智能·ai·负载均衡·fastapi·ai编程
触底反弹6 小时前
Vibe Coding 不写 Git,等于悬崖边飙车
人工智能·git·面试
咖啡屋和酒吧7 小时前
健康管理:现代生活的科学守护
人工智能·生活·精选