上下文消解与指代改写
这是一份什么方法
在把请求送入检索或生成之前,先用最近对话把"它、这个、那款"等代词改写为具体对象,得到一个消解后的问题。在 SRC-BIZ-001 中,作者 WMW 把这一步放在意图分类之后、检索之前,用于降低下游因指代不清产生的错误召回与幻觉。
适合什么时候用
- 客服多轮对话中,用户频繁使用"它、这个"等代词。
- 仅靠原始问题检索会因缺少主语/对象而召回错误内容。
- 希望减少下游模型对"凭空补全主语"的依赖。
怎么做
- 取出最近若干轮对话,作为改写依据。
- 用模型把当前问题改写为带有具体对象、明确指代的完整表述。
- 把改写后的问题送入意图路由(意图三分支路由(产品咨询 / 用户反馈 / 闲聊))和混合检索(向量检索 + BM25 混合检索 + 精排)。
- 同时记录改写前/改写后的问题,便于排查错误召回。
来源中的关键经验
- 作者明确把上下文消解作为正式步骤而非可选优化。
- 来源直接披露:上下文过少会丢信息,过多会增加延迟、Token 和幻觉——属于 AI 客服的上下文幻觉、延迟与 Token 成本权衡 的具体表现。
- 来自 SRC-BIZ-001:从0到1构建AI客服系统(空气小猪实践记录) 与 空气小猪从创始人真人客服到 AI 客服数据飞轮。
限制
- 改写模型本身可能幻觉("它"被改写为错误对象)。
- 改写带来的额外一次模型调用会增加延迟与成本。
- 来源未公开改写所用的提示词与窗口大小。