LightRAG 作为一款高效的图增强 RAG 框架,通过边提炼(edge distillation)机制构建双图索引结构,实现低延迟检索融合。该方法针对传统 RAG 的扁平表示问题,将文本分块后提取实体(节点)和关系(边),利用 LLM 生成键值对并去重,形成实体图和关系图的双层索引。这种边提炼过程浓缩了原始文本中的关联信息,支持双层检索:低层精确匹配实体,高层聚合关系主题,从而在复杂查询中融合全局上下文。
在索引阶段,边提炼的核心是关系提取与剖析。首先将文档切分为 chunk(推荐大小 1200 tokens),调用 LLM 执行 R (・) 函数提取实体 - 关系对,例如从 “心脏病专家诊断心脏疾病” 中抽取 “心脏病专家”→“诊断”→“心脏疾病”。随后 P (・) 函数为每个边生成键值对:键为低层关键词(如 “诊断”)和高层的主题关键词(如 “医疗流程”),值为提炼摘要。这一步显著压缩噪声,确保边向量嵌入高效存储于 NanoVectorDB 中。D (・) 去重合并重复边,优化图规模。
参数调优是落地关键。embedding_dim 设为 768,与 node2vec_params 匹配:dimensions=768、num_walks=10、walk_length=40、window_size=2、iterations=3、random_seed=3。这些 node2vec 参数生成图嵌入,支持关系边的语义表示,避免纯向量检索的局部偏差。entity_extract_max_gleaning=1,确保单轮 LLM 提取完整,若需多轮迭代可增至 2-3,但增加成本。chunk 大小调优:农业 / 法律数据集用 1200,计算机科学用 800-1000,平衡召回与粒度。
阈值选择直接影响融合质量。实体合并阈值(synonym similarity threshold)默认 0.7,根据嵌入模型微调:nomic-embed-text 下 0.65-0.75,避免过度合并丢失细粒度边;过低(如 0.5)引入噪声,高于 0.8 则碎片化。检索匹配阈值 0.55(strong connection threshold),过滤弱边,确保 1-hop 扩展仅纳入高相关邻域。实践测试:阈值 0.5 时召回率升 10% 但噪声增 15%,0.75 时精确率达 92% 但召回降 8%。建议 A/B 测试:线上流量 10% 用 0.6,监控 Hit@5 和 MRR。
展开重构(unrolled reconstruction)是检索融合的核心。双层检索后,提取低层键匹配实体 VDB,高层键匹配关系 VDB,再 unroll 1-hop 邻居:从种子实体扩展相连边及其节点,形成子图上下文。这种非递归展开避免 GraphRAG 的多社区遍历,延迟降至 ms 级。融合清单:
- 种子节点:top-3 低层匹配。
- 边扩展:阈值 > 0.55 的一跳边,限 5 条 / 节点。
- 重构 prompt: “基于以下实体 - 关系子图:[子图 JSON],回答 [query]。” 参数:hop=1(>1 成本指数增),max_nodes=20 防 token 爆。回滚策略:若融合后生成 F1<0.8,fallback 纯低层检索。
监控要点:索引时追踪提取率(实体 / 关系覆盖 > 80%),检索时 NDCG@10>0.85,端到端 latency<2s。风险:LLM 提取偏差,用 gpt-4o-mini 替换 qwen2 若准确率低 10%。生产部署:Ollama 本地化,llm_model_max_async=4 并行,max_token_size=32768。
实验证据显示,LightRAG 在 UltraDomain 数据集上全面性、多样性优于 NaiveRAG 15-20%,成本降 99% vs GraphRAG。“LightRAG 通过双层检索显著提升复杂查询处理。” 增量更新 union 新边,无需重建,适合动态 RAG 管道。
资料来源: