当 RAG 本该是一次 JOIN 时
一个支持团队向他们的新 AI 助手提了一个简单的问题:“上周有哪些企业客户提交了工单?”助手给出了一个自信、流利的回答,列出了六个账户。其中五个是正确的。有一个客户在两个月前就已经流失了,而另一个提交了三个工单的企业账户却完全遗漏了。直到一次续约会议谈崩了,才有人发现这个问题。
错误不在于模型,而在于架构。在设计评审的某个环节,一个带有硬性谓词(如方案层级、日期范围、工单计数)的问题被路由到了向量索引。团队因为拥有检索系统,所以就选择了检索。他们将工单记录向量化,将问题向量化,然后试图让余弦相似度(cosine similarity)来完成 WHERE 子句的工作。它做不到,也从来都做不到。
这是生产环境 AI 系统中最常见且讨论最少的故障模式之一:当真正的查询是关系型时,却动用了语义搜索。数据明明整齐地存储在带有外键的行中,答案本可以通过一个 JOIN 轻松获得。结果却经过了嵌入模型,导致精度化为乌有。
