用户问得模糊?查询重写来兜底
作者:程序员马丁
note
Ragent AI —— 从 0 到 1 纯手工打造企业级 Agentic RAG,拒绝 Demo 玩具!AI 时代,助你拿个offer。
上一篇讲了会话记忆,你的 RAG 系统终于能知道之前聊了什么了。用户先问“iPhone 16 Pro 的退货政策是什么”,再追问“那它的保修期呢”,模型看到了完整的对话历史,知道“它”指的是 iPhone 16 Pro,回答没问题。
但别高兴得太早。
RAG 系统在回答之前,要先去向量数据库检索相关的 chunk。检索系统拿到的 query 是什么?是用户的原始问题——那它的保修期呢。
“它”这个字对检索系统来说没有任何语义信息。向量化之后,“那它的保修期呢”和“iPhone 16 Pro 保修期”的向量距离可能相差甚远。检索召回的结果大概率不是你想要的——可能是“笔记本电脑保修政策”“家电延保服务”这些不相关的内容。
问题出在哪?模型有记忆,但检索系统没有。
解法其实很直接:在检索之前,先把“那它的保修期呢”改写成“iPhone 16 Pro 的保修期”,再拿去检索。这就是今天要讲的 Query 改写(Query Rewrite)。