LightRAG 知识图谱双层检索与 LangFuse
| 字段 | 内容 |
|---|---|
| 作者/整理 | 基于公开课程资料整理 |
| 来源 | 五道口纳什 |
| 日期 | 2025 |

如何快速上手一个 Agent 项目
方法论总结
作者总结了快速理解和上手一个 Agent 项目的三步路径:
- 理解基本概念:读论文或项目框架介绍,理解 Workflow / Pipeline 设计
- 理解 Prompt:Agent 项目中大量子环节都由 LLM 扮演——理解了 Prompt 就理解了各环节的输入、输出和处理逻辑
- 使用监控工具:通过 LangFuse 等工具 trace 所有 API 调用,可视化理解整个流程
Prompt 是理解 Agent 项目的钥匙
对于一个 Agent 的 Workflow,很多子环节都是 LLM 来扮演的。将每个环节理解为 \(F(X; \text{Prompt})\) ——\(F\) 是 LLM,\(X\) 是 Query,Prompt 是 System/User Prompt。理解了 Prompt,就理解了各环节的处理逻辑。
本章小结
概念 \(\rightarrow\) Prompt \(\rightarrow\) 监控工具,这是一条高效的 Agent 项目理解路径。
LightRAG 原理
概述
LightRAG 是一篇 EMNLP 2025 的学术论文,也是 Paper2Slides 作者的另一个项目。它是一个基于知识图谱的 RAG 系统,相比传统向量 RAG 具有更强的语义理解能力。
LightRAG 的核心特性
- 基于 Knowledge Graph 的索引(而非纯向量索引)
- 双层检索:Low-Level(局部,特定实体)+ High-Level(全局,主题和概念)
- 增量更新:新文档无需重建整个 Graph,只需执行提取步骤并合并
Indexing 流程:构建知识图谱
对每个文档执行以下步骤:
- Chunking:将文档分块
- Entity & Relationship Extraction:基于 LLM 从每个 Chunk 提取实体和关系
- Profiling:基于 LLM 对实体和关系生成文本描述
- Deduplication:对整个知识图谱做去重合并
- Embedding:对所有实体和关系的 Key 构建 Embedding Vector
知识图谱中的数据结构:
- Entity:名字、类型、描述(Profiling 生成)、原始 Chunk ID
- Edge:Source、Target、关键词、描述、原始 Chunk ID
LightRAG vs. GraphRAG
LightRAG 相比 GraphRAG 的一个重要优势是增量更新——新文档只需执行相同的提取步骤,合并实体和边即可。而 GraphRAG 需要重新进行社区发现,代价高昂。
Retrieval 流程:双层检索
- 基于 Query,LLM 生成 Low-Level Keywords(特定实体)和 High-Level Keywords(主题/概念)
- 基于 Embedding 相似度在知识图谱中匹配相关节点
- 通过一跳邻居拓展 Subgraph
- 获取三种类型的 Context:实体、关系、原始 Chunk
- Context + Query \(\rightarrow\) LLM 生成最终回答
本章小结
LightRAG 通过知识图谱索引 + 双层检索实现了比纯向量 RAG 更强的语义理解能力,且支持增量更新。
LangFuse:本地部署的 API 监控工具
LangFuse 简介
LangFuse 是一个可本地部署的 LLM API 监控工具,用于 trace 所有的模型调用过程。
部署与配置
- 下载 Docker Compose 文件并启动服务
- 本地访问
localhost:3000 - 创建组织和项目
- 获取 Public Key、Secret Key 和 Base URL
- 在
.env中配置以上信息
LightRAG 原生集成了 LangFuse——只要检测到环境变量,就会自动将 OpenAI Client 替换为 LangFuse Client,在后台记录完整的 traces。
通过 Traces 理解 Workflow
在 LangFuse 的 Traces 面板中,可以看到 LightRAG 的所有 API 调用:
Insert(Indexing)阶段:
- 对文档创建 Embedding
- 第一次 Generation:提取实体和关系(Entity Extraction System/User Prompt)
- 第二次 Generation:Self Correction(继续提取遗漏的或格式不正确的内容)
- 大量 Embedding 调用:对节点和边创建 Embedding
Query(Retrieval)阶段:
- Generation:提取 High-Level 和 Low-Level 关键词(Keywords Extraction Prompt)
- Embedding Search:基于关键词匹配实体和关系
- 图遍历:找到相关实体的邻居节点
- Generation:基于 Context + Query 生成最终回答(RAG Response Prompt)
Response Cache
LightRAG 默认启用 Response Cache——如果重复执行相同的 Query,不会再次调用 API。这在开发调试时需要注意。
本章小结
LangFuse 提供了强大的可视化 trace 能力,是理解 Agent 项目内部工作机制的利器。
LightRAG 核心 Prompt 解析
Entity Extraction System Prompt
负责从 Chunk 中提取实体和关系,包含 Few-Shot 示例。
Continue Extraction User Prompt
基于第一次提取的结果,做 Self Correction——识别和提取遗漏的或格式不正确的内容。
Keywords Extraction Prompt
负责从 Query 中提取 High-Level 和 Low-Level 关键词,用于后续的向量搜索。
RAG Response Prompt
基于检索到的 Context(实体、关系、Chunk)和用户 Query,生成最终回答。
本章小结
LightRAG 的核心 Prompt 包括:实体关系提取、Self Correction、关键词提取、RAG 回答生成——每一个都对应 Workflow 中的一个关键环节。
LightRAG 本地存储结构
运行 LightRAG 后,在工作目录下会生成以下文件:
graph.graphml:XML 格式的知识图谱(实体 + 关系)kv_store_*:键值存储(Chunk、Entity、Relation 的 K-V 对)-
vdb_*:向量数据库(默认使用 Nano Vector DB) -
vdb_chunks:Chunk 的 Embedding vdb_entities:Entity 的 Embeddingvdb_relationships:Relation 的 Embedding
检索时的数据流:关键词 \(\rightarrow\) Embedding Search(VDB) \(\rightarrow\) 图遍历(GraphML) \(\rightarrow\) 补充原始文档(KV Store) \(\rightarrow\) 组装 Context \(\rightarrow\) LLM 生成回答。
总结与延伸
- 快速上手 Agent 项目的路径:概念 \(\rightarrow\) Prompt \(\rightarrow\) 监控工具(LangFuse)。
- LightRAG 是一个基于知识图谱的 RAG 方案,相比纯向量 RAG 具有更强的语义理解和增量更新能力。
- 双层检索(Low-Level + High-Level)复用了 GraphRAG 中 Local 和 Global 检索的思想,但实现更轻量。
- LangFuse 是理解 Agent 内部机制的利器:通过 trace 所有 API 调用,可以清晰看到每个环节的输入输出。
- 核心 API:
ainsert(增量索引)和aquery(检索回答)——对应 Indexing 和 Retrieval 两大流程。