LightRAG 是香港大学(HKUDS)开源的简单高效 RAG 框架,通过双图索引机制显著提升复杂查询的检索准确率,同时支持低资源蒸馏部署,适用于生产环境。该框架的核心在于将知识图谱分为实体图(local 层)和关系图(global 层),实现双层检索融合,避免传统 RAG 的碎片化问题。
双图索引的核心机制
LightRAG 的索引过程首先将文档分块(chunk_token_size=1200,chunk_overlap_token_size=100),使用 LLM(如 gpt-4o-mini)提取实体和关系,形成知识图谱。实体作为节点,关系作为边,构建双图结构:local 图聚焦实体描述(细粒度匹配),global 图聚焦关系连接(全局语义)。例如,在处理“电动车对城市空气质量的影响”查询时,local 图检索“电动车”“空气质量”等实体,global 图扩展“影响”“改善”等关系路径。这种双图设计捕捉多跳依赖,GitHub 文档显示其在 UltraDomain 数据集上全面性胜率达 67.6%,远超 NaiveRAG 的 32.4%。
去重优化(Dedupe 操作)合并重复实体,减少图规模;键值对生成(Profiling)为每个节点/边产生 embedding,便于向量检索。相比 GraphRAG 的全重建,LightRAG 支持增量更新,仅处理新文档并 union 到现有图,成本降低 80%。
学习查询融合实践
查询融合是 LightRAG 的关键创新,通过 QueryParam 配置 hybrid 模式融合 local/global 检索。过程如下:
- 关键词提取:LLM 从查询生成 local_keywords(实体级,如“电动车”)和 global_keywords(关系级,如“影响空气质量”)。
- 双层匹配:vector_storage(如 NanoVectorDB)检索 top_k=60 实体/关系,cosine_better_than_threshold=0.2 过滤。
- 融合聚合:收集邻近节点子图,rerank(BAAI/bge-reranker-v2-m3)重排序,token 控制:max_entity_tokens=6000,max_relation_tokens=8000,max_total_tokens=30000。
- 上下文生成:融合实体描述、关系摘要和 chunk_top_k=20 文本块,注入 LLM 生成响应。
参数调优清单:
- 高准确率:mode="hybrid",enable_rerank=True,top_k=60(农业/法律数据集最佳)。
- 低延迟:llm_model_max_async=4,embedding_batch_num=32,mix 模式默认。
- 多模态融合:集成 RAG-Anything,处理 PDF/图像,query 时指定 user_prompt="优先图表实体"。
实验证据:在法律数据集(500万 token),LightRAG 多样性胜率 86.4%,赋能性 83.6%,hybrid 模式提升 20-30%。
风险监控:
- 阈值过低(<0.2)引入噪声,回滚 cosine_threshold=0.3。
- Token 超支:监控 max_total_tokens,fallback naive 模式。
- LLM 漂移:启用 llm_cache,定期清 cache(aclear_cache(modes=["hybrid"]))。
低资源蒸馏部署
LightRAG 支持低资源蒸馏,从大模型(如 gpt-4o)“蒸馏”到小模型(Llama-3.2-1B,Ollama),无需额外训练。部署参数:
- 模型注入:ollama_model_complete + nomic-embed-text(dim=768),llm_model_kwargs={"num_ctx":32768}。
- 存储轻量:NanoVectorDBStorage + NetworkXStorage,默认本地文件。
- 蒸馏流程:
- 索引阶段:用大模型提取图,小模型仅查询(entity_extract_max_gleaning=1)。
- 运行时:embedding_cache_config={"enabled":True, "similarity_threshold":0.95},复用 embedding。
- Docker 一键:docker compose up,.env 配置 Ollama API。
落地清单(<1h 部署):
1. uv pip install lightrag-hku
2. export OLLAMA_API_KEY=...; ollama pull qwen2:1b # 小模型
3. rag = LightRAG(working_dir="./rag_storage", llm_model_func=ollama_model_complete, embedding_func=ollama_embed)
4. await rag.initialize_storages()
5. rag.insert("your docs")
6. result = rag.query("query", param=QueryParam(mode="hybrid", top_k=40))
在 6GB GPU 上,book.txt(圣诞颂歌)提取 197 实体/19 关系,查询 <100 token/1 API 调用。低资源下准确率降 <5%,成本降 99%。
生产参数与回滚
- 阈值:cosine_threshold=0.25(平衡召回/精度),TOP_K=40(生产默认)。
- 监控:Langfuse 集成(pip install lightrag-hku[observability]),追踪 token/latency。
- 回滚:删除 doc_id(adelete_by_doc_id),重建子图。
- 规模:PostgreSQL/Neo4j 生产存储,支持亿级节点。
LightRAG 双图 + 融合机制,使 RAG 从“文本匹配”进化为“图推理”,低资源实践落地门槛低,推荐企业知识库/多模态 RAG。
资料来源:
- HKUDS/LightRAG GitHub:核心代码与参数。
- arXiv:2410.05779:《LightRAG: Simple and Fast Retrieval-Augmented Generation》:实验验证。
(正文 1256 字)