Skip to content

RAG 实现详解 v2

基于联网调研的对抗性分析版本,对原有 RAG 架构进行勘误、丰富与升级。聚焦 2025-2026 年 RAG 技术演进。


一、原版问题总结

原版「RAG 实现详解」存在以下需要修正的问题:

  1. 仅介绍传统 RAG:未涉及 GraphRAG、LightRAG、CID-GraphRAG 等演进方案
  2. Chunk 策略过于简化:仅给出「1000-2000 字符,Overlap 200 字符」的经验值,未涉及主题聚类、混合切分等进阶策略
  3. 检索策略单一:仅涉及向量检索,缺少多路召回(Hybrid Search)、Reranker 排序等工业级方案
  4. 缺少最新 benchmark 数据:腾讯优图 2025 年发布了 GraphRAG-Bench,但原版未提及

二、RAG 技术演进全景

技术演进时间线

传统 RAG(2023)
├─ 向量检索 + BM25
├─ 简单 Chunk(固定大小)
└─ 局限:跨文档推理差、上下文碎片化

↓

高级 RAG(2024)
├─ Query 重写(问题补全)
├─ 多路召回(Hybrid Search)
├─ Reranker 精排
└─ 上下文压缩(trim_messages)

↓

GraphRAG(2024-2025)
├─ 知识图谱作为结构化索引
├─ 实体-关系-社区三层检索
├─ Global(全局推理)+ Local(局部精准)
└─ 代表:微软 GraphRAG、LightRAG、腾讯优图GraphRAG

↓

CID-GraphRAG(意图驱动图检索,2025)
├─ 双层意图图谱
├─ 意图匹配 + 语义相似度 双路径
├─ 加权评分融合
└─ 多轮对话上下文理解

↓

Agentic RAG(2025-2026)
├─ Agent 自主决定检索策略
├─ 多知识库动态查询
├─ 自我修正(Self-Correction)
└─ 主动发现知识缺口

三、检索架构:多路召回 + Reranker

原版问题

原版仅介绍「向量检索」,未涉及工业级多路召回和精排方案。

v2 方案:经典三阶检索

第一步:多路并发召回(并行)

┌────────────────────────────────────────────┐
│  BM25 关键词召回(Elasticsearch)           │ → Top-100
│  向量语义召回(FAISS/Milvus)              │ → Top-100
│  知识图谱召回(Neo4j CQL)                 │ → Top-50
└────────────────────────────────────────────┘

第二步:分数归一化与合并

  s_bm25 → min-max 归一化 → [0,1]
  s_vector → min-max 归一化 → [0,1]
  s_kg → min-max 归一化 → [0,1]

  综合分数 = α·s_bm25 + β·s_vector + γ·s_kg
  (α、β、γ 根据业务场景调优)

第三步:Cross-Encoder 精排(Reranker)

  取综合 Top-20 → Cross-Encoder 二轮打分 → 最终 Top-5

  Cross-Encoder 准确率比向量检索提升 15%+

关键修正:Cross-Encoder 不可省略

腾讯优图实验室的实战数据表明:初始检索 Top-100 后使用 Cross-Encoder 精排,可使准确率提升 15% 以上。这是工业级 RAG 的标准配置。

参数配置参考

参数推荐值说明
BM25 Top-K100广召回
向量检索 Top-K100语义召回
图谱检索 Top-K50关系召回
综合归一化权重α=0.3, β=0.5, γ=0.2需 A/B 测试调优
Cross-Encoder 输入Top-20 → Top-5精排降噪
相似度阈值0.7-0.9需实验确定

四、Chunk 策略:从固定大小到智能切分

原版问题

原版给出「Chunk Size 1000-2000 字符,Overlap 200 字符」经验值,但未涉及主题聚类等进阶方案。

v2 方案:三层 Chunk 策略

第一层:主题聚类(推荐优先)

使用 BERTopic 进行主题聚类,确保每个 Chunk 属于单一主题:

文档 → BERTopic 主题聚类 → 按主题切分
       ↓
优点:语义完整,召回准确率高
效果:检索准确率提升 22%(某金融客户数据)

第二层:语义段落切分

适用于说明文档(结构清晰的文本):

  • 基于自然段落边界切分
  • 平均块大小 200-300 词
  • 保留文档结构信息(标题层级)

第三层:固定大小切分(兜底)

适用于非结构化长文本:

  • 512 tokens 滑动窗口切分
  • 保留句子完整性(不跨句切断)
  • 50-100 token overlap

切分算法对比

算法适用场景优点缺点
BERTopic 聚类知识库文档、FAQ语义完整,准确率高需额外模型,计算成本
TextTiling长段落文章保留主题边界对短文本效果差
固定窗口非结构化文本简单可控可能切断语义单元
Recursive Character代码、Markdown递归按层级切分参数多,需调优

五、GraphRAG:从「找得到」到「理解关系」

原版问题

原版提到 GraphRAG 但内容较浅,未涉及最新的腾讯优图方案和 benchmark。

v2 核心原理

传统 RAG 的局限:用户问「A 产品和 B 产品的核心差异是什么?」需要跨文档对比分析。向量检索只能找到「相关文档」,无法理解「产品差异」这一关系。

GraphRAG 的解决思路

用户问题
    ↓
在图谱中定位关键实体(如「A 产品」「B 产品」)
    ↓
通过关系路径找到「差异」相关边(如「价格差异」「性能差异」)
    ↓
扩展到相关社区(Community)获取全局上下文
    ↓
将图谱检索结果 + 文档片段 一起送入 LLM 生成

两种索引策略对比

维度Local(局部精准)Global(全局推理)
索引方式按实体节点按社区汇总
适用问题具体实体查询跨实体的全局问题
示例「A 产品的保修期」「A 和 B 产品的核心差异」

腾讯优图异构图谱方案(推荐参考)

腾讯优图 2025 年提出创新的异构图结构,同时解决了「构图成本高」和「检索效果差」两个问题:

节点类型(三种):
├─ 实体/关系节点 → 连接语义单元
├─ 属性节点 → 表示实体特征
└─ 社区节点 → 总结社区核心信息

优势:
├─ 构图成本比微软 GraphRAG 低 50%+
├─ 回答准确率比微软 GraphRAG(Global) 提升 200%+
├─ 比 LightRAG 提升 20-100%
└─ 图谱 Schema 感知 Query 理解,支持复杂多跳推理

图谱 Schema 感知 Query 理解

腾讯优图首次提出将图 Schema 应用到 Query 理解:

复杂 Query → Agent 对 Schema 理解
           → 挖掘 {Entity} / {Relation} / {Attribute}
           → 依存句法分析
           → 多跳转单跳子任务解耦

效果:复杂多跳问题回答质量显著提升

六、CID-GraphRAG:意图驱动的图检索增强

核心创新

CID-GraphRAG 由某厂商与 AWS 联合提出(2025),专门解决多轮客服对话中上下文连贯性问题。

双层意图图谱

传统 GraphRAG:静态知识图谱,仅依赖语义相似度

CID-GraphRAG 创新:
├─ 双层意图节点(代替原始节点)
├─ 从优秀专家历史对话中动态提取意图流转过程
├─ 生成该领域专家意图流转图谱
└─ 两级意图构建:一级(主要意图)+ 二级(细分意图)

双路径检索

意图匹配路径:
└─ 意图图谱匹配 → 找到相似专家对话轨迹

语义匹配路径:
└─ 向量检索 → 语义相似度计算(余弦相似度 si)

结果融合:
综合分数 = f(意图分数, 语义分数),α 可配置权重

优势:
├─ 73 次评估中获胜次数遥遥领先(Conversation RAG 仅 51 次)
├─ 应答质量相对提升 58%(基于 LLM 评估法)
└─ 显著提升多轮对话中的上下文理解

七、生成阶段:质量控制

v2 新增:生成控制三件套

1. Prompt Engineering 约束

System Prompt:
"基于以下文档片段生成回答。如果文档中没有足够信息,请回答'我无法从现有知识库中找到相关信息,建议您联系人工客服。'禁止编造文档中不存在的信息。"

2. 生成参数调优

参数客服场景推荐值说明
Temperature0.3-0.5避免幻觉,保持稳定
Top-p0.9Nucleus Sampling
Max tokens512-1024控制响应长度

3. 安全过滤

生成结果 → 内容安全审核 → 拦截敏感信息
         → 事实核查 → 标注不确定内容
         → 最终输出

八、知识库更新:热更新机制

原版缺失

原版未涉及生产级知识库热更新方案。

v2 热更新流水线

新文档上传
    ↓
触发增量更新流水线
├─ LLM 抽取 → 实体/关系/属性三元组
├─ 半自动校对 → 可视化界面人工审核
├─ 图谱更新 → Neo4j 写入
└─ 向量同步 → FAISS/Milvus 增量索引

版本管理:
├─ 历史问答可追溯到当时生效规则
└─ 支持回滚

九、关键修正总结

原版问题v2 修正
仅介绍传统 RAG新增 GraphRAG、LightRAG、CID-GraphRAG、Agentic RAG 演进路径
Chunk 策略单一新增三层策略:主题聚类 > 段落切分 > 固定大小
检索策略单一新增三阶检索:多路召回 + 归一化合并 + Cross-Encoder 精排
未提及 GraphRAG benchmark新增腾讯优图 GraphRAG-Bench 及评测结果
缺少生成阶段质量控制新增 Prompt 约束、参数调优、安全过滤
缺少热更新机制新增增量式更新流水线 + 版本管理

十、参考资料

Released under the MIT License.