推荐语
解密RAG技术:如何让大模型更精准可靠?掌握检索增强生成的核心原理与应用。核心内容: 1. RAG技术如何解决传统大语言模型的三大局限 2. 知识库构建与使用的完整技术流程解析 3. 主流工具选型与关键评价指标指南
杨芳贤
53AI创始人/腾讯云(TVP)最具价值专家
写在前面
在大模型应用开发领域,RAG技术栈在其中具有很重要的地位,本文主要通过介绍带大家了解一下什么是RAG技术,RAG技术栈的整体流程,希望对于想要学习RAG技术的你提供帮助。
什么是RAG
RAG,全称为Retrieval-Augmented Generation(检索增强生成),是一种结合了 “信息检索” 与 “生成式 AI” 的混合 AI 技术。它的核心目标是解决传统大语言模型(LLM,如 GPT、LLaMA 等)的两大关键局限 ——知识时效性不足和事实准确性偏差(幻觉),通过 “先检索外部权威信息,再基于检索结果生成回答” 的逻辑,让 AI 输出更精准、更具时效性和可信度的内容。
为什么需要RAG
传统 LLM(如 GPT、LLaMA)因自身特性,难以满足实际场景需求,具体局限如下:
- 1. 知识过时且固定:仅包含训练数据截止前的 “静态知识”,无法获取实时或者最新信息;
- 2. 易产生 “幻觉”:基于概率生成 “听起来合理” 的内容,可能编造事实、混淆信息,且无法验证回答准确性;
- 3. 无法对齐私有 / 场景化需求:训练数据是通用公开内容,无法调用企业内部文档、个人笔记、行业专属资料等 “私有知识”。
RAG的核心
|
|
|
|
知识数据源 |
|
结构化数据(MySQL、PostgreSQL)、非结构化数据(PDF、TXT)、API 接口(如新闻 API) |
|
文档分割器(Chunkers) |
|
LangChain(RecursiveCharacterTextSplitter)、Haystack(SentenceSplitter) |
|
Embedding 模型 |
|
闭源:OpenAI Embedding、Anthropic Embedding;开源:Sentence-BERT、BERT-Chinese |
|
向量数据库 |
|
闭源:Pinecone、Weaviate、Qdrant(托管版);开源:FAISS(轻量)、Milvus(大规模) |
|
大语言模型(LLM) |
|
闭源:GPT-4、文心一言、通义千问;开源:Llama 3、Mistral、Qwen |
|
RAG步骤
RAG大概分为两个步骤:知识库构建和知识库的使用,下面将对这两个步骤进行详细介绍。
1.知识库的构建
该阶段为后续在线响应做准备,核心是将原始数据转化为结构化、高检索效率的知识索引,避免在线时重复处理数据导致延迟,共 4 个关键步骤:
- 1. 数据采集与清洗:收集目标领域的知识源(如 PDF、文档、数据库表、网页文本等),去除冗余(重复内容)、修正错误(乱码、格式问题),保证数据质量;
- 2. 文档分割(Chunking):按 “语义完整 + 适配 LLM 上下文窗口” 原则,将长文档拆分为片段(Chunk),常用策略包括 “固定长度分割(带前后文重叠)” 或 “语义分割(按段落 / 章节)”,避免语义断裂;
- 3. 文本向量化(Embedding):用 Embedding 模型(如 OpenAI Embedding、Sentence-BERT)将每个 Chunk 转化为数值向量,把 “语义相似性” 转化为 “向量空间距离”,为检索做准备;
- 4. 构建向量索引:将所有 Chunk 的向量存入向量索引结构(如 FAISS、Milvus、Pinecone),替代 “暴力遍历”,实现毫秒级相似性检索。
2. 知识库的使用
该阶段是 RAG 与用户交互的核心,实时根据用户查询匹配知识并生成可靠答案,共 5 个关键步骤:
- 1. 用户查询理解:优化原始查询(如纠错、提取关键词、扩展同义词),明确检索目标(例:将 “2024 新能源车销量同笔增长” 修正为 “2024 中国新能源汽车销量同比增长”);
- 2. 相似性检索:将优化后的查询转化为向量,通过向量数据库检索 “距离最近” 的 Top-N 个相关 Chunk(即与问题最匹配的外部知识),部分场景会结合关键词检索(如 BM25)做 “混合检索”;
- 3. 知识过滤与排序:二次筛选检索结果(去除重复、无关内容),并用轻量模型(如 Cross-Encoder)重新排序,提升知识精准度;
- 4. Prompt 构建:将 “用户查询 + 筛选后的相关 Chunk + 指令(要求答案仅来自参考知识)” 组合成 LLM 可理解的 Prompt;
- 5. LLM 生成与输出:将 Prompt 输入 LLM(如 GPT-4、Llama 3),模型基于检索到的外部知识生成答案,可选标注知识来源以提升可追溯性。
RAG相关的技术栈
1.知识源与数据处理层
该层负责将非结构化(文本、PDF 等)、半结构化(表格、JSON 等)数据转化为机器可理解的 “检索友好型” 格式,是 RAG 的 “知识储备基础”。
|
|
|
数据采集工具 |
- 网络爬虫:Scrapy、Beautiful Soup、Selenium - 文档解析:PyPDF2、pdfplumber、Unstructured - 数据库连接:SQLAlchemy(关系型)、PyMongo(非结构化) |
从网页、本地文档(PDF/Word/PPT)、数据库中采集原始知识数据,解决 “知识从哪来” 的问题。 |
数据清洗与预处理 |
- 文本清洗:NLTK、spaCy(去停用词、标点) - 格式标准化:LangChain DocumentLoader、LlamaIndex Reader - 数据去重:SimHash、MinHash |
去除噪声数据(如乱码、重复内容),统一数据格式,为后续分词、嵌入做准备。 |
数据结构化处理 |
- 信息抽取:spaCy(实体识别)、AllenNLP(关系抽取)、LangChain StructuredTool - 表格处理:Pandas、Tabula(PDF 表格提取) |
将非结构化文本中的关键信息(实体、关系、事件)或半结构化表格转化为结构化数据,提升检索精度。 |
2.向量工程层
该层通过 “向量嵌入(Embedding)” 将文本转化为高维向量,再通过向量数据库存储和索引,是 RAG “快速找到相关知识” 的关键
|
|
|
向量嵌入模型 |
- 通用模型:OpenAI Embedding(text-embedding-3-small)、Sentence-BERT(all-MiniLM-L6-v2) - 领域模型:BioBERT(医疗)、CodeBERT(代码)、ERNIE(中文) |
将文本(句子 / 段落)转化为语义向量,确保 “语义相似的文本向量距离近”,支撑语义检索(而非关键词匹配)。 |
向量数据库 |
- 开源:Milvus、Chroma、FAISS(轻量)、Qdrant、Weaviate - 商业:Pinecone、Weaviate Cloud、Zilliz Cloud |
专门存储向量数据,提供高效的近似最近邻(ANN)检索能力(如 IVF、HNSW 索引),解决 “百万级向量快速匹配” 问题。 |
向量索引优化 |
- 索引算法:HNSW(高召回)、IVF-Flat(高精度)、FAISS IVF-PQ(压缩存储) - 量化技术:Scalar Quantization、Product Quantization |
通过索引算法降低检索时间复杂度,通过量化技术减少向量存储占用,平衡 “检索速度” 与 “精度”。 |
3.检索策略层
该层负责设计 “从向量库中筛选相关知识” 的逻辑,不仅依赖语义向量,还通过多策略优化确保 “找得准、找得全”。
|
|
|
基础检索方法 |
- 语义检索:基于向量数据库的 ANN 检索 - 关键词检索:Elasticsearch、Solr(倒排索引) - 混合检索:Elasticsearch + 向量插件(如 ES-HNSW) |
语义检索解决 “意图匹配”,关键词检索解决 “精确术语匹配”,混合检索结合两者优势(如 “糖尿病” 语义匹配 +“胰岛素” 关键词过滤)。 |
高级检索策略 |
- 多轮检索(Multi-turn Retrieval):LangChain RetrievalQAWithSourcesChain - 分层检索(Hybrid Hierarchical):先粗筛文档→再精筛段落 - 重排序(Reranking):Cross-Encoder(BERT-based)、Cohere Rerank API |
多轮检索通过用户追问迭代优化结果;分层检索降低计算成本;重排序对初筛结果二次打分(如 “相关段落排前”),提升精度。 |
检索过滤机制 |
- 元数据过滤:LangChain MetadataFilters(按 “文档类型 / 发布时间” 筛选) - 权限过滤:Milvus Access Control、Weaviate Auth |
基于业务需求筛选知识(如 “只检索 2023 年后的医疗文献”),或控制知识访问权限。 |
4.生成与增强层
该层是 RAG 的 “输出端”,负责将检索到的知识与大模型结合,生成 “有依据、无幻觉” 的回答。
|
|
|
基础大模型(LLM) |
- 开源模型:Llama 3(70B)、Mistral 8x7B、Qwen-72B - 闭源 API:GPT-4o、Claude 3、Gemini 1.5 |
提供 “理解检索知识 + 生成自然语言回答” 的核心能力,开源模型适合私有化部署,闭源 API 适合快速验证。 |
提示工程(Prompt Engineering) |
- 提示模板:LangChain PromptTemplate、LlamaIndex Prompt - 思维链(CoT):Few-shot CoT、Zero-shot CoT - 知识注入:将检索到的 “知识片段 + 来源” 嵌入 Prompt |
通过模板规范输入(如 “基于以下知识回答:{retrieved_context}\n 问题:{user_question}”),通过 CoT 引导 LLM 逻辑推理,减少 “幻觉”。 |
回答增强技术 |
- 来源引用:LangChain CitationQATool、LlamaIndex CitationGenerator - 多模态生成:GPT-4o Vision(结合图片知识)、Gemini Pro(文本 + 图片) |
为回答添加 “知识来源标注”(如 “参考文档 1:XXX”),提升可信度;支持多模态知识(图片、表格)的生成融合。 |
5.系统集成与框架层
该层提供 “开箱即用” 的 RAG 全流程框架,封装数据处理、检索、生成等模块,简化工程落地难度。
|
|
|
全流程 RAG 框架 |
- LangChain:最流行框架,支持 “DocumentLoader→Embedding→Retriever→LLM” 全链路,生态丰富(插件 / 工具多) - LlamaIndex:专注 “知识索引”,优化长文档检索(如自动分块),适合复杂知识图谱场景 - Haystack:模块化设计,支持 Pipeline 可视化,适合工业级部署 |
无需从零开发,通过调用框架 API 快速搭建 RAG 原型(如 LangChain 5 行代码实现基础 RAG)。 |
低代码 / 可视化工具 |
- Flowise:LangChain 可视化拖拽平台 - LlamaIndex Chat Engine:开箱即用的 RAG 对话界面 - Steamship:托管式 RAG 平台,支持一键部署 |
非技术人员可通过拖拽配置 RAG 流程;托管平台减少服务器部署、模型运维成本。 |
多模态 RAG 框架 |
- LlamaIndex MultiModalReader、LangChain MultiModalPromptTemplate - Florence-2(微软)、mPLUG-Owl(多模态理解) |
支持图片、音频、视频等非文本知识的检索与生成(如 “检索产品图片 + 生成使用说明”)。 |
6.评估与运维层
该层负责监控 RAG 系统的 “检索精度”“生成质量” 和 “运行效率”,持续优化系统性能。
|
|
|
效果评估指标 |
- 检索评估:Recall@k(前 k 个结果是否包含正确知识)、Precision@k(前 k 个结果的准确率) - 生成评估:ROUGE-L(与标准答案的相似度)、BLEU(流畅度)、Faithfulness(无幻觉率,如 Factuality Score) |
量化 RAG 效果(如 “Recall@5=90%” 表示前 5 个检索结果 90% 包含正确知识),定位优化点。 |
评估工具 |
- RAGAs(开源):专门评估 RAG 的 “检索相关性、生成忠实度、回答有用性” - TruLens:监控 RAG 全链路(检索→生成),支持归因分析 - Hugging Face Evaluate:提供 ROUGE、BLEU 等标准化评估函数 |
自动化评估 RAG 系统,替代人工打分(如 RAGAs 可批量测试 1000 个问题的无幻觉率)。 |
运维与监控 |
- 模型监控:Prometheus + Grafana(监控 LLM 响应时间、向量检索耗时) - 日志管理:ELK Stack(Elasticsearch+Logstash+Kibana) - 迭代优化:LangSmith(LangChain 生态,跟踪 Prompt / 检索结果迭代) |
实时监控系统响应速度、错误率;通过日志定位 “检索失败”“生成幻觉” 的原因;记录迭代历史。 |