LightRAG 总览
LightRAG 概述
相关源文件
本章引用的主要源码文件:
.github/CONTRIBUTING.md.github/workflows/copilot-setup-steps.yml.github/workflows/docker-build-lite.yml.github/workflows/docker-build-manual.yml.github/workflows/docker-publish.yml.github/workflows/linting.yaml.github/workflows/pypi-publish.yml.github/workflows/stale.yaml.github/workflows/tests.ymlREADME-zh.mdREADME.mdlightrag/__init__.pylightrag/_version.pylightrag/api/__init__.pytests/conftest.py
LightRAG 是一个"简单且快速"的检索增强生成(RAG)框架,旨在提升大语言模型(LLM)应用的准确性和效率 README.md:7-8。它通过采用同时管理知识图谱(KG)和向量嵌入向量的双层架构,弥合了传统基于向量的 RAG 与基于图的 RAG 之间的差距。
该系统专为可扩展性而设计,支持大规模数据集,即使使用开源大语言模型也能保持高提取精度 README.md:82-84。
系统架构
LightRAG 编排多个子系统,将原始文档转换为结构化的、可查询的知识库。核心逻辑封装在 LightRAG 类中 lightrag/__init__.py:6。
高层组件关系
下图说明了在自然语言和代码实体空间中主要子系统之间的交互方式。
图:子系统互联关系
来源: lightrag/lightrag.py, lightrag/operate.py, lightrag/__init__.py:24-38
关键能力
- 双层检索: 结合基于图的遍历与向量相似性搜索,提供全面的上下文信息,支持
local、global、hybrid和mix等查询模式README.md:106-107。 - 多模态支持: 集成 RagAnything(MinerU/Docling),用于解析来自多种格式的文本、图像、表格和公式
README.md:77-78, 87-88。 - 角色特定配置: 允许为特定任务分配不同的大语言模型或提供商:
EXTRACT、QUERY、KEYWORDS和VLMREADME.md:79-80。 - 可插拔后端: 支持多种存储解决方案,包括 NetworkX、Neo4j、MongoDB、PostgreSQL(pgvector/AGE)、Milvus 和 OpenSearch
README.md:80-81, 90-96。 - 生产就绪: 包含基于 FastAPI 的服务器(
lightrag-server)、基于 React 的 Web 用户界面,以及通过 Langfuse 实现的全面可观测性README.md:81-82, 94-95。
子系统概述
1. 核心引擎与入库
该引擎处理文档片段切分(固定、递归、向量或段落语义切分),以及实体和关系的提取,以构建知识图谱 README.md:78-79。
2. 检索与查询
LightRAG 实现了一套复杂的检索逻辑,用于管理跨实体和关系的 Token 预算。它支持引用功能,用于来源归属 README.md:89-90。
- 详情请参见 检索与查询模式。
3. 存储层
存储架构通过基类进行抽象,允许在本地基于文件的存储(JsonKV、NanoVectorDB)和分布式数据库之间无缝切换 README.md:80-81, 90-93。
- 详情请参见 存储后端。
4. API 与用户界面
该系统提供 REST API,模拟 Ollama 的接口以兼容 Open WebUI 等工具,同时还提供专用的 Web 用户界面,用于图可视化和文档管理 README.md:94-95, 121-122。
- 详情请参见 REST API 服务器 和 Web 用户界面(lightrag_webui)。
数据流:从文档到知识图谱
下图展示了数据从输入到代码库中定义的存储实体的转换过程。
图:数据入库流程
来源: README.md:104-105, lightrag/lightrag.py, lightrag/operate.py
后续步骤
要开始使用 LightRAG,请参考以下章节:
来源: README.md:1-150, lightrag/_version.py:1-5