AI内容/技术判断

知识库检索实验:向量检索并不总是更合适

我用一组模拟规程文档比较了两种检索方法。这个实验用于理解技术取舍,不是客户项目复盘。

实验场景很简单:假设一个连锁品牌要把门店操作规程、常见客诉处理方式做成内部问答,让新人随时能查。模拟文档不到 200 条,内容都是中文短段落。

第一版:标准做法

按教科书的思路走的:文档切块 → embedding → 存向量库 → 用户提问时检索最相似的几块 → 拼进 prompt。

技术上没出问题,但实际用起来有三种典型失败:

  • 问「退货怎么处理」,返回的是「换货怎么处理」。语义上确实很近,但业务上完全是两回事。
  • 问「张店长上个月说的那个新规定」,检索不到。文档里写的是「店长例会决议第 3 条」,没有"新规定"这个词。
  • 问「会员卡余额能不能转赠」,返回了一段讲会员积分的内容。字面有重叠,语义跑偏了。

琢磨下来发现一件事:这个场景里,用户和文档用的词高度一致。门店员工问的就是规程里的词 —— 「退货」「换货」「转赠」。用语义相似度反而引入了不必要的模糊。

第二版:关键词匹配 + 规则优先级

换成最朴素的方案:对查询做分词,和文档标题、小标题、正文做加权匹配,标题命中权重最高。再加两条规则:

  • 同义词表:把「退单 = 退货」「卡内余额 = 会员卡余额」这类人工对应关系维护起来
  • 拒绝回答的阈值:匹配分数低于某条线就直说「没找到相关规定」,而不是硬凑一个答案

在这组模拟测试中,前面三类错误得到修正,响应时间也明显缩短。这个结果只适用于当前样本,不代表真实环境中的普遍效果。

为什么这次"笨办法"赢了

三个条件同时成立,才让关键词匹配胜出:

  1. 语料规模小。不到 200 条。向量检索的优势在规模大的时候才体现出来。
  2. 词汇高度收敛。行业术语固定,问法和写法基本一致 —— 这正是语义检索最不需要发挥的地方。
  3. 业务上要求"准确"而非"相关"。退货和换货语义相近,业务上不能混。语义相似度在这里是负资产。

结论:向量检索不是默认选项,是一个需要论证的选项。当你的用户和你的文档说同一种语言时,模糊匹配是在帮倒忙。

但这不是通用结论

得说清楚,这个判断只在这个场景成立。如果是这些情况,向量检索仍然是更好的选择:

  • 文档量大(几千条以上),人工维护同义词表不现实
  • 用户提问方式和文档写法差异大(比如口语化提问 vs 书面规程)
  • 需要跨文档做归纳,而不是精确命中某一条

比较稳的做法其实是**混着来**:先用关键词做精确命中,命中不了再走向量兜底。成本不高,两种场景都能覆盖。

留给自己的提醒

这次差点犯了「技术先进 = 方案更好」的错。做客户的东西,判断依据永远是在他那个具体场景里跑得怎么样,而不是行业主流在用什么。

一条更通用的经验:先问"这个场景真正需要的是准确还是相关",再决定技术选型。这个问题问对了,一半的技术争论会自动消失。

这类事我可以帮你判断

如果你正在纠结技术方案怎么选,聊聊 30 分钟,我帮你理一遍。

聊聊你的场景