← 洞见最新技术展示

混合检索 + 重排:企业 RAG 准确率的关键跃迁

泛友数字2026/10/10 11:45161 阅读
混合检索 + 重排:企业 RAG 准确率的关键跃迁

企业把制度丢进向量库,前几周常有一个错觉:闲聊式的问题答得不错,一带编号的问题就开始胡编。例如「差旅标准第 3.2 条住宿上限」「报警代码 E-17」「物料 10.04.221」。这些字符串对业务是精确键,对只按语义相似度召回的向量检索却很不友好——模型会找一段「看起来也在讲住宿标准」的话,然后凭语感填一个数字。

准确率的第一跳,通常不是换成参数更大的模型,而是把召回从「只有向量」改成「关键词加向量,再重排」。混合检索解决找得全,重排解决把真正对上编号的片段排到前面。两步都做了,生成模型才有机会少编。

检索要同时保住编号和语义
条款号和型号需要关键词召回,语义问题需要向量召回。

向量单独失败时的典型症状

症状一:答案流畅,但条款号是邻近条款。用户问 3.2,系统引用 3.1 或 3.3,数字还很确信。症状二:专有件号被换成「同类产品」。症状三:问题里的否定被忽略,「不适用外包人员」被答成外包人员的标准。这三种都不是把温度调低就能稳定修好的,因为正确片段根本没进上下文,模型只能在错误材料上写作。

关键词检索(例如 BM25)擅长钉住少见的编号、英文错误码和产品型号。向量检索擅长「住宿能不能报晚到」这种换了说法的问法。两者合并候选,比二选一更接近企业文档的真实问法分布。只保留向量,是把文档库当成了百科问答;企业文档里有一半问题其实是在查表。

重排在排什么

第一阶段召回可以多拿一些,例如关键词 20 条、向量 20 条,合并去重后还剩三十条左右。这个数量直接塞给生成模型,又贵又吵,模型会抓到错误段落里的数字。重排模型的工作是:给定问题和每个片段,打一个「是否真的在回答这个问题」的分,只留前 4 到 8 段。

重排特别能压下去的,是主题相关但条件不符的段落。例如问题含「一线城市、总监级」,片段在讲一线城市但对象是普通员工。向量觉得很像,重排有机会把职级对上的片段抬上来。若重排之后首位片段仍不包含问题中的编号,宁可拒答,也不要让生成模型「补充完整」。

召回片段需要先排序再生成
三十个片段直接生成,模型容易抓错数字;重排后再留下少数几段。
  • 关键词通道:条款号、件号、错误码、产品型号,原样进索引
  • 向量通道:口语问法、同义转述
  • 合并:按文档编号去重,保留命中通道以便排查
  • 重排:只留前几段;编号对不上则拒答
  • 生成:只能依据留下的片段,禁止用常识补数字

延迟和成本怎么取舍

混合检索加一次重排,会比单次向量多几十到几百毫秒,视片段长度和部署位置而定。办事问答里,用户能接受一秒级,不能接受一个错误的报销上限。把重排放在「问题里出现数字、编号或型号」时强制执行,闲聊式导航问题可以走更短路径。这种分流比全量上最大重排模型省钱,也把延迟花在会出事的问题上。

索引侧还有一个容易漏的工程点:切块时不要把编号和正文切散。标题、条款号必须出现在每个块的开头,哪怕重复。否则关键词命中了号,块里却只有半句话,重排和生成都会失败。表格要保留表头。这是文档处理问题,不是模型问题,但它决定混合检索有没有原料。

怎样证明这跳是真的

准备两组题。一组是口语题,一组是带编号的精确题,各不少于 30 道,答案能指向唯一段落。先只开向量,记下精确题的命中率;再开关键词;再加重排。三组数放在同一张表里。精确题命中率没有明显上升,就先检查切块和编号是否被索引,而不是继续换生成模型。口语题若在加重排后下降,说明重排把解释性段落压得太狠,需要调保留条数,而不是放弃混合。

上线后把「拒答」单独统计。拒答变多不一定是退步,可能是以前在编。抽检拒答题:若正确段落其实在库里,说明召回仍漏;若库里确实没有,拒答就是对的。把这两类分开,优化才有方向。

用分组题集比较检索策略
口语题和精确题要分开计分,否则平均分会掩盖编号错误。

上线前可以用一下午做完的对照

从制度或手册里挑三十个带编号的问题,再挑三十个口语问题,不要用编写人自己刚看过的那一页来出题,尽量让没参与切块的同事出。同一环境只改变召回策略:先向量,再向量加关键词,再加重量排。记录精确题首位是否含有那个编号,以及口语题要点是否还在。这张表就是该不该把混合检索当作默认路径的证据。

若关键词通道几乎没有命中,先别怀疑分词器玄学,先看编号在切块后的文本里是否还存在、是否被切成了「3」和「.2」两半、表格导出时是否丢了表头。这些是索引原料问题。原料不在,重排模型没有机会把正确行抬上来。

对照通过后,把「编号对不上就拒答」写成线上规则,并在日志里记下拒答原因是「未命中编号」还是「命中了但权限不够」。两种拒答的改法完全不同,混在一个「无法回答」里,下周的优化会改错地方。

生成阶段还要禁掉一种常见补丁:在提示词里写「若上下文不足,可结合常识回答」。这句会把混合检索刚挡住的错数字又放出来。常识可以用来组织句子,不能用来填金额、期限、件号和剂量。把禁令写进提示词的同时,用那三十道精确题做回归,任何一道出现上下文里不存在的数字,都视为本次发布失败。这样重排的收益才不会被最后一步写没。

企业文档有一半是在查表。向量负责听懂人话,关键词负责钉住编号,重排负责别把邻行的数字送进回答。

对比时把耗时一并记上。如果混合检索把精确题命中率抬上去了,但中位耗时超过用户愿意等的范围,再考虑对不含编号的口语题走短路径,而不是为了统一架构让所有问题都付同样的延迟。准确率要按题型买,延迟也要按题型花。

泛友在企业知识库里默认采用混合召回,并对带编号的问题强制重排和「对不上就拒答」。若你的助手经常在条款号上犯错,可以先拿 30 道精确题对比「仅向量」和「混合加重排」,通常比重训一版提示词更快看到差距。