Hotdry.
ai-systems

LightRAG 双图检索融合:低资源环境下高效 RAG 实现

LightRAG 通过双图(实体-关系)结构实现简单高效的检索融合,支持低资源快速部署,提升多源 chunk 召回与生成质量。

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。部署步骤:

  1. 环境:uv pip install lightrag-hku 或 git clone + uv sync。
  2. 配置:export OPENAI_API_KEY=sk-...;.env 设置 LLM/embedding(如 bge-m3)。
  3. 初始化:rag = LightRAG(working_dir="./rag_storage", embedding_func=openai_embed, llm_model_func=gpt_4o_mini_complete);await rag.initialize_storages()。
  4. 索引:rag.insert ("文档内容") 或批量;支持 textract 多格式(PDF/DOCX/PPTX)。
  5. 查询:rag.query ("问题", param=QueryParam (mode="hybrid", top_k=60))。
  6. 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)

查看归档