一、问题用户问什么AI答非所问售后知识库上线第一周业务员反馈最多的一句话是“我问的它怎么答不上来”我去翻日志发现两类典型问题第一类用户输入“CONC1600”AI去向量库里搜“CONC1600”搜不到。因为手册里写的是“CONCEPTc系列计量泵”没有“CONC1600”这个字符串。向量模型不认识型号这种“短码”把它当成噪音滤掉了。第二类用户输入“泵头漏液怎么办”AI搜出来一堆“安装说明”“保养周期”就是没有“漏液原因”。因为手册里“漏液”这个词出现得少大部分写的是“密封圈老化导致泄漏”。纯向量检索语义泛化能力强但对“精确匹配”不敏感。用户输型号它当没看见用户输口语它找不着北。二、尝试换个模型效果也没好到哪去我一开始以为是Embedding模型不行换了好几个——百炼、OpenAI、Cohere效果差不多。后来才意识到问题不在模型在检索方式本身。向量检索擅长“找相似”不擅长“找精确”。用户要的是“CONC1600”这个字符串它却去找“和CONC1600语义相似”的东西。型号哪有语义它就是一行代码。三、解法混合检索关键词向量一起上纯关键词检索BM25擅长精确匹配但不理解语义纯向量检索擅长语义泛化但不认识短码。两个都有短板那就拼在一起。流程改成这样关键词召回用户输入“CONC1600 泵头漏液”先用BM25在文档里匹配关键词召回Top50。这一步保证“CONC1600”这种精确词不会漏。向量重排把Top50的结果再用向量检索算一遍相似度取Top3。这一步把“泵头漏液”这种口语表达和手册里的“密封圈老化”匹配上。合并输出把Top3送给大模型生成答案。BM25负责“准”向量负责“全”。两个拼在一起各补各的短板。四、效果两种场景都稳住了改完跑了半个月两类问题明显改善用户输“CONC1600”BM25直接从文档里把包含这个字符串的段落拽出来向量再按相关性排个序不会漏了。用户输“泵头漏液”BM25能捞到带“漏液”的文档虽然不多向量再从这些文档里找到“密封圈老化”的段落。之前两类问题的错误率降了一大截业务员没再抱怨“答非所问”。五、还有哪些坑没填平参数调优BM25和向量的权重怎么配目前是简单拼接后面可能要调一下不同场景侧重不同。长文本截断检索回来的段落太长超过模型输入限制还得切。速度两阶段检索比纯向量慢了一点还在接受范围内。如果数据量再大可能要换更快的检索库。六、总结RAG检索不准不一定是模型不行可能是方式不对。纯向量检索适合“模糊找”纯关键词检索适合“精确查”。两个都有短板那就拼在一起。混合检索不是什么新技术但它是目前能落地、成本低、见效快的方案。如果你也遇到“用户输型号搜不到”“输口语找不着”的问题不妨试试。
RAG检索不准?试试混合检索
一、问题用户问什么AI答非所问售后知识库上线第一周业务员反馈最多的一句话是“我问的它怎么答不上来”我去翻日志发现两类典型问题第一类用户输入“CONC1600”AI去向量库里搜“CONC1600”搜不到。因为手册里写的是“CONCEPTc系列计量泵”没有“CONC1600”这个字符串。向量模型不认识型号这种“短码”把它当成噪音滤掉了。第二类用户输入“泵头漏液怎么办”AI搜出来一堆“安装说明”“保养周期”就是没有“漏液原因”。因为手册里“漏液”这个词出现得少大部分写的是“密封圈老化导致泄漏”。纯向量检索语义泛化能力强但对“精确匹配”不敏感。用户输型号它当没看见用户输口语它找不着北。二、尝试换个模型效果也没好到哪去我一开始以为是Embedding模型不行换了好几个——百炼、OpenAI、Cohere效果差不多。后来才意识到问题不在模型在检索方式本身。向量检索擅长“找相似”不擅长“找精确”。用户要的是“CONC1600”这个字符串它却去找“和CONC1600语义相似”的东西。型号哪有语义它就是一行代码。三、解法混合检索关键词向量一起上纯关键词检索BM25擅长精确匹配但不理解语义纯向量检索擅长语义泛化但不认识短码。两个都有短板那就拼在一起。流程改成这样关键词召回用户输入“CONC1600 泵头漏液”先用BM25在文档里匹配关键词召回Top50。这一步保证“CONC1600”这种精确词不会漏。向量重排把Top50的结果再用向量检索算一遍相似度取Top3。这一步把“泵头漏液”这种口语表达和手册里的“密封圈老化”匹配上。合并输出把Top3送给大模型生成答案。BM25负责“准”向量负责“全”。两个拼在一起各补各的短板。四、效果两种场景都稳住了改完跑了半个月两类问题明显改善用户输“CONC1600”BM25直接从文档里把包含这个字符串的段落拽出来向量再按相关性排个序不会漏了。用户输“泵头漏液”BM25能捞到带“漏液”的文档虽然不多向量再从这些文档里找到“密封圈老化”的段落。之前两类问题的错误率降了一大截业务员没再抱怨“答非所问”。五、还有哪些坑没填平参数调优BM25和向量的权重怎么配目前是简单拼接后面可能要调一下不同场景侧重不同。长文本截断检索回来的段落太长超过模型输入限制还得切。速度两阶段检索比纯向量慢了一点还在接受范围内。如果数据量再大可能要换更快的检索库。六、总结RAG检索不准不一定是模型不行可能是方式不对。纯向量检索适合“模糊找”纯关键词检索适合“精确查”。两个都有短板那就拼在一起。混合检索不是什么新技术但它是目前能落地、成本低、见效快的方案。如果你也遇到“用户输型号搜不到”“输口语找不着”的问题不妨试试。