RAG原理

120 阅读2分钟

RAG

什么是RAG(Retrieval-Augmented Generation,检索增强生成)

它是一种将本地数据和LLM进行结合的一种技术,是指对大型语言模型输出进行优化,使其能够在生成响应之前引用训练数据来源之外的权威知识库。

常见的RAG架构

  • Naive RAG 经典RAG
graph LR
    subgraph 本地文档处理
        A[ASR 本地知识库文件] --> B[段落-chunk]
        B --> C[Embeddings]
        C --> D[向量数据库]
    end

    subgraph 用户输入
        E[用户输入] --> F[Embeddings]
    end

    F --> D
    D --> H[相似性搜索]
    H --> I[检索到的相关文档]

    I -->|结合用户输入增强提示|J[提示工程]


    E --> I 
    J --> N[LLM]
    N --> K[生成回答]

    style A fill:#f9f,stroke:#333,stroke-width:2px
    style E fill:#f9f,stroke:#333,stroke-width:2px
    style K fill:#f9f,stroke:#333,stroke-width:2px
    
  
  • Advanced RAG 进阶版RAG
    • 对naive RAG在检索前、检索中、检索后的一个优化

向量检索的核心

向量检索的核心是相似性搜索

应用场景

在 LLM 本就强大的功能基础上,RAG 将其扩展为能访问特定领域或组织的内部知识库。

RAG的工作原理

如果没有 RAG,LLM 会接受用户输入,并根据它所接受训练的信息或它已经知道的信息创建响应。RAG 引入了一个信息检索组件,该组件利用用户输入首先从新数据源提取信息。用户查询和相关信息都提供给 LLM。LLM 使用新知识及其训练数据来创建更好的响应。

  • 简要步骤就是:
    1. 用户输入的信息
    1. 拿输入的信息去数据库去找相关的内容
    1. 将返回的内容 + 用户输入的信息 结合,然后再发给LLM
    1. 大语言模型生成最后相应结果

rag实现流程

  1. 创建外部数据 LLM 原始训练数据集之外的新数据称为外部数据。它可以来自API、数据库或文档存储库等。数据可能以各种格式存在,例如文件、数据库记录或长篇文本。然后使用嵌入语言模型的 AI 技术将数据转换为数字向量的形式并将其存储在向量数据库中。这个过程就是创建了一个模型可以理解的知识库。

  2. 检索相关信息 接下来是执行相关性搜索。用户查询将转换为向量表示形式,并与向量数据库匹配。例如,考虑一个可以回答组织的人力资源问题的智能聊天机器人。如果员工搜索:“我有多少年假?”,系统将检索年假政策文件以及员工个人过去的休假记录。这些特定文件将被退回,因为它们与员工输入的内容高度相关。

  3. 增强LLM提示(这一步涉及到提示工程) 接下来,RAG 模型通过在上下文中添加检索到的相关数据来增强用户输入(或提示)。此步骤使用提示工程技术与 LLM 进行有效沟通。增强提示允许大型语言模型为用户查询生成准确的答案。

  4. 更新外部数据