LightRAG 是香港大学 (HKU) 的一项研究项目,重新构想了使用知识图谱的检索增强生成(RAG)。该项目已被 EMNLP 2025 收录,以基于图形的架构取代传统的平面向量存储方法,从文档中提取实体及其关系,为 LLM 应用提供显著更好的上下文理解。
传统 RAG 系统通过嵌入相似度检索孤立文档片段,而 LightRAG 则从你的文档建立结构化的知识图谱——实体成为节点,关系成为边。当查询送达时,它会在图形中执行双层检索:低层级检索用于具体事实答案,高层级检索用于更广泛的主题摘要。结果是检索不仅理解哪些词语一起出现,还理解概念之间实际的关联方式。
该项目不仅因其创新方法,也因其实用性而获得了开源社区的广泛关注。代码库轻量、文档完善,并包含增量更新(添加新文档时无需完整重建)、交互式图形可视化及多种后端支持(OpenAI、Ollama、Hugging Face)等功能。
LightRAG 的图形检索是如何运作的?
传统 RAG 将文档编码为平面向量,并通过余弦相似度检索片段——这个过程从根本上受限,因为它不了解片段之间的相互关系。LightRAG 通过在索引阶段构建知识图谱来解决此问题。
graph TD
A[输入文档] --> B[实体提取]
A --> C[关系提取]
B --> D[知识图谱构建]
C --> D
D --> E[社区检测]
D --> F[实体嵌入]
D --> G[关系嵌入]
E --> H[高层级检索\n摘要]
F --> I[低层级检索\n具体事实]
G --> I
H --> J[聚合答案]
I --> J
J --> K[LLM 响应]该流水线分三个阶段运作:
- 图形构建:处理文档以提取实体(人物、公司、概念)及其关系。这些形成存储为结构化数据的有向图。
- 社区检测:使用层次聚类将图形分割为相关实体的社区。每个社区生成一个摘要嵌入,用于高层级检索。
- 双层检索:查询同时与实体层级和社区层级的嵌入进行匹配,然后将检索到的图形上下文提供给 LLM 进行答案生成。
这种架构产生的答案反映了知识的实际结构,而非任意的文档边界。
双层检索有哪些优势?
双层设计是 LightRAG 的决定性创新。要理解其重要性,请考虑两种类型的问题:
| 查询类型 | 传统 RAG | LightRAG 双层 |
|---|---|---|
| 「Apple 在 2020 年收购了什么?」 | 寻找提到「Apple」、「2020」和「收购」的片段 | 低层级检索:直接追踪图形中的 [Apple] --acquired--> [Startup X] 边 |
| 「Apple 的收购策略是什么?」 | 在不相关的片段中散乱搜索 | 高层级检索:返回整个「Apple 收购」集群的社区摘要 |
| 「Apple 的 AI 策略与 Google 相比如何?」 | 难以连接不同的片段组群 | 遍历两个集群并返回合并的图形上下文 |
| 「解释 Apple 芯片开发的时间线」 | 可能遗漏稀疏片段之间的时间顺序关联 | 低层级检索追踪时间关系边:[Apple] --developed--> [A14]、[Apple] --developed--> [M1] |
关键在于图形自然捕获关系,这是平面向量存储无法做到的。双层检索让 LightRAG 能自动为每个查询选择适当的粒度——这是传统 RAG 系统需要手动配置才能实现的功能。
主要功能规格有哪些?
| 功能 | 描述 | 状态 |
|---|---|---|
| 图形构建 | 从文档提取实体与关系 | 稳定 |
| 双层检索 | 低层级(事实)与高层级(摘要)查询 | 稳定 |
| 增量更新 | 无需完整图形重建即可合并新文档 | 稳定 |
| 图形可视化 | 交互式实体-关系图形浏览器 | 稳定 |
| 多种后端 | OpenAI、Ollama、Hugging Face、自定义 API | 支持 |
| API 访问 | Python SDK + RESTful API | 稳定 |
| 嵌入模型 | 可配置,支持多种模型 | 支持 |
增量更新是如何运作的?
LightRAG 最实用的功能之一,是支持无需重建整个图形的增量知识库更新。这对于数据持续变化的实际部署至关重要。
flowchart LR
A[新文档] --> B[提取实体\n与关系]
B --> C{实体是否存在于\n图形中?}
C -->|是| D[添加新关系\n与边]
C -->|否| E[创建新的\n实体节点]
D --> F[更新社区\n检测]
E --> F
F --> G[重新计算\n受影响的嵌入]
G --> H[更新检索\n索引]
H --> I[准备好查询]增量更新过程效率高,因为它只处理新文档的实体与关系,将其合并到现有图形结构中,并仅重新计算受影响节点和社区的嵌入。这避免了完整图形重建的 O(n) 成本,使 LightRAG 非常适合持续增长的知识库。
LightRAG 支持哪些后端?
| 后端 | 使用场景 | 配置 |
|---|---|---|
| OpenAI (GPT-4o, GPT-4o-mini) | 使用云端 LLM 的生产部署 | LIGHTRAG_LLM_BACKEND=openai |
| Ollama | 使用开放模型的本地/私有部署 | LIGHTRAG_LLM_BACKEND=ollama |
| Hugging Face | HF Hub 的自定义模型 | LIGHTRAG_LLM_BACKEND=huggingface |
| 自定义端点 | 企业代理或自托管 API | LIGHTRAG_LLM_BACKEND=custom |
LightRAG 的后端抽象意味着你可以先用 OpenAI 进行原型设计,然后在生产环境中切换到 Ollama 的本地模型——或者执行混合模式,嵌入在本地进行而生成使用云端。
如何安装与使用 LightRAG
通过 pip 安装非常简单:
pip install lightrag-hku
基本使用只需几行 Python:
from lightrag import LightRAG, QueryMode
rag = LightRAG(workspace_dir="./my_knowledge_base")
# 插入文档
rag.insert("Apple 在 2020 年收购了初创公司 X 以扩展其 AI 能力。")
rag.insert("Google 在 2023 年推出了 Gemini 模型,与 GPT-4 竞争。")
# 使用双层检索进行查询
answer = rag.query("Apple 的收购策略是什么?",
mode=QueryMode.HYBRID)
# 低层级查询具体事实
fact = rag.query("Apple 在 2020 年收购了什么?",
mode=QueryMode.LOCAL)
该系统还支持从文件批量插入文档、自定义嵌入配置,以及与现有文档流水线集成。
常见问题
什么是 LightRAG?它与传统 RAG 有何不同? LightRAG 是香港大学的 EMNLP 2025 研究项目,以知识图谱方法取代平面向量数据库检索。与传统 RAG 通过嵌入相似度检索文档片段不同,LightRAG 从文档中提取实体与关系到图形结构中,实现双层检索(低层级针对特定事实,高层级针对全局摘要)。
LightRAG 的双层检索是如何运作的? LightRAG 的双层检索以两种粒度运作。低层级检索查找具体的实体关系,而高层级检索捕捉更广泛的摘要。基于图形的方法会根据查询自动决定适当的层级,无需手动配置。
LightRAG 支持知识库的增量更新吗? 是的,LightRAG 通过部分图形重构支持增量知识库更新。当添加新文档时,LightRAG 会提取实体与关系,将其合并到现有图形中而无需完整重建,仅更新受影响节点的嵌入。
LightRAG 提供哪些图形可视化功能? LightRAG 提供交互式图形可视化,以节点显示实体、以边显示关系,并按社区集群进行颜色编码。用户可以探索知识图谱、点击实体查看详细上下文、追踪关系路径,以及可视化检查检索结果的关联方式。
LightRAG 支持哪些后端与 API? LightRAG 支持多种 LLM 后端,包括 OpenAI、Ollama、Hugging Face 及自定义端点。它提供 Python API 和 RESTful API 供外部应用程序集成。
扩展阅读
- LightRAG GitHub 仓库 – 官方源代码、文档与示例
- LightRAG 研究论文 (EMNLP 2025) – 描述架构与评估的学术论文
- Microsoft Graph RAG – 另一种具有不同设计取舍的图形 RAG 方法
- Neo4j 图形数据库 – 可作为 LightRAG 存储后端的图形数据库平台
- Ollama 本地 LLM – 在本地运行 LLM,实现完全私密的 LightRAG 部署
無程式碼也能輕鬆打造專業LINE官方帳號!一鍵導入模板,讓AI助你行銷加分!