Hotdry.
ai-systems

LightRAG简单快速RAG:双图边蒸馏与chunk粒度阈值查询融合

LightRAG通过双图边蒸馏实现简单快速RAG,结合chunk粒度阈值和查询融合,支持低资源高效检索与调优。

LightRAG 作为 EMNLP2025 论文提出的简单快速检索增强生成框架,通过双图边蒸馏机制显著提升 RAG 效率,特别适用于低资源环境下的知识图谱构建与检索。其核心在于将文档分块后使用 LLM 提取实体与关系边,形成双层图结构(local 实体图与 global 关系图),并通过边蒸馏(即 LLM profiling 生成键值对描述)实现知识浓缩,避免 GraphRAG 的重建开销。

双图边蒸馏的核心流程从文档分块开始,默认 chunk_token_size=1200、chunk_overlap_token_size=100,确保 chunk 粒度阈值控制在语义完整范围内,避免实体跨块丢失。证据显示,这种阈值设计在 UltraDomain 数据集上,使 LightRAG 的全面性胜率达 67.6%(vs NaiveRAG 32.4%),多样性 76.4%,远超基线。提取阶段,LLM 仅需单次调用(entity_extract_max_gleaning=1)生成实体(name/type/description)和关系(source/target/keywords/description),通过去重函数 D (・) 合并重复边,形成高效 KG。蒸馏过程使用 summary_context_size=10000、summary_max_tokens=500,进一步浓缩边描述,支持增量 union 操作,仅更新新边而非全图重建。

查询融合是低资源调优的关键,采用 dual-level 范式:local 模式检索 top_k=60 实体及其 1-hop 邻域(cosine_better_than_threshold=0.2),聚焦精确事实;global 模式检索关系边,提供高层语义;hybrid/mix 模式融合二者,chunk_top_k=20 保留最佳文本块。参数如 max_entity_tokens=6000、max_relation_tokens=8000、max_total_tokens=30000,确保上下文预算控制在低资源 LLM(如 Qwen3-30B,上下文≥32K)能力内。实验证据:在混合查询下,启用 rerank(如 BAAI/bge-reranker-v2-m3)后,性能提升显著,推理仅需 < 100 token 和 1 次 API 调用(vs GraphRAG 的多社区遍历)。

落地配置清单如下,确保检索效率与调优:

  1. 安装与初始化

    uv pip install lightrag-hku[api]
    cp env.example .env  # 配置LLM/嵌入模型,embedding_dim固定(如1536 for bge-m3)
    rag = LightRAG(working_dir="./storage", chunk_token_size=1200, chunk_overlap_token_size=100,
                   embedding_func=openai_embed, llm_model_func=gpt_4o_mini_complete,
                   llm_model_max_async=4, embedding_batch_num=32)
    await rag.initialize_storages()
    
  2. 索引构建(边蒸馏)

    • 批量插入:rag.insert (["doc1.txt", "doc2.txt"], max_parallel_insert=4)
    • 自定义 KG 插入:rag.insert_custom_kg ({...entities, relationships...})
    • 监控:entity_extract_max_gleaning=1(调试设 True 启用缓存),观察 kv_store_llm_response_cache.json 命中率。
  3. 查询融合参数

    param = QueryParam(mode="hybrid", top_k=60, chunk_top_k=20, enable_rerank=True,
                       max_total_tokens=30000, cosine_threshold=0.2)
    result = await rag.aquery("复杂查询", param=param)
    
    • 低资源调优:llm_model_kwargs={"options": {"num_ctx": 32768}} for Ollama;vector_db_storage_cls_kwargs={"cosine_better_than_threshold": 0.25}
  4. 效率监控与回滚

    • 阈值:embedding_cache_config={"similarity_threshold": 0.95};若召回低,降 cosine_threshold 至 0.15。
    • 存储:生产用 Neo4J(graph_storage="Neo4JStorage")或 PostgreSQL 全栈。
    • 回滚:rag.delete_by_doc_id ("doc_id") 后重建;TokenTracker 监控消耗。

风险控制:LLM≥32B 参数避免提取弱;嵌入模型变更需清 vector 表。实际部署中,hybrid 模式下 QPS 达 10+(4 并发),成本降 80% vs GraphRAG。

资料来源:HKUDS/LightRAG GitHub README;arXiv:2410.05779 (EMNLP2025 LightRAG 论文)。

查看归档