Hotdry.
ai-systems

LightRAG:双本地-全局图索引与查询融合的简单快速 RAG 构建

LightRAG 通过双层知识图谱索引(local/global)、查询融合机制和低资源蒸馏管道,实现高效 RAG,提升 LLM 检索增强的全局理解与准确率。

LightRAG 是一种简单高效的检索增强生成(RAG)框架,专为低资源环境设计,通过双本地 - 全局知识图谱索引、查询融合和蒸馏管道,实现高性能 LLM 检索增强。其核心优势在于避免复杂的多跳推理,直接用图结构捕捉文档实体与关系,支持快速索引和查询,基准测试显示在综合性问题上优于传统 NaiveRAG 和 GraphRAG。

双本地 - 全局图索引机制

LightRAG 的索引过程首先将文档切分成 chunk(默认 chunk_token_size=1200,overlap=100),然后用 LLM 提取实体(entity)和关系(relation)。关键是构建双层图:

  • Local 图(实体级):聚焦 chunk 内实体及其直接关系,捕捉局部上下文。每个实体有描述、类型和嵌入向量。
  • Global 图(关系级):聚合跨 chunk 的实体关系,形成全局知识网络,支持长程依赖。

证据来自其索引流程图:文档 → 切分 → LLM 实体 / 关系提取 → 节点 / 边嵌入 → 存储(支持 NanoVectorDB、Neo4J 等)。与传统向量 RAG 不同,LightRAG 用图过滤噪声,提升召回率。EMNLP 2025 基准显示,在 Legal 等领域,LightRAG 的 Comprehensiveness 达 83.6%,远超 NaiveRAG 的 16.4%。

落地参数:

  • LLM 选择:≥32B 参数、≥32K 上下文(如 gpt-4o-mini 索引,gpt-4o 查询);避免推理模型用于索引。
  • 嵌入模型:BAAI/bge-m3(多语言),维度固定(如 1536),切换需重建。
  • 提取循环:entity_extract_max_gleaning=1(追加历史消息)。
  • 批处理:embedding_batch_num=32,llm_model_max_async=4。

代码示例(Python):

from lightrag import LightRAG
import asyncio
from lightrag.llm.openai import openai_embed, gpt_4o_mini_complete

rag = LightRAG(
    working_dir="./rag_storage",
    embedding_func=openai_embed,
    llm_model_func=gpt_4o_mini_complete,
    chunk_token_size=1200,
    chunk_overlap_token_size=100
)
await rag.initialize_storages()
await rag.ainsert("文档内容")  # 异步插入,支持批量

风险控制:启用 llm_cache=True,避免重复提取;max_parallel_insert≤10,LLM 为瓶颈。

查询融合:Local + Global 模式

查询时,LightRAG 支持 6 种模式:local(实体检索)、global(关系检索)、hybrid(融合)、mix(图 + 向量)、naive(纯向量)、bypass(直通)。

  • 融合机制:local 召回 top_k=60 实体(max_entity_tokens=6000),global 召回关系(max_relation_tokens=8000),总预算 max_total_tokens=30000。reranker(如 bge-reranker-v2-m3)重排序 chunk(chunk_top_k=20)。
  • 证据:流程图显示,双层检索 + 统一 token 控制,确保上下文精炼。基准中,hybrid 模式在 Mix 数据集 Overall 胜率 60%,GraphRAG 仅 49.6%。

优化清单:

  1. 默认模式 ="hybrid" 或 "mix"(启用 rerank=True)。
  2. QueryParam 配置:
    from lightrag import QueryParam
    result = await rag.aquery(
        "查询问题",
        param=QueryParam(
            mode="hybrid",
            top_k=60,
            enable_rerank=True,
            stream=True  # 流式输出
        )
    )
    
  3. 历史上下文:conversation_history 仅用于 LLM,不参与检索。
  4. 自定义提示:user_prompt 指导输出格式(如 "用 mermaid 画关系图")。

低资源适配:Ollama 支持(nomic-embed-text,num_ctx=32768),GPU 6GB 可跑 gemma2:2b 处理 197 实体。

蒸馏管道与端到端优化

LightRAG 的 “蒸馏” 指高效管道:增量插入(apipeline_enqueue_documents)、合并实体(merge_entities)、删除重建(adelete_by_doc_id)。支持多模态(RAG-Anything 集成 PDF / 图像)。

  • 参数调优:cosine_better_than_threshold=0.2(向量阈值),summary_max_tokens=500(关系摘要)。
  • 存储选择:开发用 JsonKV + NanoVectorDB;生产 Neo4J(图优于 PG-AGE),PostgreSQL 一体化。
  • 监控:TokenTracker 追踪消耗,RAGAS 评估,Langfuse 追踪。

完整落地清单:

  1. 安装:uv pip install lightrag-hku[api],配置 .env(API 密钥)。
  2. 服务器:lightrag-server(WebUI + API,Ollama 兼容)。
  3. 基准复现:下载 UltraDomain 数据集,跑 reproduce/batch_eval.py。
  4. 回滚:清缓存 await rag.aclear_cache(),重建索引。
  5. 规模化:workspace 隔离多实例,Redis 持久化。

LightRAG 证明,简单图索引 + 融合查询即可实现低资源高性能 RAG,适合边缘部署与实时应用。

资料来源: [1] https://github.com/HKUDS/LightRAG (EMNLP 2025 官方仓库) [2] arXiv:2410.05779

查看归档