RAG 是一种结合 “检索” + “大语言模型生成” 的技术框架。它的核心思想是:
在回答用户问题前,先从大量文档中找出最相关的片段,再把这些片段喂给大模型,让它基于真实信息生成答案。
这样可以避免大模型“胡说八道”(幻觉),提高回答的准确性。
RAG 分为两个阶段:
- 离线阶段(Offline / Indexing Phase) —— 提前准备数据
- 在线阶段(Online / Inference Phase) —— 实时响应用户
离线阶段(Offline / Indexing Phase)
流程步骤:
| 步骤 | 名称 | 作用 | 输出 |
|---|---|---|---|
| 1 | 数据采集 | 从 PDF、网页、数据库等获取原始文档 | 原始文本集合 |
| 2 | 数据清洗 | 去除 HTML 标签、广告、乱码、重复内容等 | 干净文本 |
| 3 | 数据分块(Chunking) | 将长文本切分为适合模型处理的小段(如 256~1024 tokens) | 文本块列表(chunks) |
| 4 | 向量化(Embedding) | 用 Embedding 模型将每个文本块转为高维向量 | 向量列表(embeddings) |
| 5 | 存入向量数据库 | 将 <文本块, 向量> 对存储到向量数据库(如 FAISS、Milvus、Pinecone) |
可检索的向量索引 |
关键输出:一个向量数据库,里面存着所有知识的“数学表示”。
在线阶段(Online / Inference Phase)
流程步骤: