资讯动态

跟着Datawhale打卡·【ai-agent-book:从入门到 Agent 工程实践】学习笔记Task2-2

发布时间:2026/10/19 2:08:58 来源:尧图企业网站定制
本篇记录实验3-6Hybrid Retrieval Pipeline with Neural Reranking / 混合检索流水线与神经重排序一、对比实验A组python3 evaluate.py --no-dense --no-rerank解析下这个命令他的参数含义是关掉稠密向量检索、关掉重排只跑纯 BM25 稀疏检索用来单独评估 BM25 基线效果。二、结果是(.venv) tdair retrieval-pipeline % python3 evaluate.py --no-dense --no-rerank 混合检索流水线 · 逐阶段评测对比 语料: 20 篇文档 → 22 个 chunk (chunk_size280, overlap40) 查询: 12 条 稠密模型: (禁用) 重排模型: (禁用) 检索 top_k10 融合 k(RRF)60 重排候选池10 评测截断 k3 设备mps 耗时: 0.0s ------------------------------------------------------------------------------ Stage / Method Recall3 MRR nDCG3 ------------------------------------------------------------------------------ BM25 (sparse) 0.8333 0.7917 0.8026 ------------------------------------------------------------------------------ 读表从上到下逐步加入 稠密检索 / 融合 / 重排 阶段观察指标的变化。 逐条查询 MRR 明细1.00正确文档排在第 1 位粗看哪一路在哪类查询上翻车 ------------------------------------------------------------------------------ Query BM25 Dense RRF Wgt Rerank ------------------------------------------------------------------------------ XR-7003 1.00 - - - - XR-7005 1.00 - - - - HTTP-403 1.00 - - - - HTTP-400 1.00 - - - - Alexander Humphrey 1.00 - - - - a beginner friendly language with tidy... 1.00 - - - - reclaiming unused heap space without p... 0.00 - - - - how vegetation turns light into food 0.50 - - - - hiding a note so eavesdroppers cannot ... 1.00 - - - - 植物如何把阳光转化为食物 0.00 - - - - how does water move between the ocean ... 1.00 - - - - how are volcanoes formed from molten rock 1.00 - - - - 1、分析下Recall3 、MRR、nDCG3三个评估指标之前提到过这三个指标都是分数越高模型效果越好。1Recall3 0.8333召回率12 条查询里83.3% 的查询目标正确 chunk 被成功召回在前 3 条结果。 12 条里12 × 0.8333 ≈ 10条命中2 条没找到。2MRR 0.7917平均倒数排名衡量正确结果排在第几位。正确结果排第 1 名MRR 贡献 1/1 1.0排第 2 名贡献 1/2 0.5排第 3 名贡献 1/3≈0.33不在前 3贡献 0 MRR 兼顾「有没有找到」「排的位置靠前与否」比单纯召回更严格。3nDCG3 0.8026归一化折损累计增益看重结果列表内部排序质量正确文档越靠前分数越高适合多份文档都相关的场景。2、逐条查询 MRR0的2条例子分析1reclaiming unused heap space内存堆回收文档里有“堆内存回收”但是用词不一样。所以bm25在做词频匹配过程中reclaiming、unused这些字面匹配率很低。语义是同一个东西但是单词不一样 → BM25 识别不出来直接漏召回。2植物如何把阳光转化为食物文档里都是英文资料。英文 query 去查how vegetation turns light into food→ 能匹配上英文文档的单词拿到 MRR0.5。BM25 是纯字面单词匹配文档里没有任何中文汉字中文词汇和英文单词完全无法字面重合。直接匹配失败MRR0。3、实验核心结论纯bm25基线的特点是关键词重合高的查询检索效果很好、速度极快、不需要 GPU / 大模型向量。短板是跨语言检索能力比较低同义词改写、概念转述这种情况下容易漏召回并且只靠词频无法理解语义。二、对比试验B组纯bm25vsBM25 Dense 混合检索vsBM25DenseRerank 重排python3 evaluate.py --no-rerank结果混合检索流水线 · 逐阶段评测对比 语料: 20 篇文档 → 22 个 chunk (chunk_size280, overlap40) 查询: 12 条 稠密模型: sentence-transformers/all-MiniLM-L6-v2 重排模型: (禁用) 检索 top_k10 融合 k(RRF)60 重排候选池10 评测截断 k3 设备mps 耗时: 2.39s ------------------------------------------------------------------------------ Stage / Method Recall3 MRR nDCG3 ------------------------------------------------------------------------------ BM25 (sparse) 0.8333 0.7917 0.8026 Dense 1.0000 0.9167 0.9385 Hybrid-RRF 1.0000 1.0000 1.0000 Hybrid-Weighted 1.0000 0.9583 0.9692 ------------------------------------------------------------------------------ 读表从上到下逐步加入 稠密检索 / 融合 / 重排 阶段观察指标的变化。 逐条查询 MRR 明细1.00正确文档排在第 1 位粗看哪一路在哪类查询上翻车 ------------------------------------------------------------------------------ Query BM25 Dense RRF Wgt Rerank ------------------------------------------------------------------------------ XR-7003 1.00 0.50 1.00 1.00 - XR-7005 1.00 0.50 1.00 1.00 - HTTP-403 1.00 1.00 1.00 1.00 - HTTP-400 1.00 1.00 1.00 1.00 - Alexander Humphrey 1.00 1.00 1.00 1.00 - a beginner friendly language with tidy... 1.00 1.00 1.00 1.00 - reclaiming unused heap space without p... 0.00 1.00 1.00 1.00 - how vegetation turns light into food 0.50 1.00 1.00 0.50 - hiding a note so eavesdroppers cannot ... 1.00 1.00 1.00 1.00 - 植物如何把阳光转化为食物 0.00 1.00 1.00 1.00 - how does water move between the ocean ... 1.00 1.00 1.00 1.00 - how are volcanoes formed from molten rock 1.00 1.00 1.00 1.00 - 重点看下第一个实验中两条rff0的查询实验条例1reclaiming unused heap space without p...bm250.00、Dense1.00、RRF1.002植物如何把阳光转化为食物bm250.00、Dense1.00、RRF1.00三、对比试验C组BM25DenseRerank 重排python3 evaluate.py混合检索流水线 · 逐阶段评测对比 语料: 20 篇文档 → 22 个 chunk (chunk_size280, overlap40) 查询: 12 条 稠密模型: sentence-transformers/all-MiniLM-L6-v2 重排模型: BAAI/bge-reranker-base 检索 top_k10 融合 k(RRF)60 重排候选池10 评测截断 k3 设备mps 耗时: 1.64s ------------------------------------------------------------------------------ Stage / Method Recall3 MRR nDCG3 ------------------------------------------------------------------------------ BM25 (sparse) 0.8333 0.7917 0.8026 Dense 1.0000 0.9167 0.9385 Hybrid-RRF 1.0000 1.0000 1.0000 Hybrid-Weighted 1.0000 0.9583 0.9692 Hybrid-RRFRerank 1.0000 0.9583 0.9692 ------------------------------------------------------------------------------ 读表从上到下逐步加入 稠密检索 / 融合 / 重排 阶段观察指标的变化。 逐条查询 MRR 明细1.00正确文档排在第 1 位粗看哪一路在哪类查询上翻车 ------------------------------------------------------------------------------ Query BM25 Dense RRF Wgt Rerank ------------------------------------------------------------------------------ XR-7003 1.00 0.50 1.00 1.00 1.00 XR-7005 1.00 0.50 1.00 1.00 1.00 HTTP-403 1.00 1.00 1.00 1.00 1.00 HTTP-400 1.00 1.00 1.00 1.00 0.50 Alexander Humphrey 1.00 1.00 1.00 1.00 1.00 a beginner friendly language with tidy... 1.00 1.00 1.00 1.00 1.00 reclaiming unused heap space without p... 0.00 1.00 1.00 1.00 1.00 how vegetation turns light into food 0.50 1.00 1.00 0.50 1.00 hiding a note so eavesdroppers cannot ... 1.00 1.00 1.00 1.00 1.00 植物如何把阳光转化为食物 0.00 1.00 1.00 1.00 1.00 how does water move between the ocean ... 1.00 1.00 1.00 1.00 1.00 how are volcanoes formed from molten rock 1.00 1.00 1.00 1.00 1.00 1reclaiming unused heap space without p...bm250.00、Dense1.00、RRF1.002植物如何把阳光转化为食物bm250.00、Dense1.00、RRF1.00三种试验结果对比分析检索方式Recall3MRRnDCG3BM25稀疏关键词0.83330.79170.8026Dense 稠密向量1.00000.91670.9385Hybrid-RRFBM25Dense 融合无重排1.00001.00001.0000Hybrid-Weighted 加权融合1.00000.95830.9692Hybrid-RRFRerank全链路开启重排1.00000.95830.9692结论加上重排之后整体 MRR 反而从满分 1.00 降到 0.9583。这也是RAG的特性加上重排效果不一定会变得更好会引入误判风险。可以重点看下c组试验的HTTP-400这一条从1.00降低到了0.5。也就是RRF 融合阶段目标文档排第 1经过重排模型打分把正确文档挤到了第 2 位MRR 变成 0.5。Q:为什么会出现这种现象原理重排模型 BAAI/bge-reranker-base 会拿「query 候选 chunk」成对打分判断相关性。 它偶尔会出现假阴性误判了文档相关性把正确文档分数压低、排序靠后。最后结合三次实验的过程我们对应【文档切分、Embedding、Retrieval】整条流程可以学到1原始长文档不能直接丢给 Embedding 模型按chunk_sizexxxoverlapxx切割切成xx 个短 chunk。这一步的作用是原始资料预处理是RAG的第一步2Embedding用all-MiniLM-L6-v2把每一个 chunk 文本转换成一串数字向量作用是把文本变成机器能计算语义距离的数据是稠密检索的基础3Retrieval 检索也是实验2-1重点去学的。两路检索bm25稠密搜素各自输出 top-k 候选再用 RRF 融合排序可选 Rerank 重排二次打分。注这里标记一下chunk是怎么计算得到的。公式chunk_size280overlap40每次滑动窗口每次前进步长 chunk_size − overlap 280 − 40 240窗口大小 280每切完一段往后挪 240 个字符保留末尾 40 个字符重叠到下一个 chunk整条链路的运行闭环就是文档先切块全部向量化保存-用户提问,问题转向量-同时走关键词 语义两路检索-把相关片段捞出来-排序之后交给大模型。用贴合我们实际生活的例子去理解就是知识库 RAG后台导入《DeepSeek 产品手册》。你问 “DeepSeek 模型支持什么上下文窗口” → 检索手册文档返回资料。资料是提前上传的外部文档。User Memory和你聊天记住「美然2.7 年风控会 Python SQL面试项目经理」。之后对话自动读取你的个人背景记住你这个人不是查外部文档。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑