当前位置: 首页 > news >正文

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 搜索引擎
http://www.cnnetsun.cn/news/3075529.html

相关文章:

  • 做智驾十年,为何Momenta上市换锚?
  • 企业DLP选型指南:从入门到决策,一篇讲透
  • PEAK框架:自然语言驱动的GPU内核优化技术解析
  • Lyra框架:RISC-V处理器验证的异构加速与语义生成技术
  • 郑州翻译公司 俄语保险翻译清单
  • 模板题这道模板题非常全面,相比应用李超线段树的时候实现的东西要多的多:
  • 基于STM32单片机的颜色识别 TCS3200 RGB 检测系统2(设计源文件+万字报告+讲解)(支持资料、图片参考_降重降ai)
  • X-diagnosis实战案例:解决生产环境中的10个典型系统故障
  • Spring MVC的工作流程
  • Go语言代码覆盖率实现一、什么是代码覆盖率
  • 2026年乐清高定全屋木作品牌深度评测:木艺空间定制馆凭何领跑?
  • 气泡特效的核心在于BubbleEffect类,它继承自Manim的Animation类,通过重写关键方法来实现气泡的上升、变大和透明度变化效果。
  • 一文搞懂巴别鸟版本管理:从历史回溯到冲突解决的完整攻略
  • 河南AI大模型人才培养观察:从通识普及到产业实战的多元路径
  • 快马AI三步搭建OpenClaw安卓自动化测试环境:告别手动配置噩梦
  • 别乱改!Multisim14.2三极管仿真参数修改的实战避坑指南(以2N3904为例)
  • 把 quicklink 的预加载思想搬到 API 层:我设计了一套‘懒请求调度器’,首屏并发从 9 降到了 2
  • 化学图像识别工具横评:DECIMER、Img2Mol、MolScribe,哪个更适合你的科研流水线?
  • 《Debezium + Kafka Connect 实战:从零搭建 MySQL CDC 数据管道,踩坑全记录》
  • M4Markets:技术架构的路径复盘
  • open harmony 项目实战:用 AppStorage 实现轻量级页面路由和状态管理
  • open harmony 项目实战:用 ArkTS 实现诗词收藏和阅读历史
  • 基于51/STM32单片机温湿度控制系统设计大棚检测成品恒温恒湿光照44(设计源文件+万字报告+讲解)(支持资料、图片参考_相
  • JavaScript Promise详解
  • Grid布局开发实践
  • C++虚函数工作原理
  • Angular基础开发教程
  • 阅读APP书源配置终极指南:一键解锁全网小说库的完整教程
  • PHP SQL注入检测实战:从原理到自动化工具实现
  • java+前端学习笔记