混合检索权重如何配置?
未标记
考查重点:融合权重与分数校准。固定候选集试权重或 RRF,按问题类型观察召回/排序与最终答案;原始分数先校准,避免大分值一路支配
本题目录
参考答案
核心回答
先确定系统采用分数加权还是排名融合,再调权重。分数加权需要先统一分数方向并归一化,避免 BM25 与向量相似度的量纲差异主导排序;RRF 则根据各路名次融合,可以直接调整各路的排名贡献。
配置时可从语义、关键词等权开始,固定知识库、候选集和重排配置,用同一批问题比较几组权重。型号、错误码等精确查询重点看关键词结果是否被保留,同义改写问题重点看语义召回;同时检查正确证据的排名、最终答案和延迟。权重由分组评测决定,没有适用于所有知识库的固定比例。
两种融合方式的权重含义不同
分数加权可以写成:
$$ S(d)=\alpha,\hat{s}{\text{vector}}(d)+(1-\alpha),\hat{s}{\text{keyword}}(d) $$
其中,带帽分数表示经过归一化、且都以高分表示更相关的得分。这里约定 $\alpha$ 是向量权重,具体产品的参数方向要按其定义确认。归一化方法也影响结果,例如按当前候选集做 min-max 会保留分数差距,但候选集变化也会改变归一化值。阿里云混合搜索说明、Weaviate 融合策略。
加权 RRF 可以写成:
$$ S(d)=\sum_{i:,d\in L_i}\frac{w_i}{c+\operatorname{rank}_i(d)} $$
$L_i$ 是第 $i$ 路候选列表,$w_i$ 控制该路贡献,名次从 1 开始;未被某一路召回的文档不从该路获得贡献。$c$ 是平滑参数,与每路召回多少条是两个不同参数。RRF 无需将原始分数换到同一尺度,代价是忽略原始得分之间的差距。Azure RRF 机制。
两种方式里的权重都表示排序贡献,最终来自某一路的结果比例还取决于候选数量、名次以及两路重合情况。
实际怎样调
- 先保住候选覆盖。 分别测试向量、关键词和混合召回,确认正确证据是否进入候选池。若错误码被分词拆坏,或正文根本没有入库,应先处理这些问题;调整融合权重不能找回两路都没召回的证据。
- 固定条件比较权重。 在同一批已保存的候选列表上比较权重,例如向量权重取
0.3、0.5、0.7,观察精确匹配、语义问法与混合问题各自的命中和排序。这只是试验取点;选出方案后,还要在未参与调参的问题上复核,避免只适合少数样例。 - 再验证完整链路。 分开记录候选池的证据覆盖、融合后的排名、重排后的排名和最终引用。可用命中率看是否找对证据,用
MRR看第一个正确证据排得多靠前,再检查答案是否得到引用支撑,以及重排耗时和Token成本。
候选数、融合权重、过滤阈值和最终引用量各有职责:候选数影响召回覆盖,权重改变候选顺序,阈值按指定分数剔除低相关结果,引用量控制模型读取的内容。需要单独确认阈值作用于哪种分数,不能把向量相似度阈值直接当成融合分数或重排分数阈值。
FastGPTTypeScript
核心回答
FastGPT 的默认文本检索流程在选择 mixedRecall 后,同时召回向量结果与全文结果,通过 embeddingWeight 控制加权 RRF:向量一路用 $w$,全文一路用 $1-w$。它融合的是名次贡献,不是把原始向量分数与全文分数按比例相加。
调参时需要把两种权重分开:embeddingWeight 控制向量与全文的融合;rerankWeight 控制原召回排名与模型重排排名的融合。最低相关度 similarity 是否生效,还取决于搜索模式和重排是否成功;最终引用量由 limit 的 Token 预算控制。
双路召回与融合
countRecallLimit() 在混合模式中将向量和全文候选上限分别设为 80、60;多查询结果先在各自通道内合并,再分别截到该上限。这些是当前实现的候选配置,不是最终引用条数。候选数量、通道内合并。
服务函数中 embeddingWeight 缺省为 0.5。两路都有结果且参与融合时,datasetSearchResultConcat() 按数据块标识合并,累加:
$$ S(d)=\frac{w}{60+r_{\text{vector}}(d)}+\frac{1-w}{60+r_{\text{fulltext}}(d)} $$
其中,$r$ 表示该通道中从 1 开始的名次,只计入该数据块实际出现的通道。这里的 60 是源码中的平滑常数;若仅剩一路有效列表,函数直接返回该列表。权重传入、RRF 实现。
重排、阈值和引用上限
重排需要开启 usingReRank,并有有效查询和重排模型。文本候选去重后交给模型;rerankWeight 缺省为 0.5,模型重排结果与原融合结果再做一次加权 RRF。设为 1 时采用模型重排列表;重排失败则回退到原召回列表,并返回 usingReRank=false。重排启用条件、重排融合与失败回退。
最终先做内容去重,再处理阈值和引用预算。有效重排时,带 reRank 分数的结果按该分数与 similarity 比较,缺少这类分数的结果保留;未有效重排时,只有纯向量模式按向量分数过滤,混合模式不启用这项最低相关度过滤。因此,混合搜索里只提高 similarity,未必会减少结果,需要同时检查实际返回的 usingReRank 和 usingSimilarityFilter。过滤条件。
随后按 limit 控制引用的 Token 预算。该实现按块累计并保留跨过预算的当前块,因此不是严格逐 Token 截断,也不能用增大 limit 代替扩大召回候选池。最终处理顺序、引用预算处理。
用什么问题验证
例如在供应商准入资料库中,分别准备“ISO 9001 证书需要提交哪些材料”和“质量管理资质怎么准备”这类问题。先固定重排、问题扩展与引用预算,只调整 embeddingWeight,检查对应资料条款能否进入前列;再独立调整 rerankWeight,观察精确标准名称有没有被相近资质说明挤掉。
如果文档已在候选池中但融合后靠后,才针对权重比较;若候选池没有对应文档,则回查索引、全文分词、查询与集合过滤。上述答法针对文本混合检索,图片描述和图片向量在该版本中还有独立融合分支。
对应教程
- 《从零开始学 AI 智能体》第 19 章:RAG 检索增强生成:参考混合检索、重排与问题—期望证据回归的分工;本文补充融合公式和具体权重调试。
- 第 18 章:向量数据库与 Embedding 实战:参考元数据过滤、混合召回和候选重排的区别。
参考资料
- 国内:JavaGuide:RAG 系统优化:参考按查询类型保留关键词或语义信号、区分候选覆盖与排序问题,以及命中率、
MRR和答案引用的分层评测。 - 国内:Datawhale:混合检索:参考稠密与稀疏检索互补,以及原始分数加权和倒数排名融合的不同含义。
- 国内:阿里云:AI 搜索—混合搜索:参考得分归一化后加权的必要性,以及按关键词和自然语言查询侧重调整权重的做法。
- 国内:FastGPT:知识库搜索方案和参数:参考语义、全文、混合检索与结果重排的职责,以及最低相关度和引用上限的适用范围;具体顺序按上方固定源码说明。
- 国外:Microsoft:Hybrid Search Scoring with RRF:参考按名次融合、平滑参数与召回数量相互独立,以及融合分数与模型重排分数分开理解。
- 国外:Weaviate:Hybrid search:参考分数融合保留原始得分差距、排名融合舍弃差距的取舍,以及归一化和权重参数对结果的影响。


