news 2026/6/10 23:55:54

RAG检索不准?试试混合检索

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
RAG检索不准?试试混合检索

一、问题:用户问什么,AI答非所问

售后知识库上线第一周,业务员反馈最多的一句话是:“我问的它怎么答不上来?”我去翻日志,发现两类典型问题:

  • 第一类:用户输入“CONC1600”,AI去向量库里搜“CONC1600”,搜不到。因为手册里写的是“CONCEPTc系列计量泵”,没有“CONC1600”这个字符串。向量模型不认识型号这种“短码”,把它当成噪音滤掉了。

  • 第二类:用户输入“泵头漏液怎么办”,AI搜出来一堆“安装说明”“保养周期”,就是没有“漏液原因”。因为手册里“漏液”这个词出现得少,大部分写的是“密封圈老化导致泄漏”。

纯向量检索,语义泛化能力强,但对“精确匹配”不敏感。用户输型号,它当没看见;用户输口语,它找不着北。

二、尝试:换个模型,效果也没好到哪去

我一开始以为是Embedding模型不行,换了好几个——百炼、OpenAI、Cohere,效果差不多。后来才意识到:问题不在模型,在检索方式本身。向量检索擅长“找相似”,不擅长“找精确”。用户要的是“CONC1600”这个字符串,它却去找“和CONC1600语义相似”的东西。型号哪有语义?它就是一行代码。

三、解法:混合检索,关键词+向量一起上

纯关键词检索(BM25)擅长精确匹配,但不理解语义;纯向量检索擅长语义泛化,但不认识短码。两个都有短板,那就拼在一起。

流程改成这样:

  1. 关键词召回:用户输入“CONC1600 泵头漏液”,先用BM25在文档里匹配关键词,召回Top50。这一步保证“CONC1600”这种精确词不会漏。

  2. 向量重排:把Top50的结果再用向量检索算一遍相似度,取Top3。这一步把“泵头漏液”这种口语表达,和手册里的“密封圈老化”匹配上。

  3. 合并输出:把Top3送给大模型生成答案。

BM25负责“准”,向量负责“全”。两个拼在一起,各补各的短板。

四、效果:两种场景都稳住了

改完跑了半个月,两类问题明显改善:

  • 用户输“CONC1600”,BM25直接从文档里把包含这个字符串的段落拽出来,向量再按相关性排个序,不会漏了。

  • 用户输“泵头漏液”,BM25能捞到带“漏液”的文档(虽然不多),向量再从这些文档里找到“密封圈老化”的段落。

之前两类问题的错误率降了一大截,业务员没再抱怨“答非所问”。

五、还有哪些坑没填平

  1. 参数调优:BM25和向量的权重怎么配?目前是简单拼接,后面可能要调一下,不同场景侧重不同。

  2. 长文本截断:检索回来的段落太长,超过模型输入限制,还得切。

  3. 速度:两阶段检索比纯向量慢了一点,还在接受范围内。如果数据量再大,可能要换更快的检索库。

六、总结

RAG检索不准,不一定是模型不行,可能是方式不对。纯向量检索适合“模糊找”,纯关键词检索适合“精确查”。两个都有短板,那就拼在一起。混合检索不是什么新技术,但它是目前能落地、成本低、见效快的方案。如果你也遇到“用户输型号搜不到”“输口语找不着”的问题,不妨试试。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 23:51:01

RN/hook/TS

useState 的三种用法直接初始化值 const [state, setState] useState(initialState)惰性初始化(计算复杂值) const [todos, setTodos] useState(() > loadTodosFromStorage())基于前值更新(避免异步闭包问题) setTodos((prev…

作者头像 李华
网站建设 2026/6/10 23:33:04

5分钟掌握Keyviz:实时键鼠可视化工具终极指南

5分钟掌握Keyviz:实时键鼠可视化工具终极指南 【免费下载链接】keyviz Keyviz is a free and open-source tool to visualize your keystrokes ⌨️ and 🖱️ mouse actions in real-time. 项目地址: https://gitcode.com/gh_mirrors/ke/keyviz 你…

作者头像 李华
网站建设 2026/6/10 23:31:31

实现图片本地缓存,减少url重复请求

缓存实现代码/** * 全能型获取图片缓存 (兼容单个链接与链接数组 秒开优化)*/ export function getImageStorage(url) {return new Promise((resolve) > {// 1. 如果是数组,通过 map 循环调用自身,并用 Promise.all 等待所有结果if (Array.isArray(u…

作者头像 李华
网站建设 2026/6/10 23:27:08

2026年实测AI论文网站指南(合规高效版)

为解决学术写作中效率与合规两大核心痛点,本文精选8款高适配性AI论文写作工具(按综合优先级排序),围绕中文学术规范适配、真实参考文献生成、格式标准化、高性价比四大核心维度进行测评,同时配套分场景精准选型方案与学…

作者头像 李华
网站建设 2026/6/10 23:19:58

# AI Agent从0到1开发学习:【什么是多路召回?具体怎么做?】

本文是【AI Agent从0到1开发学习】专栏系列文章,更多内容持续更新中,文章内容基于作者本人理解与实践,如有纰漏与错误等问题,烦请告知,欢迎关注交流! 先用一句话回答: 多路召回,就是…

作者头像 李华
网站建设 2026/6/10 23:17:12

效率直接起飞!盘点2026年人气爆表的AI论文写作工具

一天写完毕业论文在2026年已不再是天方夜谭。以下是2026年最炸裂、实测能大幅提速的AI论文写作工具神器,覆盖全流程生成、文献处理、降重润色、格式排版四大核心场景,帮你高效搞定毕业论文。 一、全流程王者:一站式搞定论文全链路&#xff08…

作者头像 李华