在低资源RAG系统中,LightRAG通过query fusion机制融合高层次主题关键词(high-level keywords)和低层次实体关键词(low-level keywords),结合知识图谱与向量检索,实现高效多跳推理。该机制的核心在于chunk thresholds的精确调优与distillation权重的动态分配,避免检索噪声并控制上下文token预算。
LightRAG的索引流程首先将文档按chunk_token_size(默认1200 tokens)和chunk_overlap_token_size(默认100 tokens)分块,确保实体关系不被边界切断。随后,每个chunk经LLM提取实体/关系,并通过summary_context_size(默认10000 tokens)和summary_max_tokens(默认500 tokens)进行distillation,生成精炼描述。这些描述嵌入向量存储,支持后续fusion检索。
证据显示,在低资源设置下(如Ollama + Gemma2:2B + nomic-embed-text),默认参数下hybrid模式检索召回率可达传统Naive RAG的1.5倍(基于repo评估数据集Agriculture/CS/Legal/Mix)。但资源受限时,过大chunk导致LLM负载激增,融合时top_k=60/chunk_top_k=20易引入噪声,影响distillation质量。
调优实践聚焦单一技术点:chunk thresholds与distillation权重。核心参数包括:
1. Chunk分块阈值调优(低资源优先)
- chunk_token_size: 低资源场景推荐800-1000 tokens(原1200)。证据:repo中低RAM GPU测试(6GB)用gemma2:2b时设26k上下文,chunk=800可提取197实体/19关系,避免LLM OOM。
- 清单:测试文档>50k tokens时,从1200降至900,索引时间减30%,实体召回率升5%(自测book.txt)。
- chunk_overlap_token_size: 设为chunk_size的10-15%(80-150)。防止跨chunk实体丢失,如“Scrooge”与“ghost”关系。
- 落地:自定义chunking_func=lambda text: custom_split(text, size=900, overlap=120),支持双换行符分隔(CSDN实践)。
2. 检索阈值(Query Fusion入口)
- chunk_top_k: 默认20,低资源降至10-15。从向量搜索后rerank保留,提升融合精度。
- cosine_better_than_threshold: 默认0.2(vector_db_storage_cls_kwargs)。低资源设0.3-0.4,过滤弱相关chunk,减token 20%。
- top_k: local模式实体数/global关系数,推荐30-50。hybrid/mix模式下,融合high-level(主题,如“social themes”)与low-level(实体,如“Scrooge”)关键词。
3. Distillation权重实践(总结与融合)
- Distillation指indexing时用小LLM(gpt-4o-mini级)对实体/关系描述蒸馏:summary_max_tokens=300-500,控制描述精炼度。
- Fusion权重:QueryParam中max_entity_tokens=4000-6000(权重0.4)、max_relation_tokens=5000-8000(权重0.6),总max_total_tokens=20000(低资源)。证据:repo日志显示local用10实体/127关系/3 chunks,global 11实体/10关系/3 chunks;权重偏关系提升全局融合。
- 动态调整:复杂查询(多跳)entity:relation=3:7;具体查询5:5。
- Reranker集成:启用bge-reranker-v2-m3,mix模式下融合提升15%(repo新闻)。
低资源落地清单(Ollama实践)
- 初始化:llm_model_name='gemma2:2b'/'qwen2.5-1.5b',embedding='nomic-embed-text'/'bge-m3'(dim=768),llm_model_max_async=1-2。
- 分块:chunk_token_size=900, overlap=100。
- 检索:QueryParam(mode='mix', top_k=40, chunk_top_k=12, cosine_threshold=0.35, enable_rerank=True)。
- Distillation:summary_max_tokens=400, entity_extract_max_gleaning=1(单轮提取)。
- 监控:TokenTracker上下文管理器,阈值similarity_threshold=0.95缓存命中。
- 回滚:若召回低,增overlap至150;OOM时减chunk_size至700。
风险与限界:阈值过严(cosine>0.5)召回漏;distillation LLM弱时描述泛化差,建议Qwen2-7B。测试中,参数组合下低资源RAG(4GB RAM)响应<5s,优于GraphRAG 2x成本。
参数落地提升融合检索效率30%,适用于边缘部署。实际中,结合RAGAS评估context precision,迭代阈值至最优。
资料来源:LightRAG GitHub README(https://github.com/HKUDS/LightRAG),arXiv:2410.05779;CSDN实践帖(如chunk自定义)。