LightRAG是什么?2026年知识图谱增强RAG框架深度解析
LightRAG is an open-source RAG framework that integrates knowledge graphs with vector retrieval, supporting multiple LLM backends and storage solutions for efficient document querying and analysis. 原文翻译: LightRAG 是一个开源 RAG 框架,集成了知识图谱与向量检索,支持多种 LLM 后端和存储方案,用于高效的文档查询与分析。
在当今信息爆炸的时代,如何从海量非结构化文档中高效、准确地检索和生成信息,是人工智能领域面临的核心挑战之一。检索增强生成(RAG)技术通过将外部知识库与大型语言模型(LLM)相结合,显著提升了模型回答的准确性和事实性。然而,传统的基于向量相似度的RAG系统在处理复杂、多跳的推理问题时,往往显得力不从心。LightRAG 应运而生,它是一个创新的、轻量级的开源框架,通过巧妙地融合知识图谱(KG)的结构化语义与向量检索的强大能力,旨在为复杂查询提供更深入、更连贯的上下文理解。
核心概念与架构
LightRAG 的核心设计哲学是“双引擎驱动”。它不仅仅是一个向量数据库的封装,而是构建了一个动态的、可交互的知识图谱作为其“结构化大脑”,同时保留向量检索作为其“非结构化记忆”。这种混合架构允许系统执行两种关键的信息获取路径:
- 知识图谱路径:自动从文档中提取实体(如人物、地点、概念)和它们之间的关系,形成一个语义网络。查询时,系统可以在这个网络上进行“图遍历”,找到与问题相关的实体簇及其连接关系,从而理解概念的上下文和关联性。
- 向量检索路径:与传统RAG相同,将文档块编码为向量,通过相似度搜索找到与查询语义最接近的文本片段。
LightRAG 的智能之处在于其 混合检索模式,它可以根据查询的复杂性,动态地结合或加权这两种路径的结果,为LLM提供最全面、最相关的上下文信息。
快速入门与实践
安装与设置
LightRAG 的安装过程简洁明了,核心库可以通过PyPI直接获取。
安装 LightRAG Core
# 通过 PyPI 安装(推荐)
pip install lightrag-hku
安装 LightRAG ServerLightRAG 的服务器组件,提供 Web 界面用于文档索引、知识图谱探索和 RAG 查询,并暴露 API 接口。 (可选)
对于需要Web界面或API服务的用户,可以安装带有服务器组件的版本。
# 安装包含API支持的版本
pip install "lightrag-hku[api]"
第一个查询示例
以下是一个使用 OpenAI 模型进行初始化和查询的简化示例。
import asyncio
import os
from lightrag import LightRAG, QueryParam
from lightrag.llm.openai import gpt_4o_mini_complete, openai_embed
# 设置您的 OpenAI API 密钥
os.environ["OPENAI_API_KEY"] = "your-api-key-here"
async def main():
# 1. 初始化 LightRAG 实例
rag = LightRAG(
working_dir="./my_lightrag_data", # 指定工作目录用于存储缓存和索引
embedding_func=openai_embed, # 注入嵌入模型函数
llm_model_func=gpt_4o_mini_complete # 注入LLM模型函数
)
await rag.initialize_storages() # 异步初始化存储后端
# 2. 插入文档(例如,一段关于查尔斯·狄更斯的文本)
sample_text = """
Charles Dickens was a renowned English writer, famous for novels like
'Oliver Twist', 'A Christmas Carol', and 'Great Expectations'.
His works often critiqued social inequality in Victorian England.
"""
rag.insert(sample_text)
# 3. 执行查询 - 使用混合模式,结合知识图谱与向量检索
response = rag.query(
"What were the main themes in Charles Dickens' novels?",
param=QueryParam(mode="mix") # 使用'mix'模式进行混合检索
)
print("Answer:", response)
if __name__ == "__main__":
asyncio.run(main())
核心功能深度解析
灵活的检索模式
LightRAG 的核心优势在于其多样化的检索策略,通过 QueryParam 中的 mode 参数控制。
naive: 基础向量检索模式,类似于传统RAG。local: 本地图检索。聚焦于查询直接提及的实体,检索其在知识图谱中的邻近节点(一度关系)及其描述,适合回答关于特定实体属性或直接关联的问题。global: 全局图检索。利用知识图谱的全局结构,寻找与查询主题在语义上高度相关的实体社区或子图,适合需要背景知识和概念关联的复杂、开放式问题。hybrid: 本地+全局混合。同时执行local和global图检索,并将结果合并,提供更广泛的上下文。mix(推荐): 图谱与向量混合。这是LightRAG的杀手锏。它并行执行知识图谱检索(获取结构化关系信息)和向量检索(获取相关文本片段),然后将两者融合成一个丰富的上下文提示,交给LLM生成答案。这种模式能同时捕捉到显性的语义相似度和隐性的逻辑关联。
# 不同检索模式示例
param_local = QueryParam(mode="local", top_k=30) # 检索前30个相关实体
param_global = QueryParam(mode="global", top_k=50) # 检索前50个相关关系
param_mix = QueryParam(mode="mix", top_k=40) # 混合模式下控制检索深度
多模型支持与注入
LightRAG 采用灵活的模型注入机制,不与任何特定模型供应商绑定。
1. 支持多种API后端:
- OpenAI / 兼容API:如 Azure OpenAI, Groq, Together AI, 智谱AI, 月之暗面等。
- Ollama:完美支持本地运行的Ollama模型,方便私有化部署。
- Hugging Face Transformers:直接使用
transformers库中的模型。 - LlamaIndex:复用现有的LlamaIndex模型配置和抽象。
2. 模型注入示例 (Ollama):
from lightrag.llm.ollama import ollama_model_complete, ollama_embed
from lightrag import LightRAG, EmbeddingFunc
async def embedding_func(texts):
return await ollama_embed(texts, embed_model="nomic-embed-text")
rag = LightRAG(
working_dir="./ollama_rag",
llm_model_func=ollama_model_complete,
llm_model_name="qwen2.5:7b", # 指定Ollama中的模型名称
embedding_func=EmbeddingFunc(
embedding_dim=768,
max_token_size=8192,
func=embedding_func
)
)
可扩展的存储后端
LightRAG 为向量、图谱和键值存储设计了可插拔的存储接口。
- 向量存储:默认使用轻量级内存存储,可轻松切换至 FAISSFacebook AI Similarity Search, a library for efficient similarity search and clustering of dense vectors.(本地高性能)、PostgreSQL (pgvector)(生产级持久化)等。
- 图谱存储:默认使用内置的
NetworkXStorage(适用于中小规模、原型开发)。对于生产环境,强烈推荐:- Neo4j:成熟的图数据库,提供丰富的查询语言和可视化工具。
- PostgreSQL + Apache AGE一个为 PostgreSQL 扩展的开源图数据库扩展,允许在 PostgreSQL 中存储和查询图数据。:将图数据库功能集成到熟悉的PostgreSQL中,实现“一库多用”,简化架构。
配置 Neo4j 示例:
# 环境变量配置
export NEO4J_URI="bolt://localhost:7687"
export NEO4J_USERNAME="neo4j"
export NEO4J_PASSWORD="your_password"
# 代码中指定使用 Neo4j
rag = LightRAG(
working_dir="./neo4j_rag",
graph_storage="Neo4JStorage", # 关键参数:指定图存储后端
llm_model_func=...,
embedding_func=...
)
知识图谱的交互与管理
LightRAG 不仅自动构建图谱,还提供了完整的CRUD API,允许用户动态地修正和增强知识库。
实体与关系编辑:
# 创建实体
rag.create_entity(
"量子计算",
properties={"description": "利用量子力学原理进行计算的新范式", "category": "前沿科技"}
)
# 创建关系
rag.create_relation(
"谷歌", "量子计算",
properties={"relation_type": "投入研发", "strength": 0.9}
)
# 编辑实体(例如,修正描述或合并重复实体)
rag.edit_entity("AI", properties={"description": "人工智能的统称"})
智能实体合并:
此功能对于数据清洗至关重要,可以自动合并指代相同现实世界对象的不同实体表述。
# 将“机器学习”、“ML”、“Machine Learning”合并到“机器学习”下
rag.merge_entities(
source_entities=["机器学习", "ML", "Machine Learning"],
target_entity="机器学习",
target_entity_data={"entity_type": "技术领域"}
)
# 合并后,所有与源实体相关的关系都会迁移到目标实体上。
常见问题(FAQ)
LightRAG和传统RAG框架有什么区别?
LightRAG创新地融合了知识图谱与向量检索,形成“双引擎驱动”架构。知识图谱作为结构化大脑处理复杂关联,向量检索作为非结构化记忆,通过混合检索模式动态结合两者优势,解决传统RAG在多跳推理上的不足。
如何快速开始使用LightRAG进行文档查询?
可通过PyPI安装核心库(pip install lightrag-hku),支持API的版本需安装lightrag-hku[api]。初始化后,配置LLM后端(如OpenAI)和嵌入模型,即可加载文档并执行混合检索查询,详见文中的第一个查询示例代码。
LightRAG支持哪些存储方案和LLM模型?
LightRAG支持可扩展的存储后端,并兼容多种LLM后端。框架设计灵活,允许注入不同模型,确保用户能根据需求选择适合的存储和生成模型,实现高效的文档分析与查询。
版权与免责声明:本文仅用于信息分享与交流,不构成任何形式的法律、投资、医疗或其他专业建议,也不构成对任何结果的承诺或保证。
文中提及的商标、品牌、Logo、产品名称及相关图片/素材,其权利归各自合法权利人所有。本站内容可能基于公开资料整理,亦可能使用 AI 辅助生成或润色;我们尽力确保准确与合规,但不保证完整性、时效性与适用性,请读者自行甄别并以官方信息为准。
若本文内容或素材涉嫌侵权、隐私不当或存在错误,请相关权利人/当事人联系本站,我们将及时核实并采取删除、修正或下架等处理措施。也请勿在评论或联系信息中提交身份证号、手机号、住址等个人敏感信息。



