在检索增强生成 (RAG) 系统中,传统方法往往依赖扁平文本块检索,难以捕捉实体间复杂关系,导致答案碎片化且缺乏上下文连贯性。LightRAG 作为一种轻量级框架,通过构建简单双图结构——实体图和关系图——解决了这一痛点。它利用 LLM 进行实体-关系提取,形成结构化知识图谱,支持递归检索,实现高效的多跳推理。这种设计特别适合本地 LLM 应用,避免了重型索引和分片存储的复杂性,确保快速部署和低资源消耗。
LightRAG 的核心在于双图结构的构建。首先,文档被分割成小块(默认 chunk_token_size=1200,overlap=100),便于 LLM 处理。提取阶段,使用 LLM(如 GPT-4o-mini)提示模板识别实体(节点,如“养蜂人”)和关系(边,如“管理→蜜蜂”)。证据显示,这种提取基于精心设计的提示,能从文本中生成三元组,例如从“心脏病专家评估症状”中抽取“心脏病专家”诊断“心脏病”。随后,为每个实体和关系生成键值对:键为关键词(如实体名),值为 LLM 总结的描述文本。这形成实体图(聚焦节点属性)和关系图(聚焦边连接),双图互补,避免单一图的冗余。去重优化合并重复节点,确保图谱精简,证据来自 LightRAG 的增量更新机制,仅处理新数据子图并与现有图合并,无需全量重建。
递归检索是 LightRAG 的另一亮点,支持 dual-level 模式:local(低层,实体细节)和 global(高层,主题摘要)。在 local 模式下,查询如“谁写了《傲慢与偏见》”匹配实体关键词,检索节点及其一跳邻居(直接关系),证据显示这利用向量数据库(如 NanoVectorDB)快速匹配,阈值 cosine_better_than_threshold=0.2。global 模式针对抽象查询如“AI 如何影响教育”,匹配关系关键词,聚合多实体路径,实现递归扩展至高阶关联(如“养蜂人→蜂群→蜂蜜生产”)。混合模式(hybrid)结合两者,top_k=60(实体)和 chunk_top_k=20(文本块),再通过 reranker(如 BAAI/bge-reranker-v2-m3)重排。实验证据表明,这种递归机制在 UltraDomain 数据集上,LightRAG 的全面性胜率达 67.6%,远超 NaiveRAG 的 32.4%,因为它捕捉了图中隐含的多跳依赖。
为实现可落地部署,LightRAG 强调本地优化。使用 Ollama 集成本地模型(如 Llama-3.2-1B),设置 llm_model_kwargs={"options": {"num_ctx": 32768}} 以支持长上下文。嵌入模型推荐 BAAI/bge-m3(维度 1024),embedding_batch_num=32 控制批处理。存储选用 NetworkX(图)和 NanoVectorDB(向量),适合单机无外部 DB。参数调优:entity_extract_max_gleaning=1 限制提取循环,llm_model_max_async=4 并发 LLM 调用,max_entity_tokens=6000 和 max_relation_tokens=8000 控制令牌预算,总 max_total_tokens=30000 防溢出。监控要点包括:跟踪 LLM 缓存命中率(enable_llm_cache=True),若低于 80% 则优化提示;观察检索延迟,若超 500ms 则降低 top_k;风险如小 LLM 提取不准,可 fallback 到 Qwen2-7B。回滚策略:若图更新失败,保留旧 kv_store_llm_response_cache.json,重跑增量。
落地清单:
- 安装:uv pip install lightrag-hku,支持 Ollama/HuggingFace。
- 初始化:rag = LightRAG(working_dir="./rag_storage", embedding_func=openai_embed if API else hf_embed, llm_model_func=ollama_model_complete, graph_storage="NetworkXStorage");await rag.initialize_storages() 和 initialize_pipeline_status()。
- 插入:rag.insert(["文档1", "文档2"], max_parallel_insert=4);支持多文件如 PDF via textract。
- 查询:response = rag.query("查询", param=QueryParam(mode="hybrid", top_k=60, stream=True));添加 conversation_history 维护对话。
- 更新:新文档直接 rag.insert,新实体/关系自动合并。
- 评估:集成 RAGAS,metrics 如 faithfulness>0.8,context_relevancy>0.9。
- 部署:Docker compose up,支持 Web UI 和 API;PostgreSQL/Neo4J 可选扩展。
这种双图设计使 LightRAG 在本地 LLM 场景下,实现快 RAG:索引无需重型分片,检索递归高效,适用于知识密集型应用如本地文档 Q&A。相比 GraphRAG 的高成本,LightRAG 更实用,证据显示其在农业/法律数据集上整体胜率 60%以上。
资料来源:LightRAG GitHub (https://github.com/HKUDS/LightRAG),arXiv 论文 (2410.05779),LearnOpenCV 指南。