RAGate:用于对话式人工智能的自适应 RAG
构建对话 AI 系统是困难的!!!
这虽然可行,但也复杂、耗时且资源密集。
挑战在于设计能够理解和生成类人响应的系统,并确保这些系统能够有效地与用户互动,适应对话的细微差别。
非常流行的**RAG(检索增强生成)**通过将外部知识与 LLM 的内部知识无缝集成,彻底改变了对话 AI。通过将 RAG 应用于您的商业数据,您的客户可以用自然语言询问他们的数据,从而促进无缝互动。
然而,有一个警告: 在使用 RAG 时,很明显并不是每个查询都需要从“外部知识”中获取答案。过度依赖外部来源可能会破坏真正的互动。就像与某人交谈,对于每个问题都要去翻一本书来构建您的回答,即使您已经对该主题有更深入的理解。更糟糕的是,您可能找不到任何关于该主题的书,最终回答“我不知道”,尽管您拥有可以提供更深刻答案的内部知识。
显然,在使用 RAG 时,需要一种机制来确定在推理时何时利用“外部知识”与“内部知识”。
引入RAGate——一种二元开关,旨在动态评估何时利用外部知识以及何时依赖内部见解。由 Xi Wang、Procheta Sen、Ruizhe Li 和 Emine Yilmaz 提出,并于 2024 年 7 月发布于 ArXiv (用于对话系统的自适应检索增强生成)。
让我们通过示例进一步了解。
什么是对话式人工智能?
对话是个体之间思想、情感和信息的交流,适应语调、上下文和细微的暗示,以引导互动。人类天生适合进行对话,因为具备情商、社交能力和文化接触等特质,这帮助我们理解细微差别并适应不同的社交环境。
对话式人工智能旨在通过技术复制这种类人互动,理解和生成自然、符合上下文的、引人入胜的回应。它适应用户输入,使互动流畅而动态,像人类之间的对话。
什么是 AI 系统的外部知识和内部知识?
在开头段落中,我提到了两个关键术语——外部知识和内部知识。让我们花一点时间来澄清这些概念,因为理解它们将使学习 RAGate 变得更加容易。
External knowledge 包含不属于 AI 模型的固有信息,而是从外部来源检索的。来源包括结构化数据存储库、API、指南、常见问题解答和网络来源等非结构化知识库。外部知识的主要作用是提供事实、最新和上下文相关的信息,从而提高 AI 响应的准确性和全面性。
Internal knowledge 指的是嵌入在 AI 模型中的内置知识和处理能力,这些知识和能力基于其训练数据。来源包括来自多样化数据集的预训练知识,包括语言模式、语法、共享事实和一般世界知识、来自过去交互的记忆的上下文意识,以及 AI 的语义理解和理解能力。
RAG 和护栏 — 强大的组合,但有局限性!
RAG 结合了两个强大的元素:(1) 大型语言模型(LLMs)处理自然语言的能力,以解释和生成类人文本。 (2) 检索和增强外部最新信息的能力。
许多 RAG 实现都包含 护栏、约束或规则,以引导系统的行为朝着负责任和领域界定的人工智能。这些护栏通常优先使用外部知识,而不是模型的内部知识,以确保响应的可预测性。严格应用这些护栏有时可能导致次优结果:
- 过度依赖外部来源: 系统可能被迫寻求外部信息,即使是对于一般问题,LLM 的内部知识可能已经足够。
- 响应流畅性降低的潜在风险: 通过限制内部知识,系统在某些情况下可能产生不那么自然或上下文不适当的响应。
- 延迟增加: 不断检索外部信息可能导致响应时间比依赖内部知识时更慢。
- 错失机会: 嵌入在 LLM 参数中的广泛知识可能未被充分利用,可能会错过有价值的见解或联系。
RAGate的平衡艺术
RAGate,即检索增强生成门,通过自适应地确定何时将外部知识纳入响应,从而增强对话AI系统的能力。
RAGate研究探讨了对话系统中自适应增强的需求,并将RAGate提出为一种门控模型,预测何时检索外部知识是有益的。论文提供了大量实验和分析,展示了RAGate在提高基于RAG的对话系统的响应质量和生成信心方面的有效性。
RAGate 示例
场景: 用户正在与一个专注于医疗保健的聊天机器人互动,该机器人根据一般健康原则和医学知识提供个性化的健康建议。
RAGate 可以通过平衡内部和外部知识进一步增强对话。它允许人工智能使用内部医学知识提供一般信息,同时检索最新研究。它甚至可以智能地综合来自多个来源的数据进行全面分析,基于患者详情提供个性化见解,并过滤外部信息以优先考虑最相关的内容,从而减少信息过载。
RAGate 的变体
如论文中所述,RAGate 提供了 3 个变体 — RAGate-Prompt、RAGate-PEFT (参数-高效微调) 和 RAGate-MHA (多头注意力)。
RAGate 的每个变体 — Prompt、PEFT 和 MHA — 采用不同的方法来整合外部知识,旨在提高 AI 生成响应的相关性和准确性。
以下是快速比较表:
如何实现 RAGate?
本文提供了实现 RAGate 的逐步指南:
- 定义问题:这一步至关重要,因为它涉及到识别您希望通过 RAGate 增强的对话任务。确定对话的范围和您希望覆盖的特定领域(例如,餐厅推荐、旅行规划)。
- 选择语言模型:选择适合的大型语言模型(LLM)作为您对话系统的基础。可选模型包括 Llama、GPT-2 或其他基于变换器的架构。
- 收集和标注数据:收集与您的对话领域相关的数据集。KETOD 数据集是一个优秀的例子,它包括标注的对话和知识片段。确保您的数据集有明确的标签,指示何时需要知识增强。
- 开发知识检索系统:实现一个知识检索机制,以便在需要时获取相关的外部信息。可以考虑流行的技术,如稠密段落检索或图结构知识库。
- 实现 RAGate 机制:创建二元知识门函数(RAGate),以确定何时用外部知识增强响应。这涉及到 上下文分析和门控函数。
- 探索 RAGate 变体:根据论文中讨论的方法开发不同的 RAGate 变体:
- RAGate-Prompt:使用自然语言提示与预训练语言模型来确定是否需要增强。
- RAGate-PEFT:采用参数高效微调技术(例如,QLoRA)来训练您的语言模型,以便更好地进行决策。
- RAGate-MHA:利用多头注意力机制来评估上下文并交互式地检索知识。
-
训练模型:使用标注数据集微调您的 LLM,采用各种 RAGate 变体。结合门控机制的训练,以增强模型有效预测知识增强需求的能力。
-
评估性能:进行广泛的实验以验证 RAGate 的有效性。分析指标如:
- 精确度、召回率、F1 分数:评估门控函数的分类性能。
- BLEU、ROUGE、BERTScore:用于评估生成响应与真实值的质量。
- 置信分数:测量生成输出的置信度,以确保高质量的响应。
-
部署系统:将 RAGate 启用的对话系统集成到您的应用或服务中。确保系统能够处理实时查询,并动态决定知识增强。
-
迭代和改进:持续收集用户反馈和交互数据,以优化模型。分析系统在上下文或相关性方面可能遇到的困难,并相应调整训练或检索机制。
收获
总之,RAGate 代表了对话式人工智能的重大进步,通过智能地平衡内部和外部知识,提供更相关、高效和个性化的响应。RAGate 的应用范围广泛,涵盖了医疗、客户支持、教育、法律服务、金融等多个行业。通过增强人工智能提供量身定制的实时信息的能力,RAGate 有潜力彻底改变企业和个人与技术的互动方式,提高决策能力、用户体验和整体系统性能。