一文读懂RAG(检索增强生成):核心流程+关键细节解析
在大模型应用中,RAG(Retrieval-Augmented Generation,检索增强生成)是解决大模型“幻觉”、知识时效性不足的核心技术,也是落地企业级应用的关键。
一、RAG核心定义
RAG是将“检索外部知识库”与“大模型生成”相结合的技术,核心逻辑:在大模型生成回答前,先从指定知识库中检索与用户问题相关的精准信息,将这些信息作为“上下文提示”输入大模型,让大模型基于检索到的真实、最新信息生成回答,避免依赖模型自身过时、不准确的训练数据,从根源上降低幻觉概率。
核心价值:无需重新训练大模型,即可快速更新知识、聚焦特定领域(如医疗、法律、企业内部文档),兼顾生成的准确性、时效性和领域专业性。
二、RAG完整核心流程(4步闭环)
RAG的核心流程可分为“知识库构建”和“检索生成”两大阶段,共4个关键步骤,每一步的细节直接影响最终效果,流程闭环如下:
步骤1:文档加载(Document Loading)
核心:将外部知识源(PDF、Word、网页、数据库等)加载到系统中,为后续处理做准备。
关键细节:需支持多格式文档解析,解决不同文档的编码、排版差异(如PDF的扫描件需OCR识别,Word的表格需结构化提取);避免加载冗余信息(如页眉页脚、重复内容),提升后续处理效率。
步骤2:文档拆分(Chunking,重点)
核心:将加载后的完整文档拆分为多个小的“文本块(Chunk)”,原因是大模型存在上下文窗口限制,且拆分后能提升检索精度(避免检索到无关的大段文本)。这是RAG落地的核心细节,直接影响检索效果。
专业角度拆分原则+方法(含示例):
-
拆分原则:保证单个Chunk的“语义完整性”(即一个Chunk围绕一个核心知识点,不拆分完整的逻辑单元);兼顾“长度适配”(贴合大模型上下文窗口,一般单Chunk长度为200-500token,根据模型调整);避免拆分跨主题内容。
-
常用拆分方法(专业优选): 1. 按标点/段落拆分(基础款):以句号、换行符为分隔符,适合结构化文档(如博客、报告),示例:将一篇5000字的技术文档,按每300token左右(约200-300中文字符)拆分,确保每段围绕一个技术点。 2. 按语义拆分(进阶款,推荐):基于语义相似度拆分,使用Sentence-BERT等模型将文本划分为语义连贯的单元,适合非结构化文档(如论文、对话记录),避免“断章取义”(比如不会把“RAG的核心优势”拆成两部分)。 3. 按文档结构拆分(领域款):针对特定格式文档,如PDF的章节、标题拆分,将“章节标题+对应内容”作为一个Chunk,方便后续检索时定位具体章节(如法律文档按“条款编号+条款内容”拆分)。
-
注意细节:拆分时可保留“上下文关联信息”(如给每个Chunk添加文档来源、章节标题、前后Chunk的简要提示),避免拆分后丢失上下文,导致检索到的Chunk无法理解。
步骤3:知识库构建(Embedding+向量数据库)
核心:将拆分后的Chunk转化为计算机可识别的“向量”,存储到向量数据库中,为后续快速检索做准备,是RAG高效检索的基础。
关键细节:
-
Embedding(向量编码):使用Embedding模型(如Sentence-BERT、m3e-base、text-embedding-ada-002)将Chunk文本转化为固定维度的向量(如768维),向量的相似度对应文本语义的相似度(相似度越高,内容越相关)。
-
向量数据库选择:新手优先选择轻量化、易部署的数据库(如Chroma、FAISS),企业级应用可选择Milvus、Pinecone;核心要求:支持高效的向量相似度检索(如余弦相似度、欧氏距离计算),支持批量插入、更新Chunk向量(方便知识库迭代)。
步骤4:检索+生成(核心闭环)
核心:接收用户问题,从知识库中检索相关Chunk,结合问题和检索结果,让大模型生成精准回答,是RAG的最终落地环节。
关键细节:
-
检索策略: 1. 基础检索:将用户问题Embedding后,与向量数据库中的Chunk向量计算相似度,取Top-K(一般K=3-5)个最相关的Chunk(K值不宜过大,避免引入无关信息)。 2. 进阶检索(可选):结合关键词检索(BM25算法),弥补向量检索在“关键词匹配”上的不足(如用户问题含专业术语,向量检索可能偏差,关键词检索可精准匹配),即“向量检索+关键词检索”融合,提升检索精度。
-
Prompt增强(关键):将检索到的Top-K Chunk,按“相关性排序”,结合用户问题,组织成Prompt输入大模型,格式示例:“基于以下参考信息,简洁、准确回答用户问题,不添加无关内容;参考信息:1.XXX 2.XXX;用户问题:XXX”,避免大模型忽略检索结果,回归自身训练数据。
-
生成约束:要求大模型仅基于检索到的信息生成回答,若检索结果无法回答问题,需明确提示“暂无相关信息”,避免编造内容(进一步降低幻觉)。
三、RAG关键注意事项
-
Chunk拆分的平衡:过细会导致语义不完整,过粗会降低检索精度,需根据文档类型和模型上下文窗口调整(如短文本文档可适当放宽长度,长文档需细化拆分)。
-
知识库迭代:需定期更新Chunk和向量(如新增文档、删除过时内容),否则会出现“知识滞后”,失去RAG的核心价值。
-
Embedding模型选择:优先选择与大模型适配、领域相关的模型(如医疗领域用医疗专用Embedding模型),避免向量编码偏差导致检索不准。
四、总结
RAG的核心是“检索补全知识,生成保证精准”,核心流程可概括为“加载→拆分→建库→检索生成”,其中Chunk拆分、向量检索、Prompt增强是落地关键。相比重新训练大模型,RAG具有低成本、高灵活、易迭代的优势,是目前大模型领域最实用的落地技术之一,适合快速应用于各行业的知识问答、文档查询等场景。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)