混合检索怎么做:向量 + 关键词 + 重排的三段式
单靠向量检索总有些词查不准。本文讲清混合检索的原理:向量召回语义、关键词召回精确、重排模型提纯,并给出参数调优清单。
纯向量检索有个尴尬:用户搜”ERR_4021”,它给你返回一堆”看起来语义相近”的报错,却漏掉那篇精确提到这个错误码的文档。语义相似和精确匹配是两种能力,混合检索就是把它们合起来用。
一、两种检索,各有盲区
- 向量检索(语义):擅长找意思相近的内容,但对专有名词、代码、编号不精确。
- 关键词检索(BM25 等):精确匹配词面,但不懂同义、近义和语序。
一个漏语义,一个漏字面。单用哪个都会翻车。
二、混合检索的三段式
第一段:双路召回
同一查询同时跑两条路:
- 向量召回 Top-N(管语义)。
- 关键词召回 Top-N(管精确)。
两路各自捞一批候选,宁可多捞,别漏。
第二段:融合
把两路结果合并排序。常用做法:
- 加权分数融合:给两路打分加权求和,权重可调。
- 倒数排名融合(RRF):只看排名不看绝对分数,简单稳健,实践中很常用。
融合后得到一份”兼顾语义与字面”的候选集。
第三段:重排(Rerank)
用重排模型对候选集逐条重新打分。它比向量检索更”聪明”,能同时看查询和文档的细粒度交互,把真正相关的顶上来。
召回广、重排精——这是混合检索的核心口诀。
三、为什么重排这么关键
向量检索为了速度用了近似算法,牺牲了精度。重排模型慢但准,只对几十条候选打分,代价可控。加一层重排,往往能让 Top-3 命中率明显提升,是性价比最高的优化之一。
四、参数调优清单
- 两路各召回多少条(太少漏、太多慢)。
- 融合方式选 RRF 还是加权,权重多少。
- 重排保留前几条进上下文。
- 关键词检索做不做分词、大小写归一、同义扩展。
- 专有名词是否加自定义词典。
五、常见坑
- 只做向量:漏精确匹配,查编号、代码、人名时崩。
- 不加重排:候选里明明有对的结果,却排在了后面。
- 重排候选太多:延迟飙升,收益递减。
- 不做归一:两路分数尺度不同,直接相加会失真,RRF 可规避。
六、什么时候用
- 知识库里有大量专有名词、编号、代码。
- 用户查询既有”意思”需求也有”精确”需求。
- 对召回质量要求高,能接受一点额外延迟。
混合检索不是”更复杂的 RAG”,而是”更接近真实检索需求”的 RAG。 把语义、字面、精排三段接起来,检索质量会有质的提升。