模糊意图怎么补全?
Agent多轮交互中结合RAG与对话状态追踪的推断策略
原题:当用户输入请求不完整或模糊时,Agent应如何通过上下文理解、对话状态追踪、主动追问及知识增强等技术手段识别并补全用户的真实意图?请结合RAG与Agent系统的工作机制,阐述多轮交互中的意图推断与信息补全策略。
Agent · 蚂蚁真题
30 秒回答
- 维护槽位状态表:记录已确认、待确认、缺失的字段
- 每轮更新对话信念状态(belief state),用结构化表示(如JSON)存储用户目标、约束条件、未完成项
- 关键:区分用户明确陈述 vs 系统推断假设,后者需标记置信度
回答与解析
核心思路:三层递进式意图补全
1. 对话状态追踪(DST)——"记住什么缺了"
- 维护槽位状态表:记录已确认、待确认、缺失的字段
- 每轮更新对话信念状态(belief state),用结构化表示(如JSON)存储用户目标、约束条件、未完成项
- 关键:区分用户明确陈述 vs 系统推断假设,后者需标记置信度
2. 意图推断策略——"猜用户要什么"
| 模糊类型 | 处理手段 |
|---|---|
| 信息缺失(如"转账"没提金额) | 槽位驱动追问:基于必填槽位优先级排序 |
| 指代消解(如"那个账单") | 上下文实体链接 + 对话历史编码 |
| 语义漂移(话题跳跃) | 检测意图切换信号,重置或保留子状态 |
- RAG增强:检索相似历史对话、产品文档、用户画像,辅助消歧
- 例:用户说"那个理财",结合用户持仓记录RAG召回,推断具体产品
3. 主动追问设计——"聪明地问"
- 触发条件:关键槽位缺失 + 置信度低于阈值 + 非终止意图
- 问题生成:模板填充 → 大模型生成(需控制长度、选项数量)
- 终止策略:用户确认完成 / 达到最大轮数 / 检测到放弃信号
4. RAG与Agent的协同机制
用户输入 → 意图识别 → [需要补全?]
↓ 是
RAG检索: 领域知识 + 用户历史 + 相似案例
↓
生成追问/候选选项 → 用户反馈 → 更新DST → 循环或执行
- 动态检索:每轮根据当前状态构造查询,非一次性检索
- 知识注入:将检索结果作为prompt中的
context,明确标注来源
蚂蚁场景要点
- 金融域合规优先:模糊涉及金额、账户时,必须确认而非推测
- 多模态输入:支持用户上传截图(账单、证件),OCR+RAG联合解析
- 人机协同:置信度极低时主动提供"转人工"选项,而非强行猜测
学习建议
建议先掌握对话系统的基本流程,再学习上下文建模与RAG技术,结合实际对话案例练习意图识别与追问设计。
口语版讲法(约4分钟)
- 一句话定位:本质是模糊意图下的决策与补全
- DST加RAG:状态追踪和知识增强怎么配合
- 主动追问的设计:什么时候问、怎么问、何时停
- 边界与风险:合规优先、别硬猜、留人工入口
这道题其实问的是,当用户说一半或者说不清楚的时候,Agent怎么把话接住、把事办成。本质上是个不确定性决策问题,不是简单填槽位。核心思路是三层递进:先搞清楚缺了什么,再猜用户可能想要什么,最后聪明地问出来。
先说第一层,对话状态追踪。我理解就是维护一张槽位表,记录哪些字段已经确认、哪些待确认、哪些完全缺失。每轮更新信念状态,比如用户说“转账”,金额和账户就是缺失的,但意图是明确的。这里有个关键点:要区分用户明确说的和我系统推断的,推断的要打置信度,不能混为一谈。
第二层,意图推断。模糊类型分几种:信息缺失、指代消解、话题跳跃。信息缺失最简单,按必填槽位优先级追问就行。指代消解比如“那个账单”,需要结合上下文实体链接,或者用RAG从用户历史里召回。举个例子,用户说“那个理财”,系统不知道是哪个,但如果RAG检索到他最近的持仓记录,发现他刚买过一款“稳健理财”,就能推断大概率指这个。话题跳跃更麻烦,要检测意图切换信号,比如用户突然问“那我的信用卡呢”,这时候得判断是继续当前任务还是新开一个。
第三层,主动追问。不是所有缺失都问,触发条件有三个:关键槽位缺失、置信度低于阈值、而且不是终止意图。问题生成我倾向用模板加大模型微调,控制长度和选项数量,别给用户五个选项让他选。终止策略也得想好:用户明确说“就这样”、或者达到最大轮数、或者检测到放弃信号比如用户说“算了”。
RAG和Agent的协同,这里我重点讲。不是一次性检索,而是每轮根据当前状态动态构造查询。比如第一轮用户说“转账”,检索转账流程知识;第二轮用户补充“给张三转”,检索张三的账户信息。检索结果作为prompt里的context,标注来源,这样模型知道哪些是事实哪些是猜测。
落地时有个前提:金融场景合规优先。涉及金额、账户这种敏感字段,必须确认不能推测。比如用户说“帮我转点钱”,系统不能猜金额,必须追问“请问转多少”,而且要明确提醒“您确认转账1000元吗”。常见失败场景是,系统自以为是地填了默认值,用户没注意就确认了,后续出问题很麻烦。所以上线我会特别关注置信度阈值,低于某个值直接转人工,不强行猜。
还有一个延伸点:多模态输入。比如用户上传一张账单截图,系统需要先OCR识别文字,再结合RAG解析。这里有个坑,OCR可能出错,比如把数字“1”识别成“l”,所以RAG检索时要容忍拼写错误,或者用Embedding相似度匹配。这个方向我还在探索,比如怎么把OCR置信度和RAG检索分数联合起来做决策。
所以整体上,我更倾向于把意图补全看作一个动态决策过程,不是填完槽位就结束,而是每轮根据状态、置信度、风险来权衡。如果让我取舍,我会优先保证安全和准确,宁可多问一轮,也不替用户做决定。
关键一句:多模态输入中OCR+RAG的联合解析与错误容忍
面试官还可能这样问
- 问法 1 · 场景切入
假设你做电商客服Agent,用户说‘我想退那个订单’,但没提哪个订单、退多少。你准备怎么识别他到底要退哪个,还缺什么信息?
- 问法 2 · 层层追问
多轮对话中用户意图不完整你怎么处理?……如果用户前后说了两件不同的事呢?……那你怎么知道该问什么,又不至于问太多让用户烦?
- 问法 3 · 直球架构
当用户输入模糊或缺失信息时,Agent如何结合上下文、DST、RAG和主动追问来补全意图?请从系统设计角度讲清楚每轮你怎么决策、怎么更新状态、怎么检索知识。