跳到正文

模糊意图怎么补全?

Agent多轮交互中结合RAG与对话状态追踪的推断策略

原题:当用户输入请求不完整或模糊时,Agent应如何通过上下文理解、对话状态追踪、主动追问及知识增强等技术手段识别并补全用户的真实意图?请结合RAG与Agent系统的工作机制,阐述多轮交互中的意图推断与信息补全策略。

Agent · 蚂蚁真题

30 秒回答

  1. 维护槽位状态表:记录已确认、待确认、缺失的字段
  2. 每轮更新对话信念状态(belief state),用结构化表示(如JSON)存储用户目标、约束条件、未完成项
  3. 关键:区分用户明确陈述 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. 问法 1 · 场景切入

    假设你做电商客服Agent,用户说‘我想退那个订单’,但没提哪个订单、退多少。你准备怎么识别他到底要退哪个,还缺什么信息?

  2. 问法 2 · 层层追问

    多轮对话中用户意图不完整你怎么处理?……如果用户前后说了两件不同的事呢?……那你怎么知道该问什么,又不至于问太多让用户烦?

  3. 问法 3 · 直球架构

    当用户输入模糊或缺失信息时,Agent如何结合上下文、DST、RAG和主动追问来补全意图?请从系统设计角度讲清楚每轮你怎么决策、怎么更新状态、怎么检索知识。

同模块相关题目