向量检索找不到那个型号,混合检索和重排怎么搭

向量检索找不到那个型号,混合检索和重排怎么搭

用户问 SG-2048A 的替换型号是什么。知识库里明明有这份文档,向量检索返回的却是几篇讲产品线的综述。翻回去看,那份文档的标题里就有 SG-2048A,只是正文很短,讲得也不深。

这类漏检在业务知识库里天天发生,重灾区是型号、编号、人名、专有名词。语义向量擅长抓意思相近,对精确字串反而迟钝,因为 SG-2048A 和 SG-2048B 在向量空间里几乎是同一个点。

两路召回一起上

关键词检索补的正是这个短板。文档切块之后,除了建向量索引,也建一份倒排索引,用 BM25 这类算法做字面匹配。查询进来两路一起跑,一路按语义,一路按关键词,各自出一份候选列表。

两路的分数量纲不一样,不能直接相加。常用做法是倒数排名融合,不看分数看名次,某一路排第一的得分高,两路都排前面的累计更高。这个办法不用调权重,落地成本低,效果稳定。

权重还是想调的话,按查询类型分。用户输入里带型号、编号、引号,关键词那路权重提上去。输入是自然语言问句,语义那路为主。判断查询类型的规则可以写死几条,够用。

召回之后必须重排

两路召回各取二十条,合起来几十条,直接塞给模型太浪费。中间加一层重排,用一个更贵的模型对候选逐条打分,取前五。

重排模型的选择看预算。专门的交叉编码器精度好延迟低,适合量大;用大模型做重排,一条一条读,效果好但慢且贵,适合低并发高价值的场景。

重排的价值在长文档场景尤其明显。召回阶段为了不漏,切块切得碎,块和查询的语义相似度都差不多,谁更相关得看完整语义,这正是重排擅长的。

过滤要放在检索之前

时间范围、文档类型、权限归属这些条件,必须在检索前作为过滤条件下推,别检索完再筛。检索完再筛的问题是,前二十条里可能十九条都不满足条件,筛完只剩一条。

权限这点尤其要注意,不同用户能看的文档不同。过滤条件里必须带租户和权限范围,让检索层自己保证召回的都是有权限的内容,别指望后面再拦。

召回不足怎么办

检索结果的相关性分数都不高,说明知识库里可能真没有。这时候硬答最危险。

两种补救。一是查询改写,把用户的口语问题换成更适合检索的表述,或者拆成几个子问题分别检索。二是明确告知没找到,请用户补充信息。

任何时候都别让模型拿低相关度的内容硬编答案。宁可说没查到,也别给出一个看起来很像的错误结论。

调优看什么指标

召回率比准确率更值得盯。召回阶段的目标是不漏,反正后面有重排来筛。每次改动检索策略,用一批标注过的问题跑一遍,看目标文档有没有进前二十。

还有一个便宜的信号,用户点了重新生成或者追问换个说法,往往意味着这次检索没命中。把这个行为埋点统计,能找到一批需要补的文档。

结合系列

RAG 两篇讲的是整体流程和检索链路,这篇补上混合召回与重排这一层。上下文压缩篇的原则在这里同样适用,少而准的上下文比多而杂的更好,进去五条高相关的胜过二十条一般的。可观测性篇的 trace 要记录召回了哪些块、重排后留了哪些,否则调检索就是盲调。数据脱敏篇落到的那个出口,在这里也有对应,进模型的文档片段同样要过脱敏。

相关推荐
vailee2 小时前
42 万字符的工具输出压进 6,945 token:Agent 长会话的上下文治理实践
java·大数据·人工智能·prompt工程·rag·上下文管理
得物技术3 小时前
国产算力·昇腾 910C 大模型推理优化(下):源码修改与算子优化,提速30%|得物技术
架构·llm·github
code2cat4 小时前
【随笔】RAG语义缓存:问题很相似,答案就能直接复用吗
java·缓存·知识库·rag
lucas_AI5 小时前
OpenAI 半价放出 GPT-6.1 Terra:幻觉率从 88% 砍到 38%,agent 任务的账要重算了
llm
lucas_AI5 小时前
唯一答对的 Agent,被队友投票淘汰了
llm·agent
夏文强19 小时前
Rerank 与混合检索:怎么让 RAG 从「能用」变成「好用」
人工智能·大模型·向量数据库·rag·检索增强生成
AI技术新视界21 小时前
大模型推理延迟与吞吐量优化指南
人工智能·llm·推理引擎
惊讶的猫21 小时前
Query 改写
java·rag
code2cat1 天前
【随笔】RAG检索缓存:复用证据之前,先把权限和版本放进缓存键
java·人工智能·缓存·知识库·rag