只要导入向量库就行?
这只是最粗糙的 Naive 检索层,生成层的幻觉控制、对齐和格式限制同样决定成败。
检索增强生成 (RAG) 不是简单的向量数据库查询,而是一套将异构知识、动态语义、推理控制与生成对齐统一的认知工程系统。
奠定检索增强生成的基本认知,明确学术定义与企业级定义。
这只是最粗糙的 Naive 检索层,生成层的幻觉控制、对齐和格式限制同样决定成败。
不是。多模态 RAG(Multimodal RAG)可以直接对表格、图表、甚至整页 PDF 进行跨空间表征检索。
不是。Agentic RAG 将检索作为工具,通过规划(Planning)与反思(Reflection)循环,使系统可动态适应多步骤和自纠错。
解析 Naive RAG(传统朴素 RAG)在真实企业场景中的四大痛点与崩溃点。
朴素 RAG(Naive RAG)是一个经典的线性单向流。这种架构在处理复杂业务文档时,几乎每个节点都是崩溃点:
由于语言的多义性,相似度检索常常引入大量无关的背景碎片,导致生成层受到干扰甚至被“带偏”(带偏幻觉)。
固定长度切片(如 512 tokens)强行切断了前后文逻辑,使得跨段落的连续概念在向量空间中难以聚合检索。
面对“这份产品手册中所有关于安全规范的共性要求是什么”这类问题,朴素 RAG 无法通过局部的 K 个 Chunk 回答,因为答案散落在全文中。
朴素 RAG 无法自主评估检索质量。如果检索出来的东西是不相关的,它也会直接生成;它没有反思、多轮重试和路由机制。
纵览 RAG 发展的三次浪潮以及当代模块化 RAG 的层次架构体系。
Cognitive InterfaceLogic & RoutingRetrieval & AlignmentKnowledge StructuringFoundation & DB深入拆解 Advanced RAG 中的前后处理技术,突破朴素检索的极限。
Query Rewrite:使用轻量语言模型将用户口语化提问转换为 3-5 个不同角度的检索式。
HyDE(Hypothetical Document Embeddings):先让 LLM 生成一份假设性“伪答案”文档,用这个伪答案的向量去检索真实文档,解决问题与答案在向量空间中的不对称问题。
将基于关键词匹配的 BM25 与基于语义距离的 Vector Search 进行融合,通过 RRF(Reciprocal Rank Fusion) 或倒数排序融合算法合并结果,兼顾专有名词精确匹配与泛泛语义理解。
Sentence Window Retrieval:检索时只匹配单句(向量表征更纯净),生成时动态滑移将该单句前后的上下文(如前后各 3 句)拼入 Prompt。
Parent-Child Chunking:将文档分为大块(Parent,用于生成上下文)和内嵌的小块(Child,用于被向量检索匹配)。一旦命中子块,自动返回父块。
向量数据库只做粗筛(例如召回 Top-50),再使用双塔交叉编码器(Cross-Encoder Reranker)计算细致的深度交互得分,重排并截取 Top-5。
Context Compression:使用 LLMLingua 等工具对冗余的检索文本进行压缩,剔除废话,保留关键信息,节省 Token 成本并防止“长文本迷失”。
解决图表、截屏、扫描件等无法被传统文本分块表征的场景痛点。
流程:PDF/图片 → OCR解析文字 → 目标检测定位表格与图表 → 使用 VLM(如 GPT-4o)将图表转为文字描述 (Captioning) → 将所有文本拼接并切块 → 传统文本 Embedding 索引。
流程:PDF 页面直接渲染为高清图片(例如 150 DPI)→ 送入视觉编码器 (如 SigLIP) → 输出图像的补丁级多向量表征 (Patch-level Multi-vector Embeddings) → 用户输入文本直接使用相同的语言模型投射到共享向量空间 → 运行晚期交互 (Late Interaction) 匹配计算。
这种方法直接通过视觉机制定位图片或文档中的表格细节,省去了 OCR 和分块步骤,索引构建速度提升近 20 倍。
突破被动单次检索,赋予系统多步路由、动态评估和自主订正的能力。
LangGraph 核心范式:采用集中式状态图 (State Graph)。图中的节点是函数/LLM,边(Edges)控制控制流。整个状态(State)在图的执行过程中是全局共享、互斥修改的。它提供了强大的人工在环 (Human-in-the-loop)能力,可以中断 Agent 检索并允许用户手动修改检索参数或进行回滚。
LlamaIndex Workflows 核心范式:采用事件驱动架构 (EDA)。系统解耦为一组独立自治的步骤(Steps),各个步骤不共享集中式的控制流,而是通过发送和订阅自定义的 **Event** 来决定下一步。这种去中心化机制使得高度并发、异步并行的多路径检索(例如同时查询向量库和 Web 搜索)开发变得异常轻松且易于扩展。
Self-RAG 与纠错环路:RAG 不需要无脑生成。自反思环路会使用微调模型或 Prompt 规则输出 Critique 标签:
1. Is_Retrieval:用户问题是否真的需要检索?
2. Is_Relevant:召回的 Chunk 和问题是否相关?若不相关,重新检索(重写 Query)。
3. Is_Supported:生成的答案是否完全由召回的 Chunk 支持(控制幻觉)?
4. Is_Useful:回答是否真正对用户提问有用?
解决传统 RAG 无法处理跨文档实体聚合和全域总结性查询的技术痛点。
大模型扫描所有原始 Text Chunks,抽取包含 (Entity_A, Relation_Label, Entity_B, Metadata) 的三元组,并记录关联的原文来源。
将重复的实体合并,使用图嵌入和实体对齐技术解决同一概念在不同表述下的指向问题(如“OpenAI”与“GPT开发公司”的归并)。
使用 Leiden 等社群检测算法,根据拓扑结构紧密度将图谱划分为多级的社区(Communities)。每一个社区是一个高度聚合的实体与关系簇。
针对每一个检测出来的社区,用 LLM 读取其内部的所有实体、关系及对应原文片段,撰写一份结构化摘要报告。这组报告代表了该子域的宏观知识总结。
当用户提问属于全局主旨性问题(如“公司的供应链体系存在哪些核心风险点?”):
1. Map 阶段:将问题发送给所有相关的社区摘要报告,各报告并行输出本小域的子回答及重要性得分;
2. Reduce 阶段:按得分重排,将高分回答组合后送入 LLM 生成最终的全局总结回答。
当用户提问属于特定具体问题(如“供应商 A 去年交付的产品质量如何?”):
1. 通过向量检索定位“供应商 A”这个种子实体节点;
2. 沿其关联的关系边拉取周边实体、元数据,并拉取直接关联的原始文本 Chunk;
3. 将这些混合的拓扑与文本碎片拼入 Context 产生精准回答。
面对具体的企业级落地需求,应如何进行理性的技术选型与折衷?
| 评估维度 | 朴素/高级 RAG | 多模态 RAG (ColPali型) | Agentic RAG | GraphRAG (Leiden型) |
|---|---|---|---|---|
| 查询复杂度 | 单点事实问答 (Q&A) | 图表、图像与视觉排版问答 | 多步骤、探索性复杂任务规划 | 全局关系分析、跨实体宏观总结 |
| 检索时延 (Latency) | 极低 (0.5s - 1.5s) | 较低 (1.0s - 2.0s) | 高 (多轮思考,数秒至数十秒) | 高 (特别是 Global Search 多轮 Map-Reduce) |
| 建索引成本 (Build Cost) | 极低 (纯文本向量转换) | 中等 (GPU 渲染页面并生成多向量) | 低 (通常依赖现有文本索引) | 极高 (构建时需调用大量 LLM 提取并总结) |
| API 运行成本 (Run Cost) | 低 | 中等 (需要处理多向量表示) | 中高 (多步循环和自纠错思考) | 中高 (Reduce 阶段汇总大量社区报告) |
| 存储与数据库依赖 | 传统向量数据库 | 高性能向量数据库 (需支持多向量匹配) | 向量库 + 运行态状态存储 | 图数据库 (Neo4j) + 向量库 |
| 适合业务场景 | 客服知识库、API 常用问答 | 财报分析(含大量图表表格)、工程图纸 | 数据对比分析、需要调用外部 API 的系统 | 人物关系梳理、供应链影响链推演、行业综述 |
构建生产级 RAG 系统的核心拼图与前沿工程范式。
Milvus / Qdrant:支撑数十亿级别稠密与稀疏向量检索的分布式底座;PGVector:在既有 PostgreSQL 关系数据库上通过 scram-sha-256 极速扩展的向量检索插拔层。
Neo4j:GraphRAG 核心依赖,支撑实体关系图谱持久化、子图遍历以及图分析计算(如社群划分与度数中心性计算)。
LlamaIndex / LangChain:标准的数据连接器(Connectors)与检索接口;LangGraph:为多步骤 Agentic RAG 提供可阻断、可回滚的状态流控制。
SigLIP / ViT-L:提供多模态共享向量底座;ColPali 扩展库:使传统检索器能直接通过图像感知 PDF 的物理排版位置。
DSPy 框架:取代手写硬编码 Prompt,通过 Signature 声明输入输出,用 MIPRO 优化器在标注数据集上自动“编译”出最佳的 Prompt 及小样本示例。
Ragas / TruLens:实现 Faithfulness(忠实度)、Answer Relevance(相关度)和 Context Recall(召回度)的三元评估体系。
规避在企业级 RAG 落地应用中常犯的“致命”反模式。
虽然当今模型(如 2M tokens 窗口)可以塞下整本书,但在大篇幅上下文的“中间段落”,模型的注意力提取和忠实度(Lost in the middle)会剧烈滑坡。RAG 不是大窗口的替代品,而是保证模型注意力集中和事实落地的强约束手段。
在处理含有大量跨页表格、双栏排版、嵌套公式的复杂 PDF 时,按每 512 字暴力的硬切,会导致表格结构支离破碎,向量空间彻底混乱。工业界必须在索引前使用专门的布局分析(Layout Analysis)或多模态表征(如 ColPali)。
如果使用大模型提取实体和关系时不加类型限制和阈值控制,LLM 会提取出“苹果-是-水果”“水果-有-颜色”等大量常识性的稀疏垃圾边,导致知识图谱极速膨胀,不仅带来千万级别的 Token 账单,还会污染 Leiden 社区划分效果。
将十几个甚至数十个粗糙的 RAG API 作为智能体的工具,在推理时由于模型路径分叉增多,容易陷入“反复检索-失败-换词再检索”的无限死循环。应采用受控的策略路由或事件驱动的分层步骤限制。
微软 GraphRAG 的 Global Search 在每一次提问时都要扫描多层社区报告,如果图谱规模巨大,这意味着要触发成百上千次的 LLM 串并行调用,首字返回时间(TTFT)可能高达数分钟。对于实时智能客服等高时效场景,这是一种灾难性的反模式,应结合 Local Search 或预构建的多级摘要库。
向量检索回答的是“语义相似度”,它无法处理“找出上个季度净利润同比增长最高的三个子公司”这种需要确定性求和、对比或排序的计算问题。这类问题必须交由 Text-to-SQL 工具或预计算好的数据库逻辑层来回答。
客观衡量一个 RAG 系统工程落地完成度的成熟度指标。
| 验收维度 | 不合格信号 | 合格证据 |
|---|---|---|
| 语义准确度 (Faithfulness) | 回答中夹杂了召回源文本中不存在的脑补事实 | 大模型回答的所有实质论点均能追溯并锚定到具体的引用 Chunk 路径 |
| 检索召回率 (Context Recall) | 用户询问了文档中确有记载的内容,但检索器未过滤出来 | 人工标注的测试黄金数据集(Goldens)端到端召回率高于 92% |
| 系统端到端时延 | 首字返回时间 (TTFT) 大于 5 秒,或者全局总结检索超时 | 通过流式输出、并发 Map 优化、局部子图缓存将 TTFT 控制在 2 秒以内 |
| 多模态版面还原度 | 表格中的单元格数值在回答中产生串行或空缺 | 对于含有复杂三线表、多列网格的图片,定位准确率与数据读取正确率完全一致 |
检验你的 RAG 核心知识储备,提供一手原始论文来源。
| Chunking | 将原始文档按字数、标记或物理版面切分成语义上相对完整的片段。 | Rerank | 第二阶段打分算法,用于细致评估粗筛选文档和用户提问的深层交叉注意力。 |
|---|---|---|---|
| Late Interaction | 在匹配时保持词/Patch级别的向量进行矩阵最大相似度相加,保留底层细节语义。 | Self-RAG | 在生成过程中通过生成控制 Token 引导大模型自主判定何时检索、如何反思。 |
| Leiden Algorithm | 一种通过优化模块度来检测复杂网络社群的算法,GraphRAG 的聚类核心。 | Map-Reduce | 一种将大任务拆分为子任务(Map)计算并重构合并结果(Reduce)的计算模式。 |
| DSPy | 声明式提示词编程框架,将提示词工程化并实现可微分/可编译优化。 | PGVector | 在关系数据库中原生实现基于 HNSW/IVFFlat 的低延迟向量检索工具。 |