RAG 技术全解析

RAG(Retrieval-Augmented Generation,检索增强生成),是指对大型语言模型输出进行优化,使其能够在生成响应之前引用训练数据来源之外的权威知识库。大型语言模型(LLM)用海量数据进行训练,使用数十亿个参数为回答问题、翻译语言和完成句子等任务生成原始输出。在 LLM 本就强大的功能基础上,RAG 将其扩展为能访问特定领域或组织的内部知识库,所有这些都无需重新训练模型。这是一种经济高效地改进 LLM 输出的方法,让它在各种情境下都能保持相关性、准确性和实用性。

RAG主要由三个步骤组成:Indexing、Retrieval、Generation。

  • 索引:文档被分割成块,编码成向量,存储在向量数据库中;
  • 检索:基于语义相似度检索与问题最相关的 k 个块(top-k chunks);
  • 生成:将原始问题和检索到的数据块一起输入 LLM,生成最终答案。

RAG 发展经历了三个阶段:Naive RAG、 Advanced RAG 和 Modular RAG。

Naive RAG

Naive RAG 遵循传统过程Indexing-Retrieval-Generation,也被称为“ Retrieve-Read”框架。

索引(Indexing)

索引首先清理和提取各种格式的原始数据,如 PDF、 HTML、 Word 和 Markdown,然后将其转换为统一的纯文本格式。为了适应语言模型的上下文限制,文本被分割成更小的、可消化的块(chunk)。然后使用嵌入模型将块编码成向量表示,并存储在向量数据库中。这一步对于在随后的检索阶段实现高效的相似性搜索至关重要。

知识库分割成chunks,并将chunks向量化至向量库中。

检索(Retrieval)

在收到用户查询(Query)后,RAG 系统采用与索引阶段相同的编码模型将查询转换为向量表示,然后计算索引语料库中查询向量与块向量的相似性得分。该系统优先级和检索最高 k (Top-K)块,显示最大的相似性查询。这些块随后被用作 prompt 中的扩展上下文。

Query向量化,匹配向量空间中相近的chunks。

生成(Generation)

提出的查询(Query)和选定的文档(Chunks)被合成为一个连贯的提示,大语言模型负责生成回复。该模型的答复方法可能因具体任务的标准而异,允许它或者利用其固有的参数知识,或者限制其对所提供文件中所包含的信息的答复。在正在进行的对话中,任何现有的对话历史都可以整合到提示中,使模型能够有效地进行多轮对话交互。

This chapter requires login to view full content. You are viewing a preview.

Login to View Full Content

Course Curriculum

1

LLM

我们将对比确定性编程与概率编程的根本差异,理解从“编写逻辑”到“设计引导”的范式转移。同时,将API设计、参数调试等传统研发直觉,快速映射到提示词工程与生成参数驯化上,让您在AI时代继续发挥工程优势。
2

Transformer

我们将建立从软件模块到模型组件的认知桥梁,把Transformer理解为一个新的“运行时环境”。目标是让您能像分析JVM GC或线程调度一样,洞察注意力机制、Token生成等核心过程的资源消耗与性能瓶颈。
3

Prompt Engineering

我们将建立从软件模块到模型组件的认知桥梁,把Transformer理解为一个新的“运行时环境”。目标是让您能像分析JVM GC或线程调度一样,洞察注意力机制、Token生成等核心过程的资源消耗与性能瓶颈。
4

Fine-tuning

我们将建立清晰的决策框架,像在“使用开源库”和“自研核心组件”之间做权衡一样,在提示工程与模型微调之间做出成本最优解。深入LoRA等关键技术,理解其如同软件工程中的“依赖注入”般高效参数更新原理。
5

RAG

我们将对比传统数据库查询与向量检索的核心差异,构建混合检索的新心智模型。深入文本分块、Embedding选型等生产细节,让RAG系统从“能跑”到“好用”,解决准确性、幻觉治理等实际工程挑战。
6

Agent

我们将智能体架构理解为“一个高度自治的微服务集群”,其工具调用如同服务间API调用,记忆体系如同分布式缓存与数据库。在此基础上,设计能够规划、执行并从容应对失败的鲁棒性AI系统。