高级 RAG 与记忆架构:从向量检索到 GraphRAG 与双层记忆系统

高级 RAG 与记忆架构:从向量检索到 GraphRAG 与双层记忆系统
Asaakii本文是「Agent 基础与工程」系列专栏的第 16 篇。专栏总览参见:《Agent 基础认知与工程架构全景》。
在多数 Agent 原型中,知识检索通常采用经典的“切片
- 切片孤立(Chunk Isolation):文档切块后丢失了章节层级与主谓语指代(如切片内包含“该公司第三季度营收下滑”,脱离全文后模型无法获知“该公司”指代谁);
- 多跳关系断裂(Multi-hop Disconnect):面对“排查负责人所属业务线的核心链路依赖”等复合问题,单一向量查询无法穿透多个跨实体的依赖跳数;
- 宏观理解失效(Global Blindness):面对“该系统今年在稳定性建设上有哪些核心突破”等全局归纳性提问,自底向上的单点切片无法拼凑出全局全景;
- 高相关低信噪(Relevance
Utility):向量空间计算出的高相似度切片,往往充满重复的样板代码或冗余声明,严重稀释模型的有效注意力。
为了给智能体提供高精度、具备拓扑连通性的事实支撑,RAG 架构必须向上下文增强切片、知识图谱(GraphRAG)与双层记忆系统深度演进。
进阶范式一:Contextual Retrieval(上下文增强切片)
传统切片直接将切分后的文本块转为向量,导致切片丢失了父文档的宏观语义。
工程解法:在离线切片预处理阶段,利用轻量模型为每一个文本块补充一段 50 ~ 100 字的全局上下文摘要前缀(Context Prefix),并将该前缀与原切片拼合后再计算 Embedding:
flowchart TD
subgraph Offline ["离线切片增强流程"]
Doc[原始长文档] --> Split[切分为原子 Chunk]
Doc --> LLM_Summary[LLM 提取全文结构定位]
Split --> LLM_Summary
LLM_Summary --> ContextualChunk["【增强切片】<br/>[文档定位前缀]: 本段位于支付网关结算章节,描述超时退款逻辑<br/>[原始文本]: 若超过 15 分钟未收到回调..."]
ContextualChunk --> VectorDB[(向量数据库)]
end
在原切片前注入文档主题与上下文定位后,向量空间能准确捕捉代词的真实语义,检索召回率可获得显著提升,且完全不增加在线检索的耗时。
进阶范式二:GraphRAG(知识图谱驱动的拓扑检索)
面对复杂的实体关联与多跳推导任务,基于图结构的 GraphRAG 能够提供传统向量检索完全不具备的关系穿透能力:
flowchart LR
subgraph G1 ["1. 离线图提取与聚类"]
T1[非结构化文档] --> E1[抽取实体与关系三元组]
E1 --> C1[Leiden 算法社群聚类]
C1 --> S1[多层级社群摘要生成]
end
subgraph G2 ["2. 在线分层检索 (Hierarchical Search)"]
Q[用户 Query] --> Routing{宏观宏揽 vs 微观定位?}
Routing -->|宏观归纳| Global[Global Search: 汇总高层社群摘要]
Routing -->|具体实体多跳| Local[Local Search: 沿实体图边拓扑展开]
end
G1 -.-> G2
- Global Search(全局搜索):直接在预先聚类并生成的“社群摘要(Community Summaries)”上进行并行扫描,专为解决“这篇文档的核心主旨是什么”等宏观归纳问题,彻底避免扫描数千个局部碎片的庞大开销;
- Local Search(局部图扩散):从用户问题中识别核心实体种子(Seed Entities),在知识图谱中沿关联边向外跳跃 1 到 2 度,把关联的实体属性与相互依赖结构整包拉取,直接解决多跳推导问题。
进阶范式三:混合检索(Hybrid Search)与 RRF 融合
生产级 RAG 绝不单独依赖密集向量(Dense Vector),必须与稀疏检索(Sparse BM25)建立双路并发召回,并通过**倒数排名融合(Reciprocal Rank Fusion, RRF)**进行无量纲分值对齐:
其中
flowchart TD
Q[检索 Query] --> Dense[密集向量检索 (语义相似度)]
Q --> Sparse[稀疏 BM25 检索 (精确关键词匹配)]
Dense --> TopKD[向量召回 Top-50]
Sparse --> TopKS[BM25 召回 Top-50]
TopKD --> RRF[RRF 排名倒数融合算法]
TopKS --> RRF
RRF --> Top100[粗排候选 Top-30]
Top100 --> Rerank[Cross-Encoder 重排器打分]
Rerank --> FinalTopK[最终精炼 Top-5 注入 Context]
混合检索彻底解决了向量检索对缩写、专有名词、错误码(如 ERR_0x9941)不敏感的问题,同时保全了语义泛化能力。
生产级 RRF 混合检索算法实现
以下展示使用原生 Python 实现的具备名次对齐与融合重排的 RRF 算法核心实现:
1 | from collections import defaultdict |











