大模型应用:RAG 原理、流程与最佳实践
RAG(检索增强生成)通过检索外部数据增强大模型生成效果。核心流程包括数据处理、特征提取、检索召回及结果生成。本文详解 RAG 发展历史、数据预处理策略(结构化与非结构化)、Embedding 模型选择(对称/非对称语义)、检索方法(向量/关键字/混合)以及生成阶段的 Prompt 优化。涵盖 LangChain 实现示例、分块技巧、混合检索策略及评估指标,为构建企业级知识库提供技术参考。

RAG(检索增强生成)通过检索外部数据增强大模型生成效果。核心流程包括数据处理、特征提取、检索召回及结果生成。本文详解 RAG 发展历史、数据预处理策略(结构化与非结构化)、Embedding 模型选择(对称/非对称语义)、检索方法(向量/关键字/混合)以及生成阶段的 Prompt 优化。涵盖 LangChain 实现示例、分块技巧、混合检索策略及评估指标,为构建企业级知识库提供技术参考。

检索增强生成(Retrieval-Augmented Generation, RAG)是近年来大语言模型(LLM)落地应用中最关键的技术架构之一。它通过引入外部知识库,有效解决了大模型知识截止、幻觉问题以及私有数据无法利用的痛点。
本文将深入解析 RAG 的核心原理、完整技术流程、数据处理策略、检索优化方案及工程化最佳实践,帮助开发者构建高效、准确的企业级知识库系统。
大语言模型虽然具备强大的通用能力,但在面对特定领域知识时存在明显局限:
RAG 通过'检索 + 生成'的模式,在不重新训练模型的前提下,将外部权威数据注入到生成过程中,实现精准回答。
RAG 的标准工作流包含四个主要阶段:
graph LR
A[用户 Query] --> B(检索模块)
C[知识库] --> B
B --> D{重排序/过滤}
D --> E[Prompt 构建]
E --> F[大模型生成]
F --> G[最终回答]
高质量的数据处理是 RAG 效果的基础。若输入数据质量差,检索准确率将大幅下降。
原始数据通常包含噪声,需进行标准化处理:
由于 Embedding 模型和 LLM 的上下文窗口限制,长文档必须分割。常见策略包括:
按字符数或 Token 数切分。简单但容易破坏语义完整性。
from langchain.text_splitter import CharacterTextSplitter
splitter = CharacterTextSplitter(chunk_size=500, chunk_overlap=50)
chunks = splitter.split_text(text)
优先按段落、标题分割,再按大小切分,保留层级结构。
from langchain.text_splitter import RecursiveCharacterTextSplitter
splitter = RecursiveCharacterTextSplitter(
separators=["\n\n", "\n", " ", ""],
chunk_size=1000,
chunk_overlap=200
)
利用 Embedding 相似度判断段落边界,确保语义连贯。
Embedding 负责将文本映射为向量。选择需考虑场景:
建议优先选用开源且性能优秀的中文模型,如 BAAI/bge-large-zh-v1.5。
检索是 RAG 的核心环节,决定了上下文的准确性。
将文本转化为向量存入向量数据库(Vector DB),使用近似最近邻搜索(ANN)算法。
from langchain.vectorstores import Chroma
from langchain.embeddings import HuggingFaceEmbeddings
embeddings = HuggingFaceEmbeddings(model_name="BAAI/bge-large-zh-v1.5")
vector_store = Chroma.from_documents(documents=chunks, embedding=embeddings)
results = vector_store.similarity_search(query, k=5)
结合 BM25 等传统算法,对专有名词、实体词更敏感。适合精确匹配场景。
结合向量检索与关键字检索,加权融合结果,提升召回率。
直接搜索用户 Query 往往效果不佳,需进行改写:
检索到的内容需经过处理才能送入 LLM。
典型模板如下:
你是一个智能助手。请根据以下参考信息回答问题。
参考信息:
{context}
问题:{query}
请基于参考信息作答,如果不知道请说明。
构建 RAG 系统后,必须建立评估体系。
收集用户反馈(点赞/点踩),分析 Bad Case,优化分块策略或 Embedding 模型。
RAG 并非银弹,其效果高度依赖业务场景与数据质量。开发者需根据实际业务需求,灵活调整检索策略与生成参数,并建立完善的监控闭环,才能实现稳定可靠的知识服务。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online