当企业知识沉睡于数据孤岛,大模型却在幻觉中徘徊。RAG不只是技术,更是打通知识与智能的关键桥梁。


本文分享企业级RAG系统实践经验,从三个方面展开:实践流程架构及特点、理论依据、实践总结与展望。通过从Naive RAG到Agentic RAG的演进路径,探索如何构建真正赋能企业的知识型AI应用。


RAG实践流程架构

图片

1. 数据工程

文档加载

数据是RAG系统的基础,高质量的数据加载流程至关重要:

  • 多源数据支持:企业数据分散在不同格式中,需支持TXT、MD、PPT、PDF、Word、Excel、图片、网页等多种格式

  • 数据清洗策略

  • 结构化清洗:表格数据规范化、列名标准化

  • 非结构化清洗:去除特殊字符、HTML标签、冗余信息

  • 语言标准化:统一编码、处理多语言文档

  • 元数据提取:自动提取文档创建时间、作者、版本等关键元数据,便于后续检索和溯源

  • 增量更新机制:建立文档变更检测机制,只处理变更部分,提高系统效率

文档分块

分块质量直接影响检索精度和生成质量:

  • 字符分块:按固定字符数量切分,简单但可能破坏语义完整性

  • 段落分块:按自然段落切分,保持基本语义单元

  • 语义分块:基于语义边界智能切分,保证每个块的语义完整性

  • 智能分块

  • 递归分块:大块先分,再细分

  • 滑动窗口:保证上下文连贯性

  • 重叠分块:相邻块保留一定重叠,避免信息丢失

  • 分块粒度自适应:根据文档类型和内容复杂度动态调整分块大小

2. 文档嵌入

嵌入模型选型

  • 通用嵌入模型

  • BGE-M3:多语言支持强,中文表现优异

  • text-embedding-3-small:OpenAI小型嵌入模型,性能与成本平衡

  • text-embedding-3-large:高精度需求场景

  • GTE-large:开源模型中表现优异

  • E5-large-v2:微软开源模型,英文表现突出

  • 模型选择考量因素

  • 语言支持:中英文或多语言需求

  • 维度大小:低维(384)到高维(1536)权衡

  • 推理速度:生产环境吞吐量要求

  • 部署成本:云服务或本地部署成本

嵌入方式及算法

  • 密集嵌入(Dense Embedding)

  • 优势:捕捉语义相似性,处理同义词

  • 代表:Transformer类模型生成的向量

  • 稀疏嵌入(Sparse Embedding)

  • 优势:精确匹配关键词,处理专业术语

  • 算法:TF-IDF、BM25

  • 混合嵌入(Hybrid Embedding)

  • 密集+稀疏结合,兼顾语义和关键词匹配

  • 实现方式:ColBERT、SPLADE等

专用领域嵌入模型微调

  • 领域适应微调

  • 对比学习:构建领域内正负样本对

  • 蒸馏学习:从大模型蒸馏领域知识

  • 微调数据构建

  • 领域问答对:构建专业领域QA对

  • 相似度标注:人工标注文档相似度

  • 评估指标

  • 检索准确率:P@k, R@k, MRR

  • 相似度一致性:与人工判断的一致性

3. 文档索引建立

父子文档索引

  • 节点-句子窗口递归索引器

  • 构建文档层次结构,从章节到段落到句子

  • 优势:保留文档结构信息,支持多粒度检索

  • 实现:存储父子关系,检索时可回溯上下文

分层索引

  • 层次节点解析器(RAPTOR)

  • 按语义层次构建索引树

  • 检索时先定位大块,再精确定位小块

  • 优势:提高检索效率,降低计算成本

多表示索引

  • 多视角表示

  • 同一文档使用不同嵌入模型表示

  • 不同粒度的文档块并行索引

  • 优势:提高检索鲁棒性,应对多样化查询

4. 向量数据库

数据库选型

  • 开源自部署选项

  • Milvus:分布式架构,高吞吐量,企业级支持

  • Weaviate:模块化设计,支持多模态

  • Qdrant:Rust实现,性能优异,过滤功能强大

  • Chroma:轻量级,Python原生支持,快速原型

  • FAISS:Meta开源,专注高性能向量检索

  • 云服务选项

  • Pinecone:全托管,零运维,按需扩展

  • ElasticSearch/OpenSearch:成熟生态,全文检索+向量能力

  • 选型考量因素

  • 数据规模:百万级、亿级、百亿级

  • 查询QPS:高并发需求

  • 元数据过滤:结构化数据过滤能力

  • 运维成本:自建vs云服务

  • 集成难度:与现有系统兼容性

索引算法选型

  • 精确检索

  • FLAT:暴力计算,精确但计算量大

  • 近似检索

  • IVF:倒排索引,空间分区

  • HNSW:层次化小世界图,高效近似检索

  • LSH:局部敏感哈希,适合超大规模数据

  • 量化算法

  • SQ:标量量化,简单压缩

  • PQ/OPQ:乘积量化/优化乘积量化,大幅降低存储

  • 选型考量

  • 精度vs速度:召回率与查询时间权衡

  • 内存消耗:有限资源环境考量

  • 构建时间:索引创建和更新效率

5. 检索前处理

查询构建

  • text2sql

  • 将自然语言转换为SQL查询关系型数据库

  • 实现:基于LLM的SQL生成,结合模板和约束

  • text2cypher

  • 将自然语言转换为Cypher查询图数据库

  • 应用:知识图谱查询,关系推理

  • 自查询检索器

  • 自动构建向量数据库过滤条件

  • 元数据过滤:时间范围、文档类型、部门等

  • 混合查询:向量相似度+结构化条件

查询优化

  • 查询重写

  • 多查询生成:一个问题生成多个变体查询

  • 退一步查询:简化复杂查询,提高召回率

  • RAG-Fusion:多查询结果融合排序

  • 查询分解

  • 复杂问题拆分为多个简单子问题

  • 子问题独立检索后结果合并

  • 查询澄清

  • 模糊问题生成澄清性子问题

  • 交互式引导用户明确意图

  • 查询扩展

  • HyDE(Hypothetical Document Embeddings):

  • 先用LLM生成假设性文档

  • 对假设文档而非原始查询进行编码

  • 提高复杂问题的检索效果

查询路由

  • 逻辑路由

  • 基于问题类型选择合适数据源

  • 实现:规则引擎或LLM判断

  • 语义路由

  • 动态选择最佳嵌入模型和索引方式

  • 根据问题特征选择检索策略

  • 工具调用

  • 判断是否需要调用外部工具

  • 工具选择:计算器、API调用、代码执行器等

6. 检索后处理

重排

  • 基础重排算法

  • RRF(Reciprocal Rank Fusion):多源检索结果融合

  • CrossEncoder:对<查询,文档>对重新评分

  • 高级重排方法

  • ColBEAR:细粒度token级别相关性计算

  • RankerGPT/RankLLM:利用大模型进行相关性判断

  • 融合策略

  • RAG-Fusion:多查询结果的排序融合

  • 加权融合:不同来源结果的权重分配

压缩

  • 相关性压缩

  • 保留高相关段落,删除低相关内容

  • 基于相似度阈值过滤

  • 冗余度压缩

  • 检测并合并语义重复内容

  • 实现:聚类或相似度矩阵计算

  • 上下文优化

  • 智能截取关键上下文

  • 保持信息密度最大化

CRAG(Corrective RAG)

  • 主动检索校正

  • 初步检索结果评估

  • 不满足时触发再次检索

  • 多源检索

  • 内部知识库检索失败时

  • 转向外部数据源(如网络)检索

  • 反馈循环

  • 基于检索结果质量调整策略

  • 动态优化检索参数

7. 内容生成

提示词工程

  • 结构化提示模板

  • 角色定义:明确LLM应扮演的角色

  • 任务说明:清晰定义输出要求

  • 格式约束:指定输出格式

  • 上下文增强

  • 检索结果组织:重要信息优先

  • 引用标记:便于溯源

  • 指令分离:区分检索内容和生成指令

  • 思维链(CoT)

  • 引导模型逐步推理

  • 提高复杂问题解答质量

LLM选型

  • 商业模型

  • GPT-4/GPT-4o:综合能力强,成本较高

  • Claude 3.5 Sonnet:推理能力出色,长文本处理优异

  • GPT-3.5-Turbo:性价比高,适合一般场景

  • 开源模型

  • DeepSeek:中英双语能力强

  • Qwen2:阿里开源,中文优势明显

  • Llama 3:Meta开源,社区支持广泛

  • Mistral:小参数量高性能

  • 选型考量因素

  • 语言能力:中文/英文/多语言

  • 推理能力:逻辑性、一致性

  • 部署环境:云API/本地部署

  • 成本控制:API调用成本/硬件投入

  • 上下文窗口:8K/16K/32K/128K

输出解析

  • 文本格式化

  • 结构化段落

  • 重点突出

  • 逻辑组织

  • JSON输出

  • 结构化数据返回

  • 便于前端渲染和处理

  • 格式校验和纠正

  • Markdown渲染

  • 富文本展示

  • 表格、列表等高级格式

  • 代码块语法高亮

工具调用

  • Function/Tool Calls

  • 模型判断并调用外部函数

  • 数据查询、计算、API调用等

  • MCP(Multi-modal Conversational Prompting)

  • 多模态交互

  • 图表生成、数据可视化

专用领域生成模型微调

  • 指令微调

  • 构建领域指令数据集

  • LoRA/QLoRA低参数微调

  • RAG增强微调

  • 结合检索结果进行微调

  • 提高领域知识准确性

  • RLHF/DPO

  • 基于人类反馈的强化学习

  • 直接偏好优化

主动生成

  • Self-RAG

  • 模型自评估生成内容质量

  • 不满足时触发重新检索

  • RRR(Retrieve, Rerank, Rewrite)

  • 检索、重排、重写三步流程

  • 迭代优化生成质量

8. 评估

检索评估

  • 精确率(Precision)

  • 检索结果中相关文档的比例

  • P@k:前k个结果中的精确率

  • 召回率(Recall)

  • 相关文档被成功检索的比例

  • 衡量检索系统的覆盖能力

  • F1分数

  • 精确率和召回率的调和平均

  • 综合评估检索效果

  • MRR(Mean Reciprocal Rank)

  • 首个相关结果排名的倒数平均

  • 评估排序质量

生成评估

  • 自动评估指标

  • BLEU/ROUGE:基于n-gram的文本相似度

  • METEOR:考虑同义词的评估指标

  • BERTScore:基于语义的评估

  • 安全性评估

  • 幻觉检测:验证生成内容与事实一致性

  • 有害内容过滤:确保输出符合安全标准

  • 人工评估

  • 专家评审:领域专家质量评估

  • A/B测试:不同系统对比测试

  • 业务指标

  • 用户满意度:NPS/CSAT

  • 解决率:问题一次性解决比例

  • 效率提升:与传统方式对比的时间节省

实践流程理论依据

架构

图片

流程

1、索引构建(离线)

  • 数据加载:从各个来源整合数据。

  • 文档切块:按照一定策略切块文档,如固定大小,语义分块等。

  • 向量化与存储:使用Embedding模型(bge系列等)将文档转换成向量,将向量即文档信息存储到向量数据库(腾讯云,Milvus,Faiss)等。

2、在线检索(在线)

  • 检索:使用相同Embedding模型转换用户输入,并从向量数据库检索相似TopK文档(余弦相似度或者欧氏距离)。

  • 生成:将用户输入与检索到的toK文档组织成Prompt,输入LLM生成回答。


Advanced RAG

架构

图片

流程

基于Navie Rag增加两个步骤,包含5个阶段:Indexing -> Pre Retrieval -> Retrievel -> Post Retrievel -> Generation,旨在解决文档召回的质量和准确率。Navie RAG属于Advanced Rag的一个特化,即Pre Retrievel和Post Retrievel为空。

1、Pre-Retrieval

预检索处理: 侧重数据索引优化。

  • 索引数据优化

  • 增强数据密度:如利用LLM清洗冗余信息,元数据增强(条件过滤等)。

  • 增强索引语义: 如预生成chunk快的假设性问题,提升检索对称性,建立如关键词搜索(BM25),向量检索或图数据库。尝试多种chunk分块策略(固定大小,递归,语义分块)。

  • Embeddings模型优化: 针对特定领域数据对模型进行微调,提升语义匹配精度。

  • Query增强

  • Query translation: query转换,用于用户的不确定性,用户可能会输入模糊表达,或query与index文档不在一个语义空间,或query过于复杂的情况,因此需要query转换。如query-rewrite,query-expansion等。

  • Query enhancement: query增强,增强或者扩大用户输入的query语义,如: HyDE(假设文档增强),Step-Back Prompting(回退一步prompt)。

  • Query decomposition: query分解,把用户的复杂query分解成多个可管理的子问题,引导模型逐步解决各个子问题。如Answer Recursively(递归回答,迭代),Answer Individually(独立回答,分解后并行回答)。



2、Post-Retrievel

后检索处理: 侧重数据结果的二次加工&过滤

  • 重排序Rerank

对检索出的文档做更精细的评估,将真正最匹配意图的文档排列到前面,尽可能减少噪声

  • 上下文压缩Prompt Compression

若检索出大量文档,在输送给LLM之前可能还需要对文档做裁切,仅保留最关键核心的内容

Modular RAG ☆(核心依据)

架构

图片

流程

模块化RAG,将 RAG 系统分为 Module Type、Module 和 Operators 三层结构。每个 Module Type 代表 RAG 系统中的一个核心流程,包含多个功能模块。通过整个 RAG 系统变成了多个模块和序列排列组合,形成 RAG 工作流。整体有7个部分:Indexing, Pre Retrieval, Retrievel, Post Retrievel, Memory, Generation, Orchestration. 这种范式在基于Advanced RAG的横向架构上引入了纵向的结构,即Module和Operators。

Agentic RAG

架构

Single-Agent Agentic RAG

该框架核心是一个系统决策中心的Router Agent,该Agent动态处理信息检索,集成操作,比较适用于多检索源的简单问答场景。

图片

Multi-Agent Agentic RAG

为Single-Agent Agentic RAG架构的演进版本,用多个专用代理来细化更复杂的工作流和不同的查询类型。核心Router Agent下又挂接了多个检索Agent, 如Agent1用于查询结构化数据(Mysql),Agent2用于查询非结构化数据,Agent3用于Web查询或专用API查询等。

图片

Hierarchical Agentic RAG

分层代理RAG,为Multi-Agent Agentic RAG架构的拓展,将整个系统分为多个层级的Agent,由顶级Agent驱动子Agent,并聚合子Agent的结果。

图片

Agentic Corrective RAG

Corrective RAG的核心是他可以动态评估检索到的文档并纠正查询,提升检索文档的质量。

Agentic Corrective RAG系统建立在5个关键Agent上。

  1. Context Retrieval Agent: 负责从数据库中检索相关上下文。

  2. Relevance Evaluation Agent: 负责评估检索到的文档的相关性,并标记出不相关或不明确文档并采取纠正措施。

  3. Query Refinement Agent: 重写query增强检索的Agent。

  4. External Knowledge Retrieval Agent: 当Context Retrieval Agent检索的上下文不足时,从其他备用数据源检索数据(如Web 检索)。

  5. Response Synthesis Agent: 组织响应Agent。

图片

Adaptive Agentic RAG

自适应Agent RAG, 与上述Modular RAG中的Adaptive retrieval一样,语义上都是在各个环节引入了LLM判断,并在引入LLM评测实现Loop自迭代。

图片

Graph-Based Agentic RAG

Graph-Based Agentic RAG在检索中引入了图检索,合并图数据及其他检索数据增强检索效果。

图片

流程(思想)

Agentic RAG:架构上引入Agent的思路,实现动态决策(如是否检索、工具调用)和多轮迭代优化。相比上述提到的几种RAG,Agentic RAG将实际输入处理的多样性交给LLM处理,可以解决更复杂的问题。

Agent的核心部件:LLM + Memory + Planning + Tools


总结

企业级RAG系统的落地是一个复杂的系统工程,需要从简单到复杂、从单一到模块化、从静态到动态的演进过程。通过本文提供的实践框架,我们可以看到RAG技术已经从最初的Naive RAG发展到更加复杂的Modular RAG和Agentic RAG架构。

RAG技术演进路径

从Naive RAG到Advanced RAG:通过增加Pre-Retrieval和Post-Retrieval环节,解决了简单RAG在文档召回质量和准确率方面的局限性。

从Advanced RAG到Modular RAG:将RAG系统模块化为多个功能组件,形成灵活的工作流,使系统更具可扩展性和适应性。Modular RAG将系统分为Module Type、Module和Operators三层结构,每个核心流程都可以包含多个功能模块,通过组合形成完整的RAG工作流。

从Modular RAG到Agentic RAG:引入智能Agent作为决策中心,实现动态处理信息检索和集成操作,进一步提升系统的智能性和自适应能力。

企业实践的关键思考

  1. 模块化思维:企业在实施RAG系统时,应采用模块化设计思想,将复杂系统拆分为可独立优化的功能模块,便于迭代和扩展。

  2. 自适应机制:引入LLM作为决策中心,实现系统的自适应能力,能够根据不同查询类型和内容动态调整检索策略和生成策略。

  3. 多源融合能力:现代企业数据分散在多个系统中,RAG系统需要具备多源数据融合能力,包括结构化数据库、非结构化文档、知识图谱等。

  4. 闭环优化:建立评估-反馈-优化的闭环机制,通过持续监控系统性能,不断优化各个环节的效果。

  5. Agent协作框架:对于复杂业务场景,可考虑采用多Agent协作框架,如Hierarchical Agentic RAG或Multi-Agent Agentic RAG,将不同职责分配给专门的Agent处理。

未来发展方向

随着大模型和向量检索技术的不断进步,企业级RAG系统将向以下方向发展:

  1. 更深度的业务集成:RAG系统将与企业核心业务流程深度集成,成为员工和客户交互的智能中枢。

  2. 多模态RAG:扩展到图像、音频、视频等多模态内容的检索和生成,提供更全面的知识服务。

  3. 自学习能力:系统能够从用户交互中学习,自动优化检索策略和生成质量,减少人工干预。

  4. 知识推理增强:结合知识图谱和推理能力,不仅检索已有知识,还能进行知识推理和创新。

  5. 分布式协作:多个专业领域RAG系统协同工作,共同解决跨领域复杂问题。

企业级RAG系统的成功落地不仅需要先进的技术架构,还需要与企业业务深度结合,持续迭代优化,最终实现AI与人类专家知识的完美融合,创造真正的商业价值。通过从Naive RAG到Agentic RAG的演进,企业可以构建出更加智能、高效、准确的知识服务系统,为数字化转型提供强大支撑。

Work Less, Earn More, Enjoy Life.