LightRAG 通过双图索引机制,将文档转化为实体节点和关系边的知识图结构,实现对复杂关系的精确捕捉,避免传统 RAG 的碎片化检索问题。这种双图设计以实体图和关系图为核心,低资源环境下即可高效运行,支持 Ollama 等本地模型。
双图索引流程首先对文档分块(chunk_token_size=1200,overlap=100),使用 LLM(如 gpt-4o-mini)提取实体(如人名、组织)和关系(如“属于”、“位于”)。随后生成键值对:键为检索关键词,值为 LLM 摘要描述,实现高效向量嵌入。去重步骤合并重复节点/边,减少图规模,提升查询速度。LightRAG 支持多种存储:默认 NanoVectorDB + NetworkX 适合开发,生产推荐 Neo4J(图存储)+ PGVector(向量),cosine_better_than_threshold=0.2 过滤低质匹配。
查询融合是 LightRAG 的核心创新,支持 local(实体检索)、global(关系检索)和 hybrid/mix 模式。hybrid 模式下,低层关键词匹配实体(top_k=60),高层关键词匹配关系(top_k=60),融合 chunk_top_k=20 的文本块。token 预算控制确保上下文精炼:max_entity_tokens=6000、max_relation_tokens=8000、max_total_tokens=30000,避免 LLM 超限。mix 模式额外结合向量检索,enable_rerank=True 使用 bge-reranker-v2-m3 重排序,提升混合查询精度。
阈值选择需根据语料规模调优:小型语料(<10k 文档)设 top_k=40、cosine_threshold=0.25;大规模设 top_k=80、threshold=0.15。融合权重隐式通过 token 分配:实体优先本地细节(权重 ~40%),关系补充全局语义(~30%),chunks 填充证据(~30%)。实验显示,hybrid 模式胜率超 GraphRAG 10-20%,检索 token <100,API 调用仅 1 次。“LightRAG 在四个数据集上全面优于基线,hybrid 模式多样性提升显著”(arXiv:2410.05779)。
落地参数清单:
- 初始化:LightRAG(working_dir="./rag", embedding_func=openai_embed, llm_model_func=gpt_4o_mini_complete, chunk_token_size=1200, vector_storage="NanoVectorDBStorage", graph_storage="NetworkXStorage", vector_db_storage_cls_kwargs={"cosine_better_than_threshold": 0.2});await rag.initialize_storages()。
- 插入:rag.insert(docs, max_parallel_insert=4);增量支持,无需重建。
- 查询:QueryParam(mode="hybrid", top_k=60, chunk_top_k=20, enable_rerank=True, max_entity_tokens=6000);stream=True 支持流式。
- 调优:monitor RAGAS 指标(context_precision >0.85);低性能时增 llm_model_max_async=8 或切换 reranker。
- 监控点:Langfuse 追踪 token/latency;删除 adelete_by_doc_id() 回滚。
- 回滚策略:enable_llm_cache=True 保留缓存;workspace 隔离多实例。
生产部署 Docker compose up,支持 Ollama 本地化,成本降 99%。双图索引 + 查询融合使 LightRAG 适用于动态知识库,如企业文档 RAG。
资料来源:GitHub HKUDS/LightRAG;arXiv 2410.05779。