【大模型应用】6.RAG 场景下的向量+关键词混合检索
混合检索定义混合检索也叫多路召回或者融合检索不仅限于向量检索和关键词检索的叠加。比如同时从文档库和数据库检索或者同时用多个不同的 Embedding 模型做向量检索最后把结果融合起来都算混合检索。只不过在大模型 RAG 场景下混合检索最常见的形态就是向量检索 关键词检索。两种检索方式各有软肋● 向量检索擅长语义理解比如 “猫捕猎老鼠” 和 “猫追逐老鼠” 能匹配上但难以精准匹配专有名词如 “iPhone 15”。● 关键词检索精确匹配没问题但理解不了语义用户问 “怎么减肥”它匹配不到 “如何瘦身”。混合检索就是两条路并行走分别执行向量检索和关键词检索把两边的结果融合起来用权重加权或者 RRF 算法重排序取最优结果喂给大模型实现方案Elasticsearch 8.0原生支持dense_vector字段和 knn 查询可以在一个查询里同时做向量检索和关键词检索用bool query组合结果。Milvus 外部搜索引擎Milvus 专门做向量检索配合 Elasticsearch 做关键词检索在应用层做结果融合。LlamaIndex / LangChain这类框架封装了混合检索的能力简单配置即可使用适合快速搭建原型系统。结果融合策略两路检索的结果怎么合并是个技术活常见做法有两种加权求和给向量检索和关键词检索的分数分别乘以权重加起来算总分。比如向量检索权重 0.7关键词检索权重 0.3最后按总分排序。权重怎么定没有万能的黄金比例需要根据业务场景调文档里专有名词、ID 类查询多关键词检索权重可调高到 0.4-0.5主要是自然语言问答向量检索权重可给到 0.7-0.8调参技巧准备一批有标注的测试集跑不同权重组合观察召回率和准确率的变化找到最优点线上还可以做 A/B 测试持续优化。RRF 算法Reciprocal Rank Fusion不看分数只看排名对每个文档计算1/(krank)k 一般取 60然后把两路的分数加起来。好处不用关心两路检索分数的量纲差异直接用排名计算避免了分数归一化的问题。一些追问1. 向量检索和关键词检索的权重一般怎么定有什么调参技巧没有万能的黄金比例得根据业务场景调文档里专有名词、ID 类查询多关键词检索权重可调高到 0.4-0.5。主要是自然语言问答向量检索权重可给到 0.7-0.8。调参技巧准备一批有标注的测试集跑不同权重组合看召回率和准确率的变化找到最优点线上还可以做 A/B 测试持续优化。2. 混合检索和 Rerank 是什么关系能一起用吗能一起用而且建议一起用混合检索解决的是召回阶段的问题让召回的候选文档更全面。Rerank 解决的是精排阶段的问题让最终送给大模型的文档更精准。典型流程向量检索召回 Top 50关键词检索召回 Top 50RRF 融合后取 Top 100然后用 Rerank 模型精排最后取 Top 5 喂给大模型。两者是互补关系不是替代关系。3. 如果关键词检索和向量检索的结果完全没有交集怎么处理这种情况说明两路检索的视角差异很大需要分情况处理如果用户 Query 明显是搜专有名词或 ID关键词检索的结果更可信可以给关键词检索更高权重甚至只用关键词检索的结果。**如果用户 Query 是自然语言问题**向量检索的结果更可信。进阶方案做个简单的Query 分类器判断 Query 类型后动态调整两路的权重。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2429089.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!