2.2 检索模块:从一句话到五个文本块


2.2 检索模块:从一句话到五个文本块

本节摘要:检索模块负责从知识库中找到与用户查询最相关的信息,内部由四个部件构成——数据索引、查询编码、相似度搜索、结果排序与过滤。本节拆解每个部件的技术选型(嵌入模型、索引结构、相似度度量、检索策略),并给出针对检索质量的五条优化路径,为第 3 章的高级检索技术铺路。读完你应当能解释一次检索调用内部发生的全部事情。

学习目标

阅读完本节,你应当能够:

  1. 说出检索模块四个部件的职责与数据流向;
  2. 区分关键词检索与语义检索的原理差异和适用场景;
  3. 解释三种相似度度量(余弦、点积、欧氏距离)的直觉含义;
  4. 描述 Top-K 检索、阈值检索、多路检索三种策略的取舍;
  5. 列出检索模块的五条优化路径。

一、检索的生死一线

RAG 系统里有一个残酷的事实:生成模型只对"拿到什么"负责,不对"该拿什么"负责。检索器返回的五个文本块,就是模型能看到的世界全部。找对了,模型大概率答好;找错了,再强的模型也只能基于错误材料作答——甚至答得越流畅越有迷惑性。

所以值得把检索这个动作放到显微镜下看。用户敲下一句"退款多久到账",到系统返回五个文本块之间,发生了什么?

二、四个部件的接力

部件一:数据索引

把知识库的文本块组织成可快速检索的结构。关键词路线用倒排索引(词到文档的映射),语义路线用向量索引。向量索引普遍采用近似最近邻搜索——不追求绝对精确的最近邻,用可控的精度损失换取数量级的速度提升,主流实现有分层可导航小世界图(HNSW)等算法。数据规模小的时候,精确检索的开销完全可接受,不必急着上近似索引。

部件二:查询编码

把用户的查询转成与索引数据同一语义空间的向量。注意"同一空间"四个字:查询向量和文档向量必须出自同一个嵌入模型,混用两个模型的向量,相似度计算毫无意义——这是新手最常见的翻车点之一。

部件三:相似度搜索

在索引中寻找与查询向量最近的若干向量。三种度量方式:余弦相似度衡量向量方向的接近程度,对文本语义比较最常用;点积同时考虑方向与大小,在向量已归一化时与余弦等价;欧氏距离衡量直线距离,值越小越相似。选哪个主要看嵌入模型的训练约定——模型按哪种度量训练,检索就用哪种,别自己发挥。

部件四:结果排序与过滤

搜索返回的初步结果要再过一道筛:按相关性分数排序,结合元数据(来源、时间、部门)过滤,去掉低于质量阈值的块,最终交给生成模块。

三、两条技术路线:关键词与语义

关键词检索基于词汇的精确匹配,BM25、TF-IDF 是代表算法:查询里出现"退款",就找包含"退款"的文档。简单、快、可解释,对专业术语和编号(产品型号、法条编号)的精确匹配无可替代。但它不懂"退货的钱多久回来"和"退款周期"是一回事。

语义检索用向量相似度捕捉语义关系:查询和文档都变成向量,意思相近则向量相近,用词不同也能匹配上。它对拼写错误有一定容错,能理解换个说法的同一意图。代价是依赖嵌入模型的质量,而且对"字面必须精确"的场景(型号、编号)反而可能失手——向量把 ZL-2001 和 ZL-2002 看得很近,但它们是两个产品。

维度 关键词检索 语义检索
原理 词汇精确匹配 向量相似度
换说法的查询 匹配失败 正常命中
型号编号类查询 精确可靠 可能混淆
可解释性 强(命中词可见) 弱(分数难解读)
计算开销

我们实际的立场:这两者不是竞争关系。生产系统里语义检索打底、关键词检索补精确匹配,是第 3 章混合检索的伏笔,这里先按下不表。

四、三种检索策略

Top-K 检索:返回与查询最相关的 K 个文本块,K 常取三到十。简单直接,问题是 K 之外的皆不可见,K 之内鱼龙混杂。

基于阈值的检索:返回相似度高于某个阈值的块。数量弹性——相关问题多就多返回,无相关就不返回。阈值标定是个持续调整的活,且不同嵌入模型的分数分布不同,阈值不能照搬。

多路检索:同时跑多种检索方法(如关键词加语义),融合各自结果。召回率提升明显,代价是延迟与融合逻辑的复杂度。

K 的取值是个典型的工程权衡:K 大,信息全但噪声多、提示词变长、成本上升;K 小,上下文干净但可能漏掉关键证据。起步取三到五,靠第 3 章的评估指标驱动调整,比拍脑袋可靠。

五、五条优化路径

朴素检索模块跑通后,性能提升有五条公认路径,这里列出地图,细节留给第 3 章:

  1. 优化分块策略——调整块大小与切分边界,保证块的语义完整;
  2. 更换或微调嵌入模型——选与业务领域匹配的模型,领域术语密集时考虑微调;
  3. 优化索引结构——数据量增长后调整索引类型与参数;
  4. 查询重写——用模型把口语化、残缺的查询改写成适合检索的形态;
  5. 重排序——用更精细的交叉编码器模型对初筛结果精排,把最相关的块顶到最前。

六、检索质量的诊断与两个进阶话题

五条优化路径之外,再补两个进阶话题和一个诊断方法,它们决定你能不能把检索质量"经营"起来。

诊断方法:检索日志。 给每次检索记三样东西——原始查询、返回的文本块编号、各块的相似度分数。有了这份数据,"检索不准"就从感觉变成案例:分数整体偏低说明语义匹配失败(该查嵌入模型),分数很高但不相关说明库里缺对的内容(该查知识库覆盖),分数正常但正确块排第六(该上重排序)。三种病灶三种药,日志是分诊台。

进阶话题一:嵌入模型的选型与领域适配。 通用嵌入模型在公开语料上表现出色,换到术语密集的领域可能水土不服——"主板"在电子语境和股市语境的向量应该不同,通用模型未必分得开。选型时用自己领域的评估问题集跑分,而不是看公开榜单排名。领域适配的阶梯:先用通用模型,不足时换领域预训练的模型,仍不足才考虑用自己的语料微调——微调需要构造"查询与正确文档"的配对数据,成本不低,放在最后。

进阶话题二:多路召回的融合细节。 第 3 章会展开混合检索,这里先埋一个工程伏笔:多路召回的结果合并不是简单去重。同一路召回内的排序信息、不同路的分数差异、每个块的来源,都值得在合并时保留——它们是后续重排序和引用展示的原料。设计数据结构时预留这些字段,后面能省掉返工。

进阶话题三:索引的维护成本。 数据规模增长后,向量索引需要重建或增量更新,重建期间检索质量与延迟都会波动。两个应对:其一,蓝绿索引——新索引建好后原子切换,旧索引保留一段时间兜底;其二,增量插入为主、定期全量重建为辅,把重建安排在流量低谷。索引维护是检索模块的"隐性账单",容量规划时必须算进去,否则系统会在某次数据翻倍后突然劣化,而团队还以为是模型退化了。

七、检索效果的两条基准线

结束前给两个经验基准,供你校准预期。

基准一:语义检索不是万能钥匙。 换说法的查询它强,精确指代的查询它弱。一个值得记住的实测规律:知识库里存在"只差一个字符的专有名词"(型号、编号、药名)时,纯语义检索的混淆率会明显上升——向量眼里它们几乎一样。所以任何语料含大量专有标识的系统,混合检索不是可选项,是必选项。

基准二:检索结果的"温度"要看分数分布。 健康的检索系统,命中块的相似度分数与未命中块之间有一段清晰间隔;间隔消失(所有块分数挤在一起)意味着嵌入模型对你的语料区分度不足,该换模型或做领域微调了。把分数分布画成监控图,是成本几乎为零的健康检查,很多检索劣化问题在用户投诉之前就能从这张图上看出苗头。

把检索模块的"经营"要点串成一句话:日志分诊、基准校准、坏案例集驱动改进——检索质量不是一个配置参数,而是一个需要持续经营的运行指标。抱着"调一次参数管一年"心态的团队,检索模块会在半年内静悄悄地失守,等用户流失数据出来时,早就错过了低成本修复的窗口期。

⚠️ 常见坑:查询和文档使用不同的嵌入模型,或者更新了文档侧模型却忘了更新查询侧。相似度全部失真,症状是"检索结果看起来随机",排查半天发现是向量空间对不上。

💡 调试利器:建立一个"坏案例集",收集检索不命中的真实查询,人工标注应该命中的文本块。任何优化(换模型、调参数、加策略)都在这个集合上跑分。没有它,检索优化就是玄学。

本节要点回顾

  • 四部件接力:数据索引、查询编码、相似度搜索、排序过滤;查询与文档必须共用同一嵌入模型。
  • 三 种度量:余弦看方向、点积看方向加大小、欧氏距离看绝对距离,按嵌入模型约定选。
  • 路线互补:关键词擅长精确匹配与可解释,语义擅长换说法与容错,生产环境常并行使用。
  • 策略三选:Top-K 简单主流,阈值弹性但难标定,多路召回高但复杂;K 从三到五起步、评估驱动调整。
  • 优化五路:分块、嵌入模型、索引、查询重写、重排序——第 3 章将展开后两者。

文本块到手,接力棒交给最后一棒:生成模块如何把这些资料变成一段值得信赖的回答。详见第 3 节。


作者与出处
原作者: 灏天文库
来源:灏天文库
整理: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U