LightRAG 的双图检索融合机制是其核心创新,通过构建实体本地图(local entity graph)和关系全局图(global relation graph),实现对复杂查询的高效召回与生成优化。这种设计避免了传统 RAG 的扁平向量检索局限,直接在图结构上进行多源 chunk 融合,支持低资源环境下的快速部署。
双图结构的构建原理
LightRAG 先将文档切分成 chunk(默认 chunk_token_size=1200,overlap=100),然后利用 LLM 提取实体与关系,形成三元组。实体节点存储为键值对(Key: 实体名,Value: LLM 生成的描述),关系边同样键值化(Key: 主题关键词,Value: 关系摘要)。去重后合并成双图:本地图聚焦实体及其一跳邻居,提供精确细节;全局图聚焦关系,提供跨实体主题聚合。
这种双图分离提升了检索针对性:本地图处理“谁写了《傲慢与偏见》”等实体查询,全局图处理“人工智能如何影响教育”等主题推理。相比纯向量 RAG,双图减少了噪声,支持多跳扩展(默认检索一跳邻居),实验显示在法律/农业数据集上召回率提升 20-60%。
检索融合的多模式实现
检索入口是 QueryParam,支持 local/global/hybrid/mix/naive 等模式,默认 hybrid。流程:LLM 提取查询关键词 → 向量 DB 匹配(cosine_threshold=0.2)→ 图扩展 → rerank(可选 bge-reranker-v2-m3)→ 上下文融合。
- local 模式:top_k=60 实体检索 + 邻居扩展,max_entity_tokens=6000 控制 token 预算,适合事实查询。
- global 模式:top_k=60 关系检索,max_relation_tokens=8000,聚合多实体摘要。
- hybrid/mix 模式:融合 chunk_top_k=20 文本块 + 图结果,max_total_tokens=30000,确保上下文完整。mix 额外结合向量,提升混合查询。
融合时,按相似度/权重排序,注入 LLM prompt(支持 user_prompt 自定义)。低 token 消耗(<100/query)是关键:仅 1 次 LLM 关键词提取 + 高效图遍历,避免 GraphRAG 的社区遍历(数十万 token)。
参数落地建议:
- 初建:embedding_batch_num=32,llm_model_max_async=4,chunk_overlap_token_size=100。
- 高负载:enable_rerank=True,vector_db_storage_cls_kwargs={"cosine_better_than_threshold":0.3}。
- 监控:summary_context_size=10000,summary_max_tokens=500,确保摘要精炼。
低资源部署清单
LightRAG 天生支持低资源:默认 NanoVectorDBStorage/NetworkXStorage/JsonKVStorage,无需外部 DB。部署步骤:
- 环境:uv pip install lightrag-hku 或 git clone + uv sync。
- 配置:export OPENAI_API_KEY=sk-...;.env 设置 LLM/embedding(如 bge-m3)。
- 初始化:rag = LightRAG(working_dir="./rag_storage", embedding_func=openai_embed, llm_model_func=gpt_4o_mini_complete);await rag.initialize_storages()。
- 索引:rag.insert("文档内容") 或批量;支持 textract 多格式(PDF/DOCX/PPTX)。
- 查询:rag.query("问题", param=QueryParam(mode="hybrid", top_k=60))。
- Server:lightrag-server 起 Web UI/API,支持 Ollama 兼容。
Docker 一键:docker compose up。生产选 Neo4J/PostgreSQL,workspace 隔离多租户。删除:rag.delete_by_doc_id("id"),自动重建受影响实体。
回滚策略:enable_llm_cache=True 保留缓存;embedding_cache_config={"enabled":True, "similarity_threshold":0.95} 复用相似查询。
实战参数调优与风险规避
复杂查询阈值:若 top_k>100,增 embedding_func_max_async=16。监控:TokenTracker 追踪消耗;Langfuse 集成 observability。
风险:LLM 提取不准 → 用 32B+ 模型(如 Qwen2.5-32B),entity_extract_max_gleaning=1。embedding 固定 → 索引前定 bge-m3(dim=1024)。
双图融合使 LightRAG 在 EMNLP 2025 基准中胜 NaiveRAG 60%、GraphRAG 10-20%,特别全局查询。低资源下,单机 8GB RAM 即可跑千文档。
资料来源:
- GitHub HKUDS/LightRAG README
- arXiv:2410.05779 "LightRAG: Simple and Fast Retrieval-Augmented Generation"
(正文字数:1028)