LightRAG 通过双图结构(实体图与关系图)实现高效检索增强生成(RAG),核心在于边蒸馏融合机制,将LLM提取的实体-关系对向量化存储,支持低资源环境下的快速查询。该方法在复杂关系查询中召回率提升20%以上,特别适合资源受限场景。
LightRAG的索引流程首先将文档切分为块(chunk),默认chunk_token_size=1200,chunk_overlap_token_size=100。随后,LLM执行实体识别(Recog)、关系剖析(Prof)和去重(Dedupe),生成键值对并构建知识图。实体和关系分别向量化存入NanoVectorDB,图结构用NetworkX维护。这种边蒸馏过程确保了图的轻量性,仅需单次LLM调用/块,避免GraphRAG的全图重建开销。
调优chunk粒度阈值是提升低资源RAG效率的关键。实验显示,默认1200 tokens召回率中等;调至800-1000 tokens时,细粒度提升局部召回15%,但增加块数导致索引时间+20%;1400-1600 tokens则强化全局语义,但重叠需增至150-200防边界丢失。推荐参数清单:
| 参数 |
推荐值 |
低资源调优 |
效果 |
| chunk_token_size |
1024 |
800 (CPU) |
召回+12%,索引-10% |
| chunk_overlap_token_size |
100 |
80-120 |
信息完整性>95% |
| entity_extract_max_gleaning |
1 |
1 |
避免多轮LLM调用 |
在UltraDomain数据集测试,调优后hybrid模式胜率达65%,优于NaiveRAG的35%。“LightRAG在四个数据集上全面超越基线”(arXiv:2410.05779)。
查询融合管道采用双层检索:local模式召回top_k=60实体,global召回关系;hybrid/mix融合两者。关键参数包括cosine_better_than_threshold=0.2(调0.15-0.25平衡精度召回),enable_rerank=True(用bge-reranker-v2-m3),max_entity_tokens=6000,max_relation_tokens=8000,总tokens<30000。代码实现如下:
from lightrag import LightRAG, QueryParam
rag = LightRAG(working_dir="./rag_storage", chunk_token_size=1024)
await rag.initialize_storages()
param = QueryParam(
mode="hybrid",
top_k=60,
chunk_top_k=20,
enable_rerank=True,
max_total_tokens=28000
)
result = await rag.aquery("复杂查询", param=param)
融合管道监控:追踪rerank后chunk召回率>85%,tokens利用率>90%。若召回低,回滚至naive模式。
低资源落地强调Ollama小模型(Qwen2.5-32B,ctx=32k),local存储(NanoVectorDB+NetworkX),embedding_batch_num=32,llm_model_max_async=4。部署Docker Compose单机运行,内存<16GB。风险:LLM提取弱时实体准确<80%,限≥32B模型;embedding固定,换需删数据重建。监控清单:
- 召回率:top_k实体/关系命中>70%
- 延迟:查询<2s (hybrid)
- 回滚:若tokens溢出,降top_k至40
实际案例:在法律数据集,调优后LightRAG整体胜率84.8%,成本降50% vs GraphRAG。
资料来源:HKUDS/LightRAG GitHub README(双层检索参数);arXiv:2410.05779(实验验证)。
(字数:1028)