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 使用新知识及其训练数据来创建更好的响应。
- 简要步骤就是:
-
- 用户输入的信息
-
- 拿输入的信息去数据库去找相关的内容
-
- 将返回的内容 + 用户输入的信息 结合,然后再发给LLM
-
- 大语言模型生成最后相应结果
rag实现流程
-
创建外部数据 LLM 原始训练数据集之外的新数据称为外部数据。它可以来自API、数据库或文档存储库等。数据可能以各种格式存在,例如文件、数据库记录或长篇文本。然后使用嵌入语言模型的 AI 技术将数据转换为数字向量的形式并将其存储在向量数据库中。这个过程就是创建了一个模型可以理解的知识库。
-
检索相关信息 接下来是执行相关性搜索。用户查询将转换为向量表示形式,并与向量数据库匹配。例如,考虑一个可以回答组织的人力资源问题的智能聊天机器人。如果员工搜索:“我有多少年假?”,系统将检索年假政策文件以及员工个人过去的休假记录。这些特定文件将被退回,因为它们与员工输入的内容高度相关。
-
增强LLM提示(这一步涉及到提示工程) 接下来,RAG 模型通过在上下文中添加检索到的相关数据来增强用户输入(或提示)。此步骤使用提示工程技术与 LLM 进行有效沟通。增强提示允许大型语言模型为用户查询生成准确的答案。
-
更新外部数据