LightRAG 的双图 RAG 架构通过实体向量库(entity_vdb)和关系向量库(relationships_vdb)实现低资源快速检索,显著优于纯稠密向量基线,尤其在复杂查询场景下提升召回率 20-60%。传统稠密 RAG 仅依赖 chunk 相似度,易忽略跨文档实体关系,导致全局理解缺失;LightRAG 则构建知识图(NetworkX 或 Neo4j),将实体节点和关系边双向嵌入,实现 local(实体中心)和 global(关系中心)双层检索,最终 hybrid 融合输出上下文。该设计在低资源设备上运行顺畅,支持 NanoVectorDB 等轻量存储,检索延迟 <100ms。
核心在于边提炼(edge distillation)过程:LLM 从 chunk 提取关系三元组(source_entity, target_entity, description),并生成 keywords 和 weight。通过 _merge_edges_then_upsert 合并同边,调用 LLM 摘要(summary_max_tokens=500, summary_context_size=10000),避免冗长描述膨胀图规模。证据显示,在 UltraDomain 数据集上,LightRAG 的 global 模式仅用 10 关系即可覆盖主题,而 naive RAG 需 60 chunk。“LightRAG 通过边提炼压缩知识,global 查询仅用 11 实体、10 关系和 3 chunk。”实际部署中,entity_extract_max_gleaning=1 控制循环,避免过度提取;llm_model_max_async=4 并行加速。风险:小 LLM(如 Qwen3-30B)提取准确率低,建议索引用 32B+ 模型,查询用更强模型。
分块阈值(chunk thresholding)优化召回精度:默认 chunk_token_size=1200、chunk_overlap_token_size=100,使用 Tiktoken(gpt-4o-mini)分块,确保实体不跨界丢失。向量检索设 cosine_better_than_threshold=0.2,过滤低质匹配;chunk_top_k=20 初始检索后 rerank(BAAI/bge-reranker-v2-m3)。参数清单:
- 粗分块:1200 token + 100 overlap,tokenizer=tiktoken(gpt-4o-mini)。
- 阈值:cosine >0.2,top_k=60(local 实体数,global 关系数)。
- Rerank:enable_rerank=True,mix 模式默认。
监控点:embedding_batch_num=32、embedding_func_max_async=16,避免 OOM;若召回低,调 chunk_top_k=30,回滚至 naive 模式测试。
查询融合(query fusion)在 hybrid/mix 模式实现:先 LLM 提取 ll_keywords(低阶实体)和 hl_keywords(高阶主题),local 检索实体扩展一跳邻居(_find_most_related_text_unit_from_entities),global 从关系扩展实体(_find_most_related_entities_from_relationships),融合 entities_context + relations_context + text_units_context,总 max_total_tokens=30000。QueryParam 配置:
param = QueryParam(
mode="hybrid",
top_k=60, chunk_top_k=20,
max_entity_tokens=6000, max_relation_tokens=8000,
enable_rerank=True
)
融合后上下文 token 预算:实体 20%、关系 27%、chunk 53%。实验验证:在 Legal 数据集,hybrid 胜 naive 83.6% comprehensiveness。落地策略:conversation_history 注入多轮上下文;embedding_cache_config={"similarity_threshold":0.95} 缓存相似查询。回滚:若融合 hallucination 高,降 top_k=30,仅用 local。
工程参数清单:
| 参数 |
默认 |
低资源调优 |
监控阈值 |
| chunk_token_size |
1200 |
800 |
>1500 OOM |
| cosine_threshold |
0.2 |
0.3 |
<0.1 噪声高 |
| top_k |
60 |
40 |
召回@10 >0.8 |
| llm_model_max_async |
4 |
2 |
GPU 利用 80% |
| max_total_tokens |
30000 |
16000 |
上下文溢出率 <5% |
部署监控:Langfuse 追踪 token/latency;RAGAS 评估 context_precision。低资源场景:Ollama + nomic-embed-text(dim=768),num_ctx=32768。
资料来源:HKUDS/LightRAG GitHub README;arXiv:2410.05779。