RAG 检索增强生成技术全景:从基础原理到企业级实践

发布时间:2026/9/5 16:39:06

RAG 检索增强生成技术全景:从基础原理到企业级实践
RAG 检索增强生成技术全景从基础原理到企业级实践一、RAG 为什么成为企业 AI 的核心基础设施2023年RAGRetrieval-Augmented Generation检索增强生成还被视为一种缓解大模型幻觉的临时补丁。到了2026年它已经演变为构建企业级可信AI系统的核心基础设施。这个转变不是偶然的而是由三个关键需求驱动的。第一大模型的知识截止日期问题。无论GPT-5还是Claude Sonnet 5它们的训练数据都有截止日期。对于需要实时信息的企业场景如客服、合规审查、市场分析模型不知道最近发生了什么是致命的。第二私有知识的接入需求。企业有大量的内部文档、数据库、知识库这些数据不能上传到公有云模型。RAG提供了一种优雅的解决方案数据留在本地只在需要时检索相关内容送给模型。第三幻觉控制。大模型会一本正经地编造这在企业场景中是不可接受的。RAG通过将回答锚定在真实文档上大幅降低了幻觉风险。二、RAG 的技术演进路线2.1 Naive RAG基础范式Naive RAG是最初的RAG实现流程非常简单用户提问 → 向量检索 → 拼接上下文 → LLM生成回答这个流程的问题很明显检索质量不稳定、上下文可能不相关、生成质量依赖检索结果。但它奠定了RAG的基本框架后续所有优化都是在这个框架上的增强。2.2 Advanced RAG检索增强Advanced RAG在Naive RAG的基础上增加了多个优化环节查询改写在检索前对用户问题进行扩展、分解或重写混合检索结合语义检索向量相似度和关键词检索BM25重排序用更精确的模型对初检结果进行二次排序上下文压缩用LLM对检索到的文档进行摘要去除冗余2.3 Modular RAG模块化架构Modular RAG将RAG的各个环节模块化支持灵活组合检索模块支持多种检索策略的即插即用记忆模块维护对话历史和用户偏好路由模块根据查询类型自动选择最优处理路径生成模块支持多种生成策略和格式控制2.4 Agentic RAG智能体增强Agentic RAG将Agent的自主决策能力引入RAG流程Agent自主判断是否需要检索、检索什么、如何检索支持多轮检索第一轮检索不理想时自动调整策略支持多源检索同时检索文档库、数据库、API等多个来源支持检索结果验证对检索到的信息进行事实核查三、RAG 核心技术深度解析3.1 文档处理与切分文档切分是RAG Pipeline的第一步也是最容易被忽视的一步。切分策略直接影响检索质量。固定大小切分最简单的方式按固定token数切分。优点是简单可控缺点是可能切断语义单元。fromlangchain.text_splitterimportRecursiveCharacterTextSplitter splitterRecursiveCharacterTextSplitter(chunk_size500,# 每个chunk的字符数chunk_overlap50,# chunk之间的重叠字符数separators[\n\n,\n,。,., ]# 优先在自然边界切分)chunkssplitter.split_text(document)语义切分基于语义相似度判断切分点。当相邻段落的语义相似度低于阈值时切分。这种方式能更好地保持语义完整性但计算成本更高。层级切分先按文档结构章节、段落切分再对过长的段落进行二次切分。这种方式保留了文档的层级结构信息。3.2 Embedding 模型选型Embedding模型将文本转换为向量是RAG检索质量的关键。2026年主流的Embedding模型包括模型维度最大长度特点text-embedding-3-large30728191OpenAI旗舰质量最高bge-large-zh-v1.51024512中文效果优秀m3e-large1024512中文开源首选jina-embeddings-v310248192支持长文本选型建议中文场景优先选择bge或m3e需要长文本支持选择jina追求极致质量且预算充足选择OpenAI3.3 向量数据库选型向量数据库是RAG的存储和检索引擎。2026年主流选择数据库类型适用场景特点Milvus专用向量库大规模生产性能最强分布式Qdrant专用向量库中等规模Rust实现性能优秀Chroma嵌入式向量库原型开发轻量Python原生FAISS向量索引库研究/嵌入式Meta出品性能极致pgvectorPostgreSQL扩展已有PG的项目与SQL无缝集成3.4 检索策略优化混合检索结合语义检索和关键词检索的优势。fromlangchain.retrieversimportEnsembleRetriever# 语义检索器semantic_retrievervector_store.as_retriever(search_typesimilarity,search_kwargs{k:10})# 关键词检索器keyword_retrieverBM25Retriever.from_documents(documents)# 混合检索器加权融合ensemble_retrieverEnsembleRetriever(retrievers[semantic_retriever,keyword_retriever],weights[0.7,0.3]# 语义检索权重更高)查询改写在检索前优化用户查询。# 查询扩展生成多个相关查询expanded_queriesllm.generate(f将以下问题扩展为3个不同角度的查询{user_query})# 多查询检索all_results[]forqueryinexpanded_queries:resultsretriever.get_relevant_documents(query)all_results.extend(results)# 去重和重排序final_resultsreranker.rerank(deduplicate(all_results))重排序对初检结果进行精确排序。fromlangchain.retrieversimportContextualCompressionRetrieverfromlangchain.retrievers.document_compressorsimportCohereRerank compressorCohereRerank(top_n5)compression_retrieverContextualCompressionRetriever(base_compressorcompressor,base_retrieverbase_retriever)四、RAG 评估体系4.1 评估维度RAG系统的评估需要从多个维度进行检索质量召回率Recall、精确率Precision、NDCG生成质量忠实度Faithfulness、相关性Relevance、完整性Completeness系统性能延迟Latency、吞吐量Throughput、成本Cost4.2 评估框架推荐使用RAGASRAG Assessment框架进行自动化评估fromragasimportevaluatefromragas.metricsimport(faithfulness,answer_relevancy,context_recall,context_precision,)# 准备评估数据eval_datasetDataset.from_dict({question:questions,answer:answers,contexts:contexts,ground_truth:ground_truths,})# 运行评估resultevaluate(eval_dataset,metrics[faithfulness,answer_relevancy,context_recall,context_precision])4.3 持续监控RAG系统上线后需要持续监控检索漂移随着文档更新检索质量是否下降生成质量用户反馈点赞/点踩的趋势性能指标P50/P95/P99延迟的变化成本指标每次查询的Token消耗五、企业级 RAG 架构设计5.1 整体架构一个企业级RAG系统通常包含以下组件┌─────────────────────────────────────────────┐ │ API Gateway │ ├─────────────────────────────────────────────┤ │ 查询处理层 │ │ ┌─────────┐ ┌──────────┐ ┌──────────────┐ │ │ │查询分类 │ │查询改写 │ │意图识别 │ │ │ └─────────┘ └──────────┘ └──────────────┘ │ ├─────────────────────────────────────────────┤ │ 检索层 │ │ ┌─────────┐ ┌──────────┐ ┌──────────────┐ │ │ │向量检索 │ │关键词检索 │ │混合检索 │ │ │ └─────────┘ └──────────┘ └──────────────┘ │ │ ┌─────────┐ ┌──────────┐ │ │ │重排序 │ │多源融合 │ │ │ └─────────┘ └──────────┘ │ ├─────────────────────────────────────────────┤ │ 生成层 │ │ ┌─────────┐ ┌──────────┐ ┌──────────────┐ │ │ │上下文组装│ │LLM生成 │ │后处理/校验 │ │ │ └─────────┘ └──────────┘ └──────────────┘ │ ├─────────────────────────────────────────────┤ │ 数据层 │ │ ┌─────────┐ ┌──────────┐ ┌──────────────┐ │ │ │文档处理 │ │向量化 │ │索引管理 │ │ │ └─────────┘ └──────────┘ └──────────────┘ │ └─────────────────────────────────────────────┘5.2 多租户支持企业场景通常需要支持多个租户部门、客户每个租户有独立的知识库classMultiTenantRAG:def__init__(self):self.tenants# tenant_id - RAG instancedefget_rag(self,tenant_id:str):iftenant_idnotinself.tenants:self.tenants[tenant_id]self._create_rag(tenant_id)returnself.tenants[tenant_id]defquery(self,tenant_id:str,question:str):ragself.get_rag(tenant_id)returnrag.query(question)5.3 权限控制RAG系统需要确保用户只能检索到有权限访问的文档defretrieve_with_acl(query,user_id,user_permissions):# 检索时过滤用户无权访问的文档resultsvector_store.search(query,filter{allowed_users:{$in:[user_id,*]}})returnresults六、RAG 常见问题与解决方案6.1 检索不准确问题检索到的文档与用户问题不相关。解决方案优化Embedding模型选择引入查询改写使用混合检索添加重排序步骤6.2 答案不完整问题相关信息分散在多个chunk中但只检索到了部分。解决方案增加检索数量top_k使用父子文档检索先检索小chunk再返回大chunk实现多轮检索6.3 上下文窗口溢出问题检索到的文档总长度超出模型上下文限制。解决方案上下文压缩用LLM摘要滑动窗口处理使用长上下文模型如支持128K的模型6.4 信息冲突问题不同文档包含矛盾信息。解决方案引入文档时效性权重标注信息来源和可信度让模型在答案中说明信息冲突七、未来展望RAG技术仍在快速演进。以下几个方向值得关注Graph RAG将知识图谱引入RAG增强实体关系推理能力Multimodal RAG支持图像、表格、代码等多种模态的检索Self-RAG模型自我判断是否需要检索、检索结果是否相关Cached RAG对高频查询进行缓存降低延迟和成本RAG已经从锦上添花变成了不可或缺。对于任何需要让大模型访问外部知识的企业应用RAG都是首选方案。掌握RAG的核心原理和工程实践是2026年AI工程师的必备技能。

相关新闻

终极指南:如何将闲置电视盒变身高性能Linux服务器

终极指南:如何将闲置电视盒变身高性能Linux服务器

2026/8/23 0:39:55

终极指南:如何将闲置电视盒变身高性能Linux服务器 【免费下载链接】amlogic-s9xxx-armbian Supports running Armbian on Amlogic, Allwinner, and Rockchip devices. Support a311d, s922x, s905x3, s905x2, s912, s905d, s905x, s905w, s905, s905l, rk3588, rk35…

如何免费解锁Grammarly Premium高级版:3分钟终极完整指南

如何免费解锁Grammarly Premium高级版:3分钟终极完整指南

2026/8/30 10:53:15

如何免费解锁Grammarly Premium高级版:3分钟终极完整指南 【免费下载链接】autosearch-grammarly-premium-cookie 免费白嫖使用Grammarly Premium高级版 项目地址: https://gitcode.com/gh_mirrors/au/autosearch-grammarly-premium-cookie 还在为Grammarly …

Selenium多窗口与Windows控件处理实战:避坑指南与面试精讲

Selenium多窗口与Windows控件处理实战:避坑指南与面试精讲

2026/9/1 1:59:35

1. 项目概述与核心价值 最近在带团队做客户端自动化测试项目时,发现很多刚接触Selenium的同学,甚至一些有几年经验的测试开发,在处理多窗口切换和Windows原生控件交互时,依然会踩不少坑。面试时也常遇到候选人在这两块知识上模棱…

FZ-PanDA 5.72版本解析与安全使用指南

FZ-PanDA 5.72版本解析与安全使用指南

2026/9/5 17:29:37

简介:FZ-PanDA5.72版是一款面向工业自动化工程师、机器人视觉系统集成人员及智能制造领域技术人员的专用仿真软件,聚焦机器人视觉引导任务的建模、调试与优化,解决CCD图像识别、目标定位、路径规划与多机协同等实际产线部署前的关键验证难题。…

yfinance 请求被 429 限流?代理配置加请求间隔,3 步让数据拉取稳定下来

yfinance 请求被 429 限流?代理配置加请求间隔,3 步让数据拉取稳定下来

2026/9/5 17:09:37

yfinance 请求被 429 限流?代理配置加请求间隔,3 步让数据拉取稳定下来 【免费下载链接】yfinance Download market data from Yahoo! Finances API 项目地址: https://gitcode.com/GitHub_Trending/yf/yfinance 批量拉 5 只股票,第 3…

GitHub中文排行榜学习路线:从新手到专家的开源项目导航

GitHub中文排行榜学习路线:从新手到专家的开源项目导航

2026/9/5 16:59:36

GitHub中文排行榜学习路线:从新手到专家的开源项目导航 GitHub中文排行榜是发现高分优秀中文项目的利器,帮助开发者高效吸收国人的优秀经验成果。本指南将带你从新手起步,逐步掌握利用该排行榜提升技能的方法,开启高效的开源学习…

USDA预测的在250米深度(0、10、30、60、100 和 200 厘米)的 33kPa 和 1500kPa 抽吸量的土壤含水量的土壤分类数据集

USDA预测的在250米深度(0、10、30、60、100 和 200 厘米)的 33kPa 和 1500kPa 抽吸量的土壤含水量的土壤分类数据集

2026/9/5 15:09:32

OpenLandMap Predicted Hapludalfs Probability 简介与Notebook示例 以 250 米分辨率预测的 6 个标准深度(0、10、30、60、100 和 200 厘米)的 33 千帕和 1500 千帕吸力的土壤水分含量(体积百分比)。训练点基于全球土壤剖面汇编&…

K8S taint(污点)和tolerations(污点容忍)

K8S taint(污点)和tolerations(污点容忍)

2026/9/5 14:59:31

文章目录 一、Taint(污点) `1.1概念` `1.2设置污点` 取消污点 二、tolerations(污点容忍) `2.1概念` `2.2示例` 三、Node 和 Pod 对于污点与容忍基本概念 参考资料 一、Taint(污点) 1.1概念 节点亲和性是 Pod 的一种属性,它使 Pod 被吸引到一类特定的节点 。 这可能出…

0904晨间日记

0904晨间日记

2026/9/5 14:09:29

# 0904晨间日记 - 关键词 - 上午- 移动硬盘- 昨天晚上那个散热器忘记关闭了- 早晨去看整个硬盘都是水- 清理了水,1分钟电脑就卡死- 开机找不到硬盘了- - 产线- 找桌子放置机器- 找插线板接线- 电测找了一个小的- 产线去找,全部领完了- 最后找总务&#x…

备战数据库管理工程师校招:索引、事务、备份恢复核心考点解析

备战数据库管理工程师校招:索引、事务、备份恢复核心考点解析

2026/9/4 2:39:48

每年校招季我都会接触不少准备数据库方向笔试的同学,看到最多的状态就是:简历上写着“熟悉 MySQL”“了解索引优化”,一碰到数据库管理工程师的笔试卷,却在索引、事务、锁、备份恢复这些题目上翻车。网易这套 2018 校园招聘数据库…

数字电路时序基石:深入理解建立时间与保持时间

数字电路时序基石:深入理解建立时间与保持时间

2026/9/4 2:39:49

1. 这不是“背公式”的事:时间参数到底在约束什么你翻过数字电路教材,一定见过这两个词:建立时间(Setup Time)和保持时间(Hold Time)。它们常被并列写在触发器(Flip-Flop&#xff09…

蓝桥杯国赛超声波测距机:从单片机原理到嵌入式系统实战

蓝桥杯国赛超声波测距机:从单片机原理到嵌入式系统实战

2026/9/4 2:39:50

1. 项目缘起:从赛题到超声波测距机的诞生第八届蓝桥杯单片机设计与开发国赛的题目,我至今记忆犹新。它没有直接给出一个花哨的名字,而是用“超声波测距机”这个朴实无华的功能描述,精准地勾勒出了考核的核心。对于当时备赛的我而言…

大一新生新电脑上手指南:从系统配置到编程入门

大一新生新电脑上手指南:从系统配置到编程入门

2026/9/5 11:09:14

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

微信小程序+SpringBoot+MySQL校园报修系统实战

微信小程序+SpringBoot+MySQL校园报修系统实战

2026/9/5 11:09:14

简介:本资源是一套面向高校计算机专业本科生的毕业设计实战项目,基于微信小程序SpringBootMySQL技术栈构建宿舍报修系统,解决传统纸质报修流程效率低、信息易丢失、响应不及时等管理痛点,适用于校园信息化课程设计、毕设开发与全栈…

校园宿舍报修系统:微信小程序+SpringBoot+MySQL实战

校园宿舍报修系统:微信小程序+SpringBoot+MySQL实战

2026/9/5 11:09:14

简介:本资源是一套面向计算机专业本科生的毕业设计实战项目,基于微信小程序前端、SpringBoot后端与MySQL数据库构建宿舍报修管理系统,解决高校后勤维修流程中信息分散、响应滞后、人工登记易错等实际问题。压缩包共744个文件,含10…

远程协作的工作台整理

远程协作的工作台整理

2026/9/3 6:56:24

远程协作的工作台整理远程协作的核心不是再加一个工具,而是让交接信息足够完整。异步任务要写明目标、输入位置、完成标准和需要决策的人。 工作台的最小配置 将日程、待办、代码和沟通入口收拢到少数固定位置;通知按紧急程度分层。工作台不需要模仿办公…

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

2026/9/4 7:42:10

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

2026/9/4 18:49:25

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…