Azure Databricks 上的 RAG(检索增强生成)

检索扩充生成(RAG)是一种强大的技术,它将大型语言模型(LLM)与实时数据检索相结合,以生成更准确、up-to日期和上下文相关的响应。

此方法对于回答有关专有、经常更改或特定于域的信息的问题尤其有用。

什么是信息检索增强生成?

在最简单的形式下,RAG 代理执行以下工作:

  1. 检索:用户的请求用于查询外部知识库,例如矢量存储、关键字搜索或 SQL 数据库。 目标是获取 LLM 响应的支持数据。
  2. 扩充:支持数据与用户的请求相结合,通常使用模板和 LLM 的其他格式和说明来创建提示。
  3. 生成:提示将传递给 LLM 以生成对用户请求的响应。

RAG 应用程序的流,从用户请求到数据检索和响应。

RAG 优势

RAG 通过以下方式改进 LLM:

  • 专有知识:RAG 可以包含最初未用于训练 LLM 的专有信息,例如备忘录、电子邮件和用于回答特定领域问题的文档。
  • 最新信息: RAG 应用程序可以向 LLM 提供更新知识库中的信息。
  • 引用来源:RAG 使 LLM 能够引用特定来源,从而允许用户验证响应的事实准确性。
  • 数据安全和访问控制列表 (ACL):检索步骤可以设计为根据用户凭据有选择地检索个人或专有信息。

RAG 组件

典型的 RAG 应用程序涉及几个阶段:

  1. 数据管道:预处理和索引文档、表或其他数据,以便快速准确地检索。

  2. RAG 链(检索、扩充、生成):调用一系列步骤(或称链)以:

    • 了解用户的问题。
    • 检索支持数据。
    • 使用支持数据增强提示。
    • 使用扩充提示从 LLM 生成响应。
  3. 评估和监视:评估 RAG 应用程序以确定其质量、成本和延迟,以确保它满足业务需求。

  4. 治理和 LLMOps:跟踪和管理每个组件的生命周期,包括数据世系和访问控制。

RAG 应用程序组件示意图。

RAG 数据类型:结构化和非结构化数据

RAG 体系结构可以使用非结构化或结构化的支持数据。 在 RAG 中使用的数据取决于你的用例。

非结构化数据:没有特定结构或组织的数据。

  • PDF
  • Google/Office 文档
  • 维基
  • 映像
  • 视频

结构化数据:以特定架构按行和列排列的表格数据,例如数据库中的表。

  • BI 或 Data Warehouse 系统中的客户记录
  • 来自 SQL 数据库的交易数据
  • 来自应用程序 API(例如 SAP、Salesforce 等)的数据

评估和监视

评估和监视有助于确定 RAG 应用程序是否满足质量、成本和延迟要求。 评估发生在开发过程中,监视则发生在应用程序部署到生产环境后。

非结构化数据的 RAG 有许多影响质量的组件。 例如,数据格式更改可能会影响检索的区块以及 LLM 生成相关响应的能力。 因此,除了整体应用程序外,还必须评估各个组件。

有关详细信息,请参阅什么是 Mosaic AI 代理评估?

Databricks 上的 RAG

Databricks 提供用于 RAG 开发的端到端平台,包括:

后续步骤