在工业级落地场景中,RAG(检索增强生成)系统已经从最初的“LangChain 简单拼装版”演进为一套高并发、高可用、极度追求确定性的复杂分布式微服务架构

工程的 RAG 核心哲学是:不能寄希望于大模型本身变聪明,而是要通过极其严密的工程管道,把最干净、最精准的证据喂到大模型嘴里

整个架构可以划分为两个平行的核心生命周期:「离线海量数据治理流水线」「在线极致弹性检索生成流」

🏗️ 工业级 RAG 全景架构图

生产拓扑图

========================================================================================================================
                                      【 阶段一:离线海量数据治理与高保真资产化流水线 】
========================================================================================================================
 原始非结构化输入                分布式多线程解析集群                 语义边界自治切片                  双通道混合向量化持久化
  ┌───────────┐      RPC      ┌──────────────────────┐    流式    ┌──────────────────────┐   并行    ┌──────────────────┐
  │ PDF/扫描件│ ────────────>  │  MinerU / LayoutLM   │ ────────>  │  SemanticSplitter    │ ────────> │ BGE-M3 / OpenAI  │
  └───────────┘               │ 恢复标题树/段落/公式 │            │ 动态长短控制/重叠15% │           └────────┬─────────┘
  ┌───────────┐               ├──────────────────────┤            ├──────────────────────┤                    │
  │ 图片/图表 │ ────────────> │  OCR + VLM 双路理解  │            │ 元数据富化(继承父标题│                    ▼ 
  └───────────┘               └──────────────────────┘            └──────────────────────┘           【 存储引擎集群 】
                                                                                                     ├─ 稠密: Qdrant
                                                                                                     └─ 稀疏: ES (IK分词)
                                                                                                     
========================================================================================================================
                                      【 阶段二:在线极致弹性检索与双阶裁决过滤流水线 】
========================================================================================================================

    [ 用户原生 Query 输入 ]
              │
              ▼
    ┌──────────────────────┐
    │  意图理解与重写模块  │ ──(Session上下文消歧)──> 得到独立语义查询词 (Independent Query)
    └─────────┬────────────┘
              │
              ▼
    ┌──────────────────────┐
    │  HyDE 假设性文档生成 │ ──(大模型直觉盲猜)──> 虚构答案 (利用“答案对答案”消除检索空间特征量纲鸿沟)
    └─────────┬────────────┘
              │
              ▼
   ==============【 STAGE 1:分布式多路并发召回层 (Scatter-Gather 散射模式) 】==============
              │
              ├─────────────────────────┬─────────────────────────┬─────────────────────────┐
              ▼                         ▼                         ▼                         ▼
   ┌──────────────────────┐  ┌──────────────────────┐  ┌──────────────────────┐  ┌──────────────────────┐
   │ 1. 稠密向量路 (Dense)│  │ 2. 稀疏文本路(Sparse)│  │ 3. 关系图谱路 (KG)   │  │ 4. 实时联网路 (MCP)  │
   │ 负责语义泛化/隐含关联│  │ 负责术语/型号精确匹配│  │ 负责复杂多跳拓扑推理  │  │ 负责突发热点时效兜底  │
   └──────────────────┬───┘  └──────────────────┬───┘  └──────────────────┬───┘  └──────────────────┬───┘
                      │                         │                         │                         │
                      └─────────────────────────┼─────────────────────────┴─────────────────────────┘
                                                ▼ (千级候选片段)
   ==============【 STAGE 2:双阶精细化脱水裁决层 (Gather 聚集模式) 】==============
                                                │
                                                ▼
                                   ┌──────────────────────────┐
                                   │  第一阶:RRF 倒排数融合  │ ──> 抹平量纲偏差,合并多路去重
                                   └────────────┬─────────────┘
                                                │ (Top 100 粗排候选)
                                                ▼
                                   ┌──────────────────────────┐
                                   │  第二阶:Rerank 交叉精排 │ ──> Cross-Encoder深度Attention计算,斩断噪声
                                   └────────────┬─────────────┘
                                                │ (Top 5 高置信度黄金证据)
                                                ▼
   =======================================【 阶段三:大模型自适应编排与输出防护网 】======================================
                                                │
                                                ▼
                                   ┌──────────────────────────┐
                                   │   Context 科学位置排列   │ ──> 黄金证据置于头尾,击碎“Lost in the Middle”魔咒
                                   └────────────┬─────────────┘
                                                │
                                                ▼
                                   ┌──────────────────────────┐
                                   │   大模型推理生成 (LLM)   │ ──> 依据纯净上下文严格生成
                                   └────────────┬─────────────┘
                                                │ (激活流式通道 SSE)
                                                ▼
                                   ┌──────────────────────────┐
                                   │   网关级安全与熔断防护垫 │ ──> 实时拦截“幻觉复读机”与违规敏感词
                                   └────────────┬─────────────┘
                                                │
                                                ▼
                                      [ 最终高可信度确定性答案 ]

🛠️ 核心架构演进:全链路的五个关键工程阶段

阶段一:离线海量数据治理流水线(进数)

离线数据往往是数百万页的非结构化合规文件、财报、扫描件。离线层通常基于大规模分布式任务调度(如 Flink/Spark)来跑。

  • 版面语义重建 (Layout Analysis):拒绝直接提取纯文本。使用自研或顶尖的开源解析引擎(如 MinerU、LayoutLM),配合 OCR + VLM(视觉语言模型) 双通路理解。它能把 PDF 中的“标题层级、段落边界、表格、公式、图片”还原为高结构化的 Markdown,让展示型文档变成可计算的知识。

  • 语义自治切片 (Semantic Chunking):抛弃“固定每 500 字切一刀”的死板做法。系统会沿着 Markdown 的章节边界、自然段落、主题转换点动态切分。短块自动同域合并(避免信息被稀释),长块二次切分,并强制让每个子块继承父标题和文件名等元数据(Metadata),确保每个 Chunk 都是“最小可解释单元”。

阶段二:在线意图理解与改写层(入局)

用户的原生提问往往是干瘪、语病、或者上下文不全的(例如:“刚才那个怎么配?”)。

  • Query 理解与消歧:通过轻量化微调的大模型,结合历史对话 Session,把用户的口语化提问重写为语义饱满、指代明确的独立查询词(Independent Query)

  • 假设性文档生成 (HyDE):这是提升召回率的秘密武器。在检索前,先让大模型根据问题盲猜并生成一段高度相关的“虚构答案”。拿这个虚构答案去跟知识库做向量匹配,其效果远比拿干瘪的问题去匹配要好得多(因为实现了“答案对答案”的同质空间检索)。

阶段三:分布式多路并发召回(捞鱼)

正如前文所提及,线上使用 Scatter-Gather(散射-聚集)模式,利用多线程或异步协程(asyncio / RPC 线程池),同时并发调用多路检索服务。

  • 稠密向量路:去 Qdrant / Milvus / Elasticsearch 向量集群里捞取语义相近的片段。

  • 稀疏文本路:去倒排索引里强匹配专业术语、特有型号、工号。

  • 关系图谱路:在图数据库中根据实体关系进行多跳推理,捞取血缘、股权、级联关系。

  • MCP 联网路:去站内搜索引擎或外部互联网捞取最新的时效性信息。

阶段四:统一评分空间融合与重排序(优中选优)

多路并发捞上来可能多达 100 到 200 个文本片段,必须进行极速脱水。

  • 粗排融合 (RRF):由于向量分数、BM25 分数、联网相关度分数的量纲完全不同,绝不把分数直接相加。而是采用 倒排倒数融合算法(Reciprocal Rank Fusion),只看片段在各自通路里的排名次序计算融合总分,完美抹平分数的鸿沟,并在此阶段执行数据权限过滤(ACL)。

  • 精排裁决 (Cross-Encoder Rerank):粗排过滤到前 50 个片段后,动用重型的 Rerank 交叉编码器模型。它会把 (用户问题, 每一个文本片段) 强行拼在一起输入模型,让问题里的每一个字和片段里的每一个字进行注意力机制(Attention)的全面交叉计算。这能彻底斩断前期混入的噪声,挑选出真正的高置信度证据(Top 5)。

阶段五:提示词自适应大模型编排与幻觉拦截(出局)

拿到最精准的 Top 5 证据后,如何喂给大模型也是一门硬核工程。

  • 优化上下文排列(解决 Lost in the Middle 现象):科学研究表明,大模型对长上下文的头部和尾部最敏感,中间部分容易被忽略。因此编排层会把最相关的证据放在 Context 的最前和最后,把相关度稍低的塞在中间。

  • SSE(服务器发送事件)流式动态防护:在 LLM 激活流式输出(Stream)时,网关层并不会把文本直接吐给前端,而是设置了一个轻量级的缓冲区:

    • 幻觉复读机拦截:检测模型是否陷入死循环吐废话,一旦触发立即动态熔断。

    • 安全与敏感词实时过滤:动态过一层安全垫,如果生成内容包含违规词,及时截断并引导转为话术兜底。

🎯 为什么要将 RAG 架构设计得这么复杂?

  1. 绝对的“确定性”治理:大模型天生带随机性,在面对客服、金融、医疗场景时,无法承受哪怕 $1\%$ 的造谣成本。这套架构的本质是“用高度确定的工程管道去对冲高度随机的算法模型”。

  2. 算力与成本的极致压榨:如果把全库几百万字直接塞进长上下文大模型(Long-Context LLM),不仅耗时极长(长上下文推理延迟高),而且 Token 资费会呈几何级数暴涨。通过精准检索出最关键的 2000 字喂过去,不仅响应时间(RT)能控制在毫秒级,还能省下 90% 以上的算力账单

  3. 架构的解耦与可进化性:在微服务架构下,解析、Embedding、向量库、Rerank、LLM 全都是独立的节点。明天市场上出了更好的 Embedding 模型或更便宜的 LLM 接口,工程师可以在原系统完全不停机的情况下,横向热插拔升级单点组件,保证技术栈永远在业界最前沿。

未来展望

CodeGraph的架构是否是RAG演进的方向呢?该如何发展?xdm可以尽情分享评论区哈

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐