RAG(检索增强生成)技术详解与应用实践
1. RAG 概述
RAG(Retrieval Augmented Generation,检索增强生成)是目前 AIGC 文本生成领域最普遍、最成熟的应用架构之一。其核心思想是将外部知识库与大语言模型(LLM)相结合,通过检索相关片段来增强模型的生成能力。
与直接让大模型基于训练数据回答不同,RAG 引入了一个前置的检索流程:
- 检索:根据用户查询,从向量数据库或搜索引擎中检索相关知识片段。
- 增强:将检索到的内容作为上下文输入给大模型。
- 生成:大模型基于检索内容和自身知识生成最终答案。
RAG 的核心价值
- 控制回答范围:引导大模型仅基于特定知识库内容回答,减少幻觉。
- 补充专业知识:弥补大模型在垂直领域的知识盲区,使其具备行业专家能力。
- 突破 Token 限制:解决大模型上下文窗口有限的问题,支持处理海量文档。
- 实时性更新:无需重新训练模型,只需更新知识库即可获取最新信息。
2. RAG 实现架构
构建一个标准的 RAG 系统通常包含两个主要阶段:知识库构建与问答流程。
2.1 知识库构建
知识库构建是 RAG 的基础,主要包括以下四个步骤:
(1)内容解析
将非结构化数据(如 txt, html, word, excel, pdf, markdown 等)转换为纯文本。对于多模态数据(音频、图像),需先进行 ASR 或 OCR 处理。此阶段需注意清洗噪声,确保文本格式规范,以提升后续处理质量。
(2)内容分片(Chunking)
由于大模型有上下文长度限制,长文档需要被切分为合适的片段。常见的分片策略包括:
- 固定字符数:按指定字符长度切分,简单但可能破坏语义完整性。
- 语义分片:基于段落、标题或句子边界切分,保持语义连贯。
- 递归分片:先按大块切分,若仍过长则继续细分,保留层级结构。
分片时应尽量保证每个片段独立且完整,避免关键信息被截断。
(3)Embedding(向量化)
Embedding 是将文本映射为高维向量的过程。通过计算向量间的相似度(如余弦相似度),可以衡量文本之间的语义关联。
- 维度选择:常见 Embedding 模型如 OpenAI text-embedding-ada-002 提供 1536 维向量。维度越高,表达能力越强,但存储和计算成本也相应增加。
- 模型选择:通用 Embedding 模型适用于大多数场景,垂直领域建议使用微调后的专用模型以提高准确率。
示例向量表示:
[-0.016, -0.008, -0.015, ..., -0.001]
(4)向量存储
将处理后的文本片段及其向量存储到向量数据库中。常用的向量数据库包括:
- pgvector:PostgreSQL 的开源扩展,适合关系型数据混合查询。
- Elasticsearch:支持全文检索与向量检索结合。
- Chroma / Milvus / Pinecone:专为向量检索设计的数据库。
存储时建议保留元数据(如文档 ID、章节索引、来源时间),以便后续过滤和溯源。


