PolyAI 中文文档 下载 App

RAG 召回机制:PolyAI 的话题匹配是怎么工作的

什么是 RAG

检索增强生成(Retrieval-Augmented Generation, RAG) 是 PolyAI 智能体回答问题时的核心工作方式。它的基本流程是:

用户输入 → 语义匹配 → 召回相关话题 → 把话题内容 + 对话历史 + 系统规则拼成 prompt → 喂给 Raven / Dialog-RSN-1 模型 → 模型生成回复

这个机制的关键是知识(话题)和模型解耦:

PolyAI 的 RAG 和通用 RAG 有什么不同

市面上很多产品也宣称用 RAG,但实现差异很大。PolyAI 的 RAG 机制有几个关键设计:

1. 话题示例问题是主动信号

通用 RAG 把整个文档分块、做向量索引、用相似度匹配——用户说的话和文档片段的向量距离越近,匹配度越高。PolyAI 在此基础上还额外利用每个话题的示例问题作为主动匹配信号——用户输入和示例问题越相似,话题的召回权重越高。这让话题匹配更精确,尤其在话题内容相近、只有示例问题不同的场景里。

2. 多层匹配策略

对于多语言智能体,PolyAI 的 RAG 会先用语言检测确定用户当前用哪种语言,再只在对应语言的话题里做召回,避免跨语言的误匹配。

3. 召回后不直接返回,作为 LLM 上下文

召回的话题内容不会直接当作回复返回,而是作为上下文的一部分喂给 LLM。LLM 在此基础上组织更自然的回复——这意味着同一话题,智能体可以根据对话上下文(比如用户的情绪、之前聊了什么)调整回复的语气和细节,而不是每次都机械地念同一段话。

4. 可以触发 Functions 和 Actions

如果召回到的话题配置了 Actions,RAG 流程在召回话题的同时也会激活对应的动作触发器——LLM 可以看到这个动作选项、决定是否执行。

召回质量调优

RAG 召回不上(话题明明存在但对话里没被触发)的常见原因和解决方向:

原因解决
示例问题和用户真实问法差太远从 Conversations 面板里看真实用户输入,加进示例问题
话题内容太泛,匹配分不高给话题补充更具体的示例问题
多个相近话题互相干扰合并相似话题、或者给示例问题做更明确的区分
话题匹配了但 LLM 没用检查 Agent 设置里的 Rules 是否覆盖了 RAG 召回的内容

和 Flow 的关系

RAG 召回知识话题是 PolyAI 对话管道的默认入口。当 RAG 召回到一个配置了"触发 Flow"Action 的话题时,对话就从 RAG 模式切换到 Flow 模式(多步引导)。这两种模式无缝衔接——用户不需要显式说"请帮我走预订流程",RAG 匹配到相关话题后自动触发。