在低资源 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 自定义)。