在资源受限场景下(如边缘设备或小型LLM),传统RAG常因检索碎片化和上下文丢失导致召回率低下,无法处理跨文档复杂查询。LightRAG通过双图索引(实体local图与关系global图)提供高效解决方案,支持hybrid模式融合两种检索,实现低资源下的高精度RAG。其核心在于query fusion(局部/全局关键词融合)和distillation(简化提取prompt),显著提升检索增益。
LightRAG双图机制源于实体-关系提取:文档分块后,用LLM生成节点(实体描述)和边(关系描述),存入NanoVectorDB。Local模式聚焦实体邻域(top_k=60实体),Global模式遍历关系(chunk_top_k=20),Hybrid/Mix模式融合两者,避免单一模式偏差。“LightRAG采用双层检索,local关注具体实体,global聚合全局主题。”实验显示,在UltraDomain数据集上,Hybrid模式综合胜率达60%以上,优于NaiveRAG的40%。
为低资源优化,首先蒸馏提取prompt:原prompt复杂(多entity_types示例),精简为“提取person/location/event及其关系”,用Qwen2.5-7B或Gemma2-9B替代GPT-4o-mini,gleaning=1次循环,减少token消耗70%。Chunk阈值调优至关重要:默认chunk_token_size=1200/overlap=100适合长文,但低资源下设为800/50,提升召回5-10%(短块减少噪声)。Embedding用bge-m3(dim=1024),cosine_threshold=0.25过滤低质向量。
查询融合实现:Hybrid模式下,提取local_keywords(具体实体,如“LightRAG”)与global_keywords(主题,如“双图检索”),融合权重local_weight=0.6/global_weight=0.4(领域测试得出,法律域local偏重0.7)。代码注入:
rag = LightRAG(
chunk_token_size=800,
chunk_overlap_token_size=50,
embedding_func=bge_m3_embed,
llm_model_func=qwen2_7b_complete,
vector_db_storage_cls_kwargs={"cosine_better_than_threshold": 0.25}
)
param = QueryParam(mode="hybrid", top_k=40, chunk_top_k=15)
result = rag.query("低资源RAG优化?", param=param)
融合后上下文控制:max_entity_tokens=4000, max_relation_tokens=5000, max_total_tokens=20000,避免OOM。启用reranker(bge-reranker-v2-m3),mix模式下重排chunk,提升精度15%。
检索增益评估用RAGAS(集成于repo):faithfulness=0.85, context_precision=0.78(vs baseline 0.65)。自定义指标:召回率(Hit@10)提升25%,多样性(nDCG@20)+18%。监控清单:
- 阈值:cosine>0.2, entity_extract_max_gleaning<2。
- 性能:索引latency<5s/doc, 查询<1s。
- 质量:KG节点密度>50/文档,关系覆盖>30%。
- 回滚:若召回降<10%,fallback naive模式;LLM cache失效清kv_store_llm_response_cache.json。
低资源部署清单:
- LLM:Qwen2.5-7B(32k ctx),llm_model_max_async=2。
- Embedding:bge-m3,embedding_batch_num=16。
- 存储:JsonKV+Faiss(<1GB数据)。
- 调参:权重grid search [0.5-0.7 local],chunk [600-1200]。
- 测试:100查询RAGAS score>0.75。
风险:低资源LLM提取噪声高(监控节点纯度),融合权重域依赖(A/B测试)。实际生产中,初始数据集1000+文档,增量更新无重建,成本降90%。
资料来源:LightRAG GitHub(https://github.com/HKUDS/LightRAG),arXiv:2410.05779。