ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

RAG基础

RAG基础

一、什么是 RAG

RAG 是什么

RAG(Retrieval-Augmented Generation),中文称为检索增强生成,是一种将**信息检索(Retrieval)大语言模型生成(Generation)**结合的 AI 技术。

一句话理解:

RAG = 大语言模型 + 外部知识库。

它可以让大语言模型在回答问题前,先从知识库中查找相关内容,再结合检索结果生成更加准确、可靠的回答。


二、为什么需要 RAG

大语言模型虽然知识丰富,但存在以下问题:

  • 知识有截止时间
  • 无法直接访问企业私有数据
  • 容易产生幻觉(Hallucination)
  • 回答可能缺乏准确依据

例如:

用户 ↓ LLM ↓ 凭已有知识回答

可能出现:

编造事实

加入 RAG 后:

用户 ↓ 知识库检索 ↓ 找到相关文档 ↓ LLM ↓ 根据文档回答

因此:

RAG 可以显著提升回答的准确性和可信度。


三、RAG 的整体工作流程

RAG 通常分为两个阶段:

第一阶段:知识库构建(离线)

原始文档 ↓ 文档加载(Loader) ↓ 文本切分(Text Splitter) ↓ Embedding(向量化) ↓ Vector Store(向量数据库)

这一阶段通常只需要执行一次。


第二阶段:用户提问(在线)

用户问题 ↓ Embedding ↓ 向量检索 ↓ 找到最相关文档 ↓ Prompt 拼接 ↓ LLM ↓ 最终答案

四、RAG 的核心组件

整个 RAG 系统通常包含以下几个核心模块:

Document ↓ Loader ↓ Text Splitter ↓ Embedding Model ↓ Vector Database ↓ Retriever ↓ Prompt ↓ LLM

五、Document(文档)

知识来源可以是:

  • PDF
  • Word
  • Markdown
  • TXT
  • HTML
  • CSV
  • Excel
  • 数据库
  • 网页

例如:

公司制度.pdf 产品说明.docx API文档.md 教材.pdf

这些都是 RAG 的知识来源。


六、Document Loader(文档加载器)

作用:

负责读取各种格式文件。

例如:

PyPDFLoader TextLoader CSVLoader DirectoryLoader WebBaseLoader

工作流程:

文件 ↓ Loader ↓ Document

七、Text Splitter(文本切分)

为什么需要切分?

因为:

LLM 每次能够处理的 Token 数量有限。

因此:

需要把长文档拆分成多个小块(Chunk)。

例如:

一本书:

100000 Tokens

切分后:

Chunk1 Chunk2 Chunk3 ... Chunk100

常见切分方式:

CharacterTextSplitter

按字符长度切分。


RecursiveCharacterTextSplitter

LangChain 最常用。

特点:

  • 优先按段落切分
  • 再按句子切分
  • 最后按字符切分

可以最大程度保持语义完整。


八、Chunk(文本块)

切分后的每一块称为:

Chunk

例如:

Chunk 1 介绍 Docker -------- Chunk 2 介绍 Nginx -------- Chunk 3 介绍 LangChain

每一个 Chunk 都会进行向量化。


九、Embedding(文本向量化)

Embedding 的作用:

将文本转换为高维向量。

例如:

Docker 很好 ↓ Embedding ↓ [0.23,0.87,0.56...]

模型无法理解文字,

但可以理解数字向量。


常见 Embedding 模型

  • OpenAI Embedding
  • BGE
  • Jina Embedding
  • Qwen Embedding
  • HuggingFace Embedding
  • DashScope Embedding

十、Vector Database(向量数据库)

Embedding 后的数据:

需要保存。

于是:

使用向量数据库。

例如:

Chunk ↓ Embedding ↓ Vector Database

常见向量数据库

  • Chroma
  • FAISS
  • Milvus
  • Qdrant
  • Pinecone
  • Weaviate

作用:

保存:

向量 + 原文 + Metadata

十一、Metadata(元数据)

除了保存正文,

通常还保存:

文件名 页码 标题 作者 更新时间

例如:

{"source":"Docker学习笔记.pdf","page":5}

方便:

引用来源。


十二、Retriever(检索器)

Retriever:

负责:

根据用户问题,

查找最相似的 Chunk。

例如:

用户:

Docker 是什么?

Retriever:

向量相似度计算 ↓ Chunk17 Chunk18 Chunk21

返回:

最相关内容。


十三、Similarity Search(相似度检索)

常见算法:

  • Cosine Similarity(余弦相似度)
  • Euclidean Distance(欧氏距离)
  • Dot Product(点积)

作用:

计算:

问题 ↓ Embedding ↓ 向量 ↓ 和知识库所有向量比较 ↓ 找到最相近内容

十四、Prompt 拼接

Retriever 找到内容后:

需要拼接 Prompt。

例如:

你是一位AI助手。 下面是参考资料: ...... 请根据资料回答用户问题: 问题: Docker 有什么作用?

然后:

发送给 LLM。


十五、LLM 生成答案

LLM:

结合:

  • 用户问题
  • 检索内容

生成最终回答。

因此:

不是凭空回答。

而是:

依据知识库回答。


十六、RAG 与微调(Fine-tuning)的区别

对比项RAG微调(Fine-tuning)
是否修改模型参数
更新知识成本很低很高
私有数据支持
开发速度
数据更新实时重新训练
推荐场景企业知识库专业能力训练

一句话:

知识更新优先使用 RAG,能力提升优先使用 Fine-tuning。


十七、RAG 在 LangChain 中的基本流程

Loader ↓ Text Splitter ↓ Embedding ↓ Vector Store ↓ Retriever ↓ Prompt ↓ LLM ↓ Answer

这是 LangChain 中最经典的 RAG Pipeline。


十八、RAG 在 AI 开发中的应用

典型应用:

  • 企业知识库问答
  • AI 客服
  • 法律咨询
  • 医疗文档问答
  • 学校教学助手
  • API 文档问答
  • PDF 智能阅读
  • Obsidian 知识库 AI
  • AI 编程助手
  • AI 搜索引擎
返回列表