核心 RAG 引擎
核心检索增强生成(RAG)引擎
相关源文件
以下文件为本维基页面的生成提供了上下文:
lightrag/base.pylightrag/lightrag.pylightrag/operate.pylightrag/prompt.pylightrag/utils.py
核心检索增强生成(RAG)引擎是 LightRAG 库的核心组件,负责将原始文本转换为结构化的知识图谱(KG),并执行多层级检索。它协调了文本片段切分、基于大语言模型(LLM)的实体/关系提取、向量索引和图存储之间的数据流转。
该引擎旨在弥合非结构化自然语言与结构化、可查询的图表示之间的鸿沟,支持"局部"、"全局"、"混合"和"融合"四种检索模式,其性能优于仅依赖向量的标准检索增强生成(RAG)系统。
系统架构总览
下图展示了高层系统组件与实现这些组件的具体代码实体之间的关系。
图示:逻辑到代码实体的映射
来源: lightrag/lightrag.py:159-160, lightrag/operate.py:105-110, lightrag/base.py:180-200
核心子系统
核心检索增强生成(RAG)引擎分为五个功能区域,每个区域由专门的模块处理,并由 LightRAG 类进行协调。
1. LightRAG 类与管线编排
LightRAG 类是库的主要入口点。它继承自 _PipelineMixin,以处理文档入库的复杂生命周期。该类管理存储后端(例如 NetworkX、NanoVectorDB)的初始化,并对外暴露 ainsert 和 aquery 方法以支持异步操作。
详情请参见 LightRAG 类与管线编排。 来源: lightrag/lightrag.py:159-181, lightrag/lightrag.py:134-134
2. 实体与关系提取
该子系统将文本片段转换为图节点(实体)和边(关系)。它采用复杂的基于大语言模型(LLM)的驱动流程,包括"拾取"(迭代优化)和映射-归约摘要,以处理单个实体的大量描述。该逻辑确保实体名称被规范化,且描述被一致地合并。
详情请参见 实体与关系提取。 来源: lightrag/operate.py:198-215, lightrag/operate.py:106-106
3. 检索与查询模式
LightRAG 通过 kg_query 函数支持多种检索策略。与标准检索增强生成(RAG)不同,它可以执行"局部"搜索(查找特定实体及其直接邻居)或"全局"搜索(聚合社区级信息)。"融合"模式将这些与传统的向量检索相结合,以获得最大的上下文相关性。
详情请参见 检索与查询模式。 来源: lightrag/operate.py:107-107, lightrag/base.py:88-95
4. 文本片段切分策略
在提取之前,文档会被分解为可管理的片段。LightRAG 提供了四种策略:固定大小、递归、基于语义向量和段落语义。这些策略确保在提取过程中提供给大语言模型(LLM)的上下文是连贯的,并且保持在 Token 限制范围内。
详情请参见 文本片段切分策略。 来源: lightrag/lightrag.py:104-104, lightrag/chunker.py:1-1
5. 并发与工具
该引擎使用自定义的并发框架来防止大语言模型(LLM)速率限制并管理资源争用。这包括用于任务调度的 priority_limit_async_func_call 装饰器和用于灵活资源管理的 UnlimitedSemaphore。它还实现了一个健壮的大语言模型(LLM)响应缓存层,以降低成本和延迟。
详情请参见 并发、缓存与工具。 来源: lightrag/utils.py:120-120, lightrag/operate.py:26-29
数据流:从文本到知识图谱
下图展示了数据流经核心实体的过程,显示了原始输入如何变为结构化存储。
图示:数据入库管线
来源: lightrag/lightrag.py:104-104, lightrag/operate.py:106-109, lightrag/base.py:74-79
关键类与接口
| 类/函数 | 文件 | 职责 |
|---|---|---|
LightRAG | lightrag/lightrag.py | 用于配置和高级 API 的主类。 |
QueryParam | lightrag/base.py | 检索配置对象(模式、top_k、Token)。 |
extract_entities | lightrag/operate.py | 基于大语言模型(LLM)的知识图谱构建核心逻辑。 |
kg_query | lightrag/operate.py | 基于图的检索逻辑编排器。 |
BaseGraphStorage | lightrag/base.py | 图数据库接口(NetworkX、Neo4j 等)。 |
来源: lightrag/lightrag.py:159-160, lightrag/base.py:85-180, lightrag/operate.py:105-110