[{"data":1,"prerenderedAt":670},["ShallowReactive",2],{"article:rag-02-vector-hybrid-search":3},{"meta":4,"raw":18,"references":19,"prev":51,"next":61,"body":69,"toc":661},{"slug":5,"title":6,"date":7,"updated":8,"tags":9,"summary":14,"draft":15,"lang":16,"minutes":17},"rag-02-vector-hybrid-search","RAG 全链路（二）：向量库选型与混合检索","2026-01-20","2026-10-11",[10,11,12,13],"RAG","向量数据库","检索","pgvector","按查询、权限过滤和运维条件选择向量库；解释向量与词法检索的互补、RRF 融合，以及 ANN 召回和业务证据召回的区别。",false,"zh-CN",6,"[上一篇](\u002Farticles\u002Frag-01-chunking)准备了可追溯的文档块。这一篇解决“如何把正确的块找出来”。向量检索适合语义表达，词法检索适合明确词项；选库则是吞吐、过滤、更新和运维的综合决策，不能只拿向量条数划线。\n\n## Embedding 选型要覆盖真实查询\n\n先从公开检索榜单筛候选，再用自己的中文、专名、数字和跨段问题验证。维度更高不自动更准确，比较质量之外还要看编码延迟、批量入库成本、查询吞吐和版本稳定性。\n\n文档和查询必须使用匹配的模型版本、预处理与向量空间。有些模型需要不同的 query\u002Fdocument 前缀；只有明确支持降维的模型才能按其规则截断，不能任意裁掉向量后半段。\n\n换模型通常需要重嵌入并重建相应索引：保留旧索引、后台构建新索引、影子比较、灰度切换，最后清理旧版本。不要把新查询向量拿去查旧模型索引。\n\n## 向量库：按约束选，不按“亿级门槛”选\n\n| 方案 | 适合的起点 | 要实际验证 |\n| --- | --- | --- |\n| PostgreSQL + pgvector | 已有 PG，需要事务、联表与统一备份 | 过滤后召回、索引内存、业务负载竞争 |\n| Qdrant \u002F Milvus 等引擎 | 专用向量服务、扩展与过滤需求 | 部署复杂度、更新、租户隔离、恢复 |\n| Chroma | 本地开发及其支持的服务化场景 | 使用版本的持久化、运维与伸缩能力 |\n| FAISS | 自建进程内检索、离线实验 | 它是索引库，API、持久化、权限要自己补 |\n\npgvector 是已有 PostgreSQL 团队的合理候选，但较小规模也可能因高 QPS、强过滤或独立扩容而选专用引擎；专用引擎也不只服务亿级数据。做一次包含目标峰值、增删改与备份恢复的压测，比照抄规模规则更有用。\n\n## HNSW：近似检索的“召回”是哪一种\n\nHNSW 是近似最近邻索引，用较少的候选探索换速度。以 pgvector 为例，`ef_search` 影响查询探索范围，`m` 和 `ef_construction` 影响图构建；调大通常付出延迟、内存或构建成本，不能只看一个质量分。[pgvector 文档](https:\u002F\u002Fgithub.com\u002Fpgvector\u002Fpgvector)\n\n这里有两个不同指标：**ANN recall** 对照精确向量搜索，看近似索引找回多少真实近邻；**业务证据 Recall@k** 对照人工标注，看答案所需证据找回多少。精确近邻也可能不是有用证据，二者不能混用同一个“95%”验收线。\n\n权限过滤是必须项，但“不加思考地写一个 WHERE”不保证候选充足。pgvector 的近似索引查询可能先取候选再过滤，导致结果少于 k；迭代扫描、提高探索范围、分区或部分索引可改善。稀疏租户和严格过滤条件应单独压测。\n\n```sql\n-- 示意：距离算子必须与索引类型一致；真实权限由服务端给定。\nSELECT chunk_id, content\nFROM chunks\nWHERE tenant_id = $1 AND source_revision = $2\nORDER BY embedding \u003C=> $3::vector\nLIMIT $4;\n```\n\n租户 ID 不能由模型任意选择。数据库行级安全或服务层授权要覆盖向量、词法、重排输入与引用展示。未授权文档不能先喂给模型再从最终回答删除。\n\n## 混合检索与 RRF：融合排名，别直接加原始分数\n\n向量检索能找到“意思相近”的段落；BM25 根据词频和文档长度排序，适合错误码、题号与明确专名，但中文分词和符号规范化同样重要。纯 BM25 也未必保证精确命中。\n\n两路分数尺度不同，直接相加可能让一方压倒另一方。RRF（Reciprocal Rank Fusion）按排名融合：\n\n```text\nRRF(d) = Σ w_j \u002F (c + rank_j(d))\n```\n\n`c` 是平滑常数，常见实验起点为 60；`w_j` 是通路权重。未出现在某一路的文档，该路贡献为零。**输出 top-k 的 k 与公式里的 c 是两个参数。**\n\n例如文档 A 在两路分别排第 1 和第 10，B 分别第 3 和第 2，等权且 `c=60`：A 约 0.03068，B 约 0.03200，B 排在前面。融合后按 chunk 或父文档去重，再进入重排。\n\n![混合检索流程：可信权限过滤、两路召回、排名融合、去重与评测](\u002Fdiagrams\u002Frag-retrieval.svg)\n\n*图 1 · 两路都要受相同授权边界约束，融合质量由真实查询验证。*\n\n混合检索是值得测试的常用基线，不是所有语料必须启用的定律。精确题号可先走结构化查询；语义开放问题才更依赖向量。Embedding 服务失败时词法可提供部分能力，需明确这个降级的质量范围。\n\n## 三个指标与一个常见误读\n\n| 指标 | 衡量什么 | 局限 |\n| --- | --- | --- |\n| Recall@k | 已标注相关证据中有多少进入前 k | 依赖证据标注完整性 |\n| MRR | 第一条相关结果的倒数排名平均值 | 不衡量其余证据是否齐全 |\n| nDCG@k | 有等级相关性时的排序质量 | 依赖分级标注规则 |\n\n若标注有四条必要证据，前十找回三条，Recall@10 为 0.75；第一条相关证据排第二，该查询 reciprocal rank 为 0.5。多跳问题可能三条都“相关”却仍缺最后一条决定性证据，应补测证据完整率和最终答案正确率。\n\nAnthropic 的 35% → 49% 指的是**相对失败率降幅**增加了 14 个百分点，不是业务召回率直接增加 14 个百分点。实验数据及限制见 [切分篇](\u002Farticles\u002Frag-01-chunking)。\n\n## 运维与调优顺序\n\n1. 先建可追溯评测集，分中文、符号、强过滤和多跳查询。\n2. 对照精确搜索测 ANN recall，再测业务证据召回。\n3. 比较纯词法、纯向量和融合，保持语料与权限一致。\n4. 调探索范围和候选数，联合看 p95、成本与质量。\n5. 内容更新保持版本一致，删除验证所有检索路径不可见。\n6. 内存成为瓶颈时才比较量化，并用原向量精排验证损失。\n\n向量库内部的删除与压缩机制各不相同，不能把“墓碑加批量重建”当作所有 HNSW 系统的统一运维命令。恢复演练和容量余量也应进入选型结论。\n\n下一篇将候选转成可验证答案：[重排、引用和评估](\u002Farticles\u002Frag-03-rerank-citation-eval)。\n\n## OpenAI 托管检索与自建链路：比较可控范围\n\n[OpenAI File search](https:\u002F\u002Fdevelopers.openai.com\u002Fapi\u002Fdocs\u002Fguides\u002Ftools-file-search)提供托管的语义与关键词检索，并支持文件属性过滤和检索结果返回选项。它减少自行执行检索工具的工作，但知识源质量、访问范围与答案验收仍需要应用负责。\n\n与自建 pgvector \u002F Milvus \u002F Chroma 链路比较时，固定同一授权语料与问题，记录解析覆盖、召回、引用支撑、更新\u002F删除可见性、p95、费用和运维成本。托管与自建的可配置项不同，不能假定切分、重排和过滤具有完全相同的行为；若关键实验参数无法固定，应把差异作为比较局限。\n\nAnthropic 的 [Contextual Retrieval](https:\u002F\u002Fwww.anthropic.com\u002Fengineering\u002Fcontextual-retrieval)是为检索块补充定位上下文的方法与实验，不是一个与 OpenAI File search 完全等价的托管产品。实验结果与支撑范围见[切分篇](\u002Farticles\u002Frag-01-chunking)。\n\n## 参考资料\n\n- [pgvector — Indexes, filtering and iterative scans](https:\u002F\u002Fgithub.com\u002Fpgvector\u002Fpgvector)\n- [Qdrant — Hybrid queries](https:\u002F\u002Fqdrant.tech\u002Fdocumentation\u002Fsearch\u002Fhybrid-queries\u002F)\n- [Milvus — Official project overview](https:\u002F\u002Fgithub.com\u002Fmilvus-io\u002Fmilvus)\n- [FAISS — Documentation](https:\u002F\u002Ffaiss.ai\u002F)\n- [RRF 原始论文（SIGIR 2009）](https:\u002F\u002Fcormack.uwaterloo.ca\u002Fcormacksigir09-rrf.pdf)\n- [OpenAI — File search](https:\u002F\u002Fdevelopers.openai.com\u002Fapi\u002Fdocs\u002Fguides\u002Ftools-file-search)\n- [Anthropic — Contextual Retrieval](https:\u002F\u002Fwww.anthropic.com\u002Fengineering\u002Fcontextual-retrieval)",[20,25,29,33,37,42,46],{"title":21,"url":22,"type":23,"note":24,"checked":8},"pgvector — Indexes, filtering and iterative scans","https:\u002F\u002Fgithub.com\u002Fpgvector\u002Fpgvector","官方文档","索引类型、过滤与迭代扫描的官方实现说明；具体性能受数据与配置影响。",{"title":26,"url":27,"type":23,"note":28,"checked":8},"Qdrant — Hybrid queries","https:\u002F\u002Fqdrant.tech\u002Fdocumentation\u002Fsearch\u002Fhybrid-queries\u002F","混合查询与融合接口；不能据此推导跨引擎统一性能排名。",{"title":30,"url":31,"type":23,"note":32,"checked":8},"Milvus — Official project overview","https:\u002F\u002Fgithub.com\u002Fmilvus-io\u002Fmilvus","官方项目的检索与部署能力概览；选型仍需工作负载验证。",{"title":34,"url":35,"type":23,"note":36,"checked":8},"FAISS — Documentation","https:\u002F\u002Ffaiss.ai\u002F","向量相似度搜索与索引算法；不提供业务权限或完整持久服务保证。",{"title":38,"url":39,"type":40,"note":41,"checked":8},"RRF 原始论文（SIGIR 2009）","https:\u002F\u002Fcormack.uwaterloo.ca\u002Fcormacksigir09-rrf.pdf","研究论文","RRF 的原始方法与实验；融合参数及收益有被测数据边界。",{"title":43,"url":44,"type":23,"note":45,"checked":8},"OpenAI — File search","https:\u002F\u002Fdevelopers.openai.com\u002Fapi\u002Fdocs\u002Fguides\u002Ftools-file-search","托管语义与关键词检索、文件属性过滤和结果返回能力；资料权限、质量与验收由应用治理。",{"title":47,"url":48,"type":49,"note":50,"checked":8},"Anthropic — Contextual Retrieval","https:\u002F\u002Fwww.anthropic.com\u002Fengineering\u002Fcontextual-retrieval","工程报告","为块补充定位上下文并组合向量、BM25 与重排的实验；检索失败率下降不等于答案正确率同比提高。",{"slug":52,"title":53,"date":54,"updated":8,"tags":55,"summary":59,"draft":15,"lang":16,"minutes":60},"rag-03-rerank-citation-eval","RAG 全链路（三）：重排、引用溯源与效果评估","2026-02-17",[10,56,57,58],"Rerank","评测","可信","按 token 预算选择重排后的证据，区分引用存在、引用支撑与事实正确；分层评估检索、生成和业务结果，并处理资料冲突、缺证据与超时。",5,{"slug":62,"title":63,"date":64,"updated":8,"tags":65,"summary":68,"draft":15,"lang":16,"minutes":60},"rag-01-chunking","RAG 全链路（一）：文档切分——让检索结果保留完整语境","2025-12-16",[10,12,66,67],"Embedding","LLM","从解析和元数据开始，比较固定窗口、结构化切分、父子块与上下文补注；用一份故障手册实例解释检索粒度、供给粒度和版本追踪。",{"type":70,"children":71},"root",[72,87,94,99,104,109,115,220,225,231,268,288,293,358,363,369,374,379,389,413,426,435,444,449,454,535,540,559,564,599,604,616,622,633,638,656],{"type":73,"tag":74,"props":75,"children":76},"element","p",{},[77,85],{"type":73,"tag":78,"props":79,"children":81},"a",{"href":80},"\u002Farticles\u002Frag-01-chunking",[82],{"type":83,"value":84},"text","上一篇",{"type":83,"value":86},"准备了可追溯的文档块。这一篇解决“如何把正确的块找出来”。向量检索适合语义表达，词法检索适合明确词项；选库则是吞吐、过滤、更新和运维的综合决策，不能只拿向量条数划线。",{"type":73,"tag":88,"props":89,"children":91},"h2",{"id":90},"embedding-选型要覆盖真实查询",[92],{"type":83,"value":93},"Embedding 选型要覆盖真实查询",{"type":73,"tag":74,"props":95,"children":96},{},[97],{"type":83,"value":98},"先从公开检索榜单筛候选，再用自己的中文、专名、数字和跨段问题验证。维度更高不自动更准确，比较质量之外还要看编码延迟、批量入库成本、查询吞吐和版本稳定性。",{"type":73,"tag":74,"props":100,"children":101},{},[102],{"type":83,"value":103},"文档和查询必须使用匹配的模型版本、预处理与向量空间。有些模型需要不同的 query\u002Fdocument 前缀；只有明确支持降维的模型才能按其规则截断，不能任意裁掉向量后半段。",{"type":73,"tag":74,"props":105,"children":106},{},[107],{"type":83,"value":108},"换模型通常需要重嵌入并重建相应索引：保留旧索引、后台构建新索引、影子比较、灰度切换，最后清理旧版本。不要把新查询向量拿去查旧模型索引。",{"type":73,"tag":88,"props":110,"children":112},{"id":111},"向量库按约束选不按亿级门槛选",[113],{"type":83,"value":114},"向量库：按约束选，不按“亿级门槛”选",{"type":73,"tag":116,"props":117,"children":118},"table",{},[119,143],{"type":73,"tag":120,"props":121,"children":122},"thead",{},[123],{"type":73,"tag":124,"props":125,"children":126},"tr",{},[127,133,138],{"type":73,"tag":128,"props":129,"children":130},"th",{},[131],{"type":83,"value":132},"方案",{"type":73,"tag":128,"props":134,"children":135},{},[136],{"type":83,"value":137},"适合的起点",{"type":73,"tag":128,"props":139,"children":140},{},[141],{"type":83,"value":142},"要实际验证",{"type":73,"tag":144,"props":145,"children":146},"tbody",{},[147,166,184,202],{"type":73,"tag":124,"props":148,"children":149},{},[150,156,161],{"type":73,"tag":151,"props":152,"children":153},"td",{},[154],{"type":83,"value":155},"PostgreSQL + pgvector",{"type":73,"tag":151,"props":157,"children":158},{},[159],{"type":83,"value":160},"已有 PG，需要事务、联表与统一备份",{"type":73,"tag":151,"props":162,"children":163},{},[164],{"type":83,"value":165},"过滤后召回、索引内存、业务负载竞争",{"type":73,"tag":124,"props":167,"children":168},{},[169,174,179],{"type":73,"tag":151,"props":170,"children":171},{},[172],{"type":83,"value":173},"Qdrant \u002F Milvus 等引擎",{"type":73,"tag":151,"props":175,"children":176},{},[177],{"type":83,"value":178},"专用向量服务、扩展与过滤需求",{"type":73,"tag":151,"props":180,"children":181},{},[182],{"type":83,"value":183},"部署复杂度、更新、租户隔离、恢复",{"type":73,"tag":124,"props":185,"children":186},{},[187,192,197],{"type":73,"tag":151,"props":188,"children":189},{},[190],{"type":83,"value":191},"Chroma",{"type":73,"tag":151,"props":193,"children":194},{},[195],{"type":83,"value":196},"本地开发及其支持的服务化场景",{"type":73,"tag":151,"props":198,"children":199},{},[200],{"type":83,"value":201},"使用版本的持久化、运维与伸缩能力",{"type":73,"tag":124,"props":203,"children":204},{},[205,210,215],{"type":73,"tag":151,"props":206,"children":207},{},[208],{"type":83,"value":209},"FAISS",{"type":73,"tag":151,"props":211,"children":212},{},[213],{"type":83,"value":214},"自建进程内检索、离线实验",{"type":73,"tag":151,"props":216,"children":217},{},[218],{"type":83,"value":219},"它是索引库，API、持久化、权限要自己补",{"type":73,"tag":74,"props":221,"children":222},{},[223],{"type":83,"value":224},"pgvector 是已有 PostgreSQL 团队的合理候选，但较小规模也可能因高 QPS、强过滤或独立扩容而选专用引擎；专用引擎也不只服务亿级数据。做一次包含目标峰值、增删改与备份恢复的压测，比照抄规模规则更有用。",{"type":73,"tag":88,"props":226,"children":228},{"id":227},"hnsw近似检索的召回是哪一种",[229],{"type":83,"value":230},"HNSW：近似检索的“召回”是哪一种",{"type":73,"tag":74,"props":232,"children":233},{},[234,236,243,245,251,253,259,261],{"type":83,"value":235},"HNSW 是近似最近邻索引，用较少的候选探索换速度。以 pgvector 为例，",{"type":73,"tag":237,"props":238,"children":240},"code",{"className":239},[],[241],{"type":83,"value":242},"ef_search",{"type":83,"value":244}," 影响查询探索范围，",{"type":73,"tag":237,"props":246,"children":248},{"className":247},[],[249],{"type":83,"value":250},"m",{"type":83,"value":252}," 和 ",{"type":73,"tag":237,"props":254,"children":256},{"className":255},[],[257],{"type":83,"value":258},"ef_construction",{"type":83,"value":260}," 影响图构建；调大通常付出延迟、内存或构建成本，不能只看一个质量分。",{"type":73,"tag":78,"props":262,"children":265},{"href":22,"rel":263},[264],"nofollow",[266],{"type":83,"value":267},"pgvector 文档",{"type":73,"tag":74,"props":269,"children":270},{},[271,273,279,281,286],{"type":83,"value":272},"这里有两个不同指标：",{"type":73,"tag":274,"props":275,"children":276},"strong",{},[277],{"type":83,"value":278},"ANN recall",{"type":83,"value":280}," 对照精确向量搜索，看近似索引找回多少真实近邻；",{"type":73,"tag":274,"props":282,"children":283},{},[284],{"type":83,"value":285},"业务证据 Recall@k",{"type":83,"value":287}," 对照人工标注，看答案所需证据找回多少。精确近邻也可能不是有用证据，二者不能混用同一个“95%”验收线。",{"type":73,"tag":74,"props":289,"children":290},{},[291],{"type":83,"value":292},"权限过滤是必须项，但“不加思考地写一个 WHERE”不保证候选充足。pgvector 的近似索引查询可能先取候选再过滤，导致结果少于 k；迭代扫描、提高探索范围、分区或部分索引可改善。稀疏租户和严格过滤条件应单独压测。",{"type":73,"tag":294,"props":295,"children":300},"pre",{"className":296,"code":297,"language":298,"meta":299,"style":299},"language-sql shiki shiki-themes vitesse-light vitesse-light","-- 示意：距离算子必须与索引类型一致；真实权限由服务端给定。\nSELECT chunk_id, content\nFROM chunks\nWHERE tenant_id = $1 AND source_revision = $2\nORDER BY embedding \u003C=> $3::vector\nLIMIT $4;\n","sql","",[301],{"type":73,"tag":237,"props":302,"children":303},{"__ignoreMap":299},[304,315,324,333,342,350],{"type":73,"tag":305,"props":306,"children":309},"span",{"class":307,"line":308},"line",1,[310],{"type":73,"tag":305,"props":311,"children":312},{},[313],{"type":83,"value":314},"-- 示意：距离算子必须与索引类型一致；真实权限由服务端给定。\n",{"type":73,"tag":305,"props":316,"children":318},{"class":307,"line":317},2,[319],{"type":73,"tag":305,"props":320,"children":321},{},[322],{"type":83,"value":323},"SELECT chunk_id, content\n",{"type":73,"tag":305,"props":325,"children":327},{"class":307,"line":326},3,[328],{"type":73,"tag":305,"props":329,"children":330},{},[331],{"type":83,"value":332},"FROM chunks\n",{"type":73,"tag":305,"props":334,"children":336},{"class":307,"line":335},4,[337],{"type":73,"tag":305,"props":338,"children":339},{},[340],{"type":83,"value":341},"WHERE tenant_id = $1 AND source_revision = $2\n",{"type":73,"tag":305,"props":343,"children":344},{"class":307,"line":60},[345],{"type":73,"tag":305,"props":346,"children":347},{},[348],{"type":83,"value":349},"ORDER BY embedding \u003C=> $3::vector\n",{"type":73,"tag":305,"props":351,"children":352},{"class":307,"line":17},[353],{"type":73,"tag":305,"props":354,"children":355},{},[356],{"type":83,"value":357},"LIMIT $4;\n",{"type":73,"tag":74,"props":359,"children":360},{},[361],{"type":83,"value":362},"租户 ID 不能由模型任意选择。数据库行级安全或服务层授权要覆盖向量、词法、重排输入与引用展示。未授权文档不能先喂给模型再从最终回答删除。",{"type":73,"tag":88,"props":364,"children":366},{"id":365},"混合检索与-rrf融合排名别直接加原始分数",[367],{"type":83,"value":368},"混合检索与 RRF：融合排名，别直接加原始分数",{"type":73,"tag":74,"props":370,"children":371},{},[372],{"type":83,"value":373},"向量检索能找到“意思相近”的段落；BM25 根据词频和文档长度排序，适合错误码、题号与明确专名，但中文分词和符号规范化同样重要。纯 BM25 也未必保证精确命中。",{"type":73,"tag":74,"props":375,"children":376},{},[377],{"type":83,"value":378},"两路分数尺度不同，直接相加可能让一方压倒另一方。RRF（Reciprocal Rank Fusion）按排名融合：",{"type":73,"tag":294,"props":380,"children":384},{"className":381,"code":383,"language":83,"meta":299},[382],"language-text","RRF(d) = Σ w_j \u002F (c + rank_j(d))\n",[385],{"type":73,"tag":237,"props":386,"children":387},{"__ignoreMap":299},[388],{"type":83,"value":383},{"type":73,"tag":74,"props":390,"children":391},{},[392,398,400,406,408],{"type":73,"tag":237,"props":393,"children":395},{"className":394},[],[396],{"type":83,"value":397},"c",{"type":83,"value":399}," 是平滑常数，常见实验起点为 60；",{"type":73,"tag":237,"props":401,"children":403},{"className":402},[],[404],{"type":83,"value":405},"w_j",{"type":83,"value":407}," 是通路权重。未出现在某一路的文档，该路贡献为零。",{"type":73,"tag":274,"props":409,"children":410},{},[411],{"type":83,"value":412},"输出 top-k 的 k 与公式里的 c 是两个参数。",{"type":73,"tag":74,"props":414,"children":415},{},[416,418,424],{"type":83,"value":417},"例如文档 A 在两路分别排第 1 和第 10，B 分别第 3 和第 2，等权且 ",{"type":73,"tag":237,"props":419,"children":421},{"className":420},[],[422],{"type":83,"value":423},"c=60",{"type":83,"value":425},"：A 约 0.03068，B 约 0.03200，B 排在前面。融合后按 chunk 或父文档去重，再进入重排。",{"type":73,"tag":74,"props":427,"children":428},{},[429],{"type":73,"tag":430,"props":431,"children":434},"img",{"alt":432,"src":433},"混合检索流程：可信权限过滤、两路召回、排名融合、去重与评测","\u002Fdiagrams\u002Frag-retrieval.svg",[],{"type":73,"tag":74,"props":436,"children":437},{},[438],{"type":73,"tag":439,"props":440,"children":441},"em",{},[442],{"type":83,"value":443},"图 1 · 两路都要受相同授权边界约束，融合质量由真实查询验证。",{"type":73,"tag":74,"props":445,"children":446},{},[447],{"type":83,"value":448},"混合检索是值得测试的常用基线，不是所有语料必须启用的定律。精确题号可先走结构化查询；语义开放问题才更依赖向量。Embedding 服务失败时词法可提供部分能力，需明确这个降级的质量范围。",{"type":73,"tag":88,"props":450,"children":452},{"id":451},"三个指标与一个常见误读",[453],{"type":83,"value":451},{"type":73,"tag":116,"props":455,"children":456},{},[457,478],{"type":73,"tag":120,"props":458,"children":459},{},[460],{"type":73,"tag":124,"props":461,"children":462},{},[463,468,473],{"type":73,"tag":128,"props":464,"children":465},{},[466],{"type":83,"value":467},"指标",{"type":73,"tag":128,"props":469,"children":470},{},[471],{"type":83,"value":472},"衡量什么",{"type":73,"tag":128,"props":474,"children":475},{},[476],{"type":83,"value":477},"局限",{"type":73,"tag":144,"props":479,"children":480},{},[481,499,517],{"type":73,"tag":124,"props":482,"children":483},{},[484,489,494],{"type":73,"tag":151,"props":485,"children":486},{},[487],{"type":83,"value":488},"Recall@k",{"type":73,"tag":151,"props":490,"children":491},{},[492],{"type":83,"value":493},"已标注相关证据中有多少进入前 k",{"type":73,"tag":151,"props":495,"children":496},{},[497],{"type":83,"value":498},"依赖证据标注完整性",{"type":73,"tag":124,"props":500,"children":501},{},[502,507,512],{"type":73,"tag":151,"props":503,"children":504},{},[505],{"type":83,"value":506},"MRR",{"type":73,"tag":151,"props":508,"children":509},{},[510],{"type":83,"value":511},"第一条相关结果的倒数排名平均值",{"type":73,"tag":151,"props":513,"children":514},{},[515],{"type":83,"value":516},"不衡量其余证据是否齐全",{"type":73,"tag":124,"props":518,"children":519},{},[520,525,530],{"type":73,"tag":151,"props":521,"children":522},{},[523],{"type":83,"value":524},"nDCG@k",{"type":73,"tag":151,"props":526,"children":527},{},[528],{"type":83,"value":529},"有等级相关性时的排序质量",{"type":73,"tag":151,"props":531,"children":532},{},[533],{"type":83,"value":534},"依赖分级标注规则",{"type":73,"tag":74,"props":536,"children":537},{},[538],{"type":83,"value":539},"若标注有四条必要证据，前十找回三条，Recall@10 为 0.75；第一条相关证据排第二，该查询 reciprocal rank 为 0.5。多跳问题可能三条都“相关”却仍缺最后一条决定性证据，应补测证据完整率和最终答案正确率。",{"type":73,"tag":74,"props":541,"children":542},{},[543,545,550,552,557],{"type":83,"value":544},"Anthropic 的 35% → 49% 指的是",{"type":73,"tag":274,"props":546,"children":547},{},[548],{"type":83,"value":549},"相对失败率降幅",{"type":83,"value":551},"增加了 14 个百分点，不是业务召回率直接增加 14 个百分点。实验数据及限制见 ",{"type":73,"tag":78,"props":553,"children":554},{"href":80},[555],{"type":83,"value":556},"切分篇",{"type":83,"value":558},"。",{"type":73,"tag":88,"props":560,"children":562},{"id":561},"运维与调优顺序",[563],{"type":83,"value":561},{"type":73,"tag":565,"props":566,"children":567},"ol",{},[568,574,579,584,589,594],{"type":73,"tag":569,"props":570,"children":571},"li",{},[572],{"type":83,"value":573},"先建可追溯评测集，分中文、符号、强过滤和多跳查询。",{"type":73,"tag":569,"props":575,"children":576},{},[577],{"type":83,"value":578},"对照精确搜索测 ANN recall，再测业务证据召回。",{"type":73,"tag":569,"props":580,"children":581},{},[582],{"type":83,"value":583},"比较纯词法、纯向量和融合，保持语料与权限一致。",{"type":73,"tag":569,"props":585,"children":586},{},[587],{"type":83,"value":588},"调探索范围和候选数，联合看 p95、成本与质量。",{"type":73,"tag":569,"props":590,"children":591},{},[592],{"type":83,"value":593},"内容更新保持版本一致，删除验证所有检索路径不可见。",{"type":73,"tag":569,"props":595,"children":596},{},[597],{"type":83,"value":598},"内存成为瓶颈时才比较量化，并用原向量精排验证损失。",{"type":73,"tag":74,"props":600,"children":601},{},[602],{"type":83,"value":603},"向量库内部的删除与压缩机制各不相同，不能把“墓碑加批量重建”当作所有 HNSW 系统的统一运维命令。恢复演练和容量余量也应进入选型结论。",{"type":73,"tag":74,"props":605,"children":606},{},[607,609,615],{"type":83,"value":608},"下一篇将候选转成可验证答案：",{"type":73,"tag":78,"props":610,"children":612},{"href":611},"\u002Farticles\u002Frag-03-rerank-citation-eval",[613],{"type":83,"value":614},"重排、引用和评估",{"type":83,"value":558},{"type":73,"tag":88,"props":617,"children":619},{"id":618},"openai-托管检索与自建链路比较可控范围",[620],{"type":83,"value":621},"OpenAI 托管检索与自建链路：比较可控范围",{"type":73,"tag":74,"props":623,"children":624},{},[625,631],{"type":73,"tag":78,"props":626,"children":628},{"href":44,"rel":627},[264],[629],{"type":83,"value":630},"OpenAI File search",{"type":83,"value":632},"提供托管的语义与关键词检索，并支持文件属性过滤和检索结果返回选项。它减少自行执行检索工具的工作，但知识源质量、访问范围与答案验收仍需要应用负责。",{"type":73,"tag":74,"props":634,"children":635},{},[636],{"type":83,"value":637},"与自建 pgvector \u002F Milvus \u002F Chroma 链路比较时，固定同一授权语料与问题，记录解析覆盖、召回、引用支撑、更新\u002F删除可见性、p95、费用和运维成本。托管与自建的可配置项不同，不能假定切分、重排和过滤具有完全相同的行为；若关键实验参数无法固定，应把差异作为比较局限。",{"type":73,"tag":74,"props":639,"children":640},{},[641,643,649,651,655],{"type":83,"value":642},"Anthropic 的 ",{"type":73,"tag":78,"props":644,"children":646},{"href":48,"rel":645},[264],[647],{"type":83,"value":648},"Contextual Retrieval",{"type":83,"value":650},"是为检索块补充定位上下文的方法与实验，不是一个与 OpenAI File search 完全等价的托管产品。实验结果与支撑范围见",{"type":73,"tag":78,"props":652,"children":653},{"href":80},[654],{"type":83,"value":556},{"type":83,"value":558},{"type":73,"tag":88,"props":657,"children":659},{"id":658},"参考资料",[660],{"type":83,"value":658},[662,663,664,665,666,667,668,669],{"id":90,"depth":317,"text":93},{"id":111,"depth":317,"text":114},{"id":227,"depth":317,"text":230},{"id":365,"depth":317,"text":368},{"id":451,"depth":317,"text":451},{"id":561,"depth":317,"text":561},{"id":618,"depth":317,"text":621},{"id":658,"depth":317,"text":658},1792400815607]