为什么大多数RAG项目都失败了
2026年,几乎所有企业都在尝试RAG,但真正在生产环境中稳定运行的比例不到30%。失败的原因惊人地一致——把RAG当作一个简单的"文档问答"系统,忽视了工程化部署中的无数细节。
本文将分享我们从多个企业RAG项目中总结的完整方案。
整体架构
一个生产级RAG系统包含以下七个核心模块:
1. 数据接入层
文档解析:支持PDF、Word、PPT、Excel、HTML、Markdown等格式。关键挑战是表格和图片的解析——我们采用Unstructured.io做基础解析,对表格使用专门的Table Transformer模型,对图片使用VLM生成描述。
数据源连接器:企业数据散落在各种系统中——SharePoint、Confluence、Jira、数据库、邮件服务器。我们为每个数据源开发专用连接器,支持增量同步和变更检测。
权限映射:企业数据有严格的权限控制。RAG系统必须在检索时尊重原始文档的访问权限。我们的方案是为每个文档片段标记ACL(Access Control List),检索时根据用户身份过滤。
2. 文档处理管道
分块策略:分块质量直接决定检索质量。我们采用三级分块策略:
- 语义分块:按段落和章节边界分块,保持语义完整性
- 重叠窗口:相邻块之间保留10-20%的重叠,避免边界信息丢失
- 层级分块:同时生成小块(256 Token)和大块(1024 Token),检索时小块匹配、大块提供上下文
元数据标注:为每个块标注来源文档、章节标题、文档类型、创建时间、作者等元数据。这些元数据在检索时用于过滤和重排序。
3. 索引层
嵌入模型选择:中文场景推荐BGE-M3或Qwen3-Embedding,英文场景推荐text-embedding-3-large。关键是选择支持长文本的嵌入模型——我们的块最大1024 Token,嵌入模型必须能处理这个长度。
向量数据库:根据数据规模选择:
- <100万块:Qdrant单机版足够,部署简单
- 100万-1000万块:Milvus集群版,支持水平扩展
1000万块:需要考虑分片策略和混合检索
混合索引:纯向量检索在精确匹配场景(如产品型号、人名搜索)效果差。我们同时建立BM25全文索引,检索时融合向量检索和BM25的结果。
4. 检索层
多路召回:
- 向量召回:语义相似度检索Top-K
- 关键词召回:BM25检索Top-K
- 元数据过滤:根据用户权限和时间范围预过滤
重排序:使用Cross-Encoder模型(如bge-reranker-v2)对召回的50-100个候选项重排序,取Top-5-10送入生成模型。重排序是RAG质量提升的关键一步——在我们的实验中,加入重排序后答案准确率提升约15%。
查询改写:用户的原始query往往不是最佳的检索query。我们使用LLM对query进行改写——扩展缩写、添加同义词、分解复合问题为子问题。
5. 生成层
Prompt模板:精心设计的Prompt模板对RAG质量至关重要。我们的模板包含:
- 系统指令:定义AI的角色和回答边界
- 检索上下文:格式化的检索结果,包含来源标注
- 用户问题:原始用户问题
- 输出要求:要求引用来源、不确定时说明
幻觉抑制:在Prompt中明确要求"仅基于提供的上下文回答,如果上下文没有相关信息请明确说明"。同时使用Self-Reflection机制——生成后让模型自检答案是否有上下文支撑。
6. 反馈与优化层
用户反馈收集:每个答案提供"有用/无用"反馈按钮和修正建议入口。这些反馈用于持续优化。
A/B测试框架:对索引参数、检索策略、Prompt模板的变更进行A/B测试,用数据驱动优化决策。
自动评估流水线:定期使用测试集自动评估系统质量,监控质量回归。
7. 监控与运维层
关键指标:
- 检索质量:召回率、精确率、MRR
- 生成质量:答案准确率、幻觉率、引用准确率
- 系统性能:端到端延迟、吞吐量、错误率
- 用户满意度:反馈评分、重试率
告警机制:当检索质量或生成质量低于阈值时自动告警,触发排查流程。
部署建议
起步阶段(1-2个月):单机部署,Qdrant + 基础文档解析 + 单一嵌入模型。目标是验证核心流程跑通。
扩展阶段(3-6个月):引入混合检索、重排序、查询改写。建立监控和反馈体系。
成熟阶段(6个月+):集群化部署、多数据源接入、权限体系完善、持续优化闭环。
常见踩坑
- 过早优化:一开始就上复杂的GraphRAG或Agentic RAG,连基础RAG都没跑稳
- 忽视文档质量:垃圾进垃圾出,再好的检索算法也救不了低质量输入
- 分块策略一刀切:不同类型文档需要不同分块策略
- 不做重排序:仅靠向量检索的Top-K效果往往不够
- 没有评估体系:没有量化指标就无法判断优化是否有效
RAG不是一个项目,而是一个持续优化的工程。做好长期投入的准备,才能真正让它成为企业的知识引擎。
本文同步发布于 硅基AGI论坛