
代码仓库:MiniRAG: Towards Extremely Simple Retrieval-Augmented Generation
Tianyu Fan, Jingyuan Wang, Xubin Ren, Chao Huang (通讯作者)
pip install minirag-hku 来运行我们的代码!MiniRAG 是一个极其简单的检索增强生成框架,它通过异构图索引和轻量级拓扑增强检索,使小模型也能实现良好的 RAG 性能。
对高效、轻量级检索增强生成(RAG)系统日益增长的需求,凸显了在现有 RAG 框架中部署小语言模型(SLM)时面临的重大挑战。由于 SLM 有限的语义理解和文本处理能力,当前方法面临严重的性能下降,阻碍了其在资源受限场景下的广泛应用。为了解决这些根本性限制,我们提出了 MiniRAG,一个为极简和高效而设计的新型 RAG 系统。MiniRAG 引入了两项关键技术创新:(1)一种语义感知的异构图索引机制,将文本块和命名实体结合在一个统一的结构中,减少了对复杂语义理解的依赖;(2)一种轻量级的拓扑增强检索方法,利用图结构进行高效的知识发现,无需高级语言能力。我们的大量实验表明,MiniRAG 在使用 SLM 时,性能仍可与基于 LLM 的方法相媲美,同时仅需 25% 的存储空间。此外,我们贡献了一个全面的基准数据集 LiHua-World,用于在具有复杂查询的真实设备端场景下评估轻量级 RAG 系统。

MiniRAG 采用基于关键组件(异构图索引和轻量级基于图的知识检索)的简化工作流程。该架构解决了设备端 RAG 系统面临的独特挑战,在效率和效果上均进行了优化。
cd MiniRAG
pip install -e .
pip install lightrag-hku
./reproduce 目录中找到。./dataset 目录。./dataset/LiHua-World/data/ 中,名为 LiHuaWorld.zip。如果你想使用其他数据集,可以将其放在 ./dataset/xxx 目录下。然后使用以下 bash 命令为数据集建立索引:
python ./reproduce/Step_0_index.py
python ./reproduce/Step_1_QA.py
或者,使用 ./main.py 中的代码来初始化 MiniRAG。
| 模型 | NaiveRAG | GraphRAG | LightRAG | MiniRAG | ||||
|---|---|---|---|---|---|---|---|---|
| 准确率↑ | 错误率↓ | 准确率↑ | 错误率↓ | 准确率↑ | 错误率↓ | 准确率↑ | 错误率↓ | |
| LiHua-World | ||||||||
| Phi-3.5-mini-instruct | 41.22% | 23.20% | / | / | 39.81% | 25.39% | 53.29% | 23.35% |
| GLM-Edge-1.5B-Chat | 42.79% | 24.76% | / | / | 35.74% | 25.86% | 52.51% | 25.71% |
| Qwen2.5-3B-Instruct | 43.73% | 24.14% | / | / | 39.18% | 28.68% | 48.75% | 26.02% |
| MiniCPM3-4B | 43.42% | 17.08% | / | / | 35.42% | 21.94% | 51.25% | 21.79% |
| gpt-4o-mini | 46.55% | 19.12% | 35.27% | 37.77% | 56.90% | 20.85% | 54.08% | 19.44% |
| MultiHop-RAG | ||||||||
| Phi-3.5-mini-instruct | 42.72% | 31.34% | / | / | 27.03% | 11.78% | 49.96% | 28.44% |
| GLM-Edge-1.5B-Chat | 44.44% | 24.26% | / | / | / | / | 51.41% | 23.44% |
| Qwen2.5-3B-Instruct | 39.48% | 31.69% | / | / | 21.91% | 13.73% | 48.55% | 33.10% |
| MiniCPM3-4B | 39.24% | 31.42% | / | / | 19.48% | 10.41% | 47.77% | 26.88% |
| gpt-4o-mini | 53.60% | 27.19% | 60.92% | 16.86% | 64.91% | 19.37% | 68.43% | 19.41% |
表中,/ 表示该方法难以生成有效响应。
所有代码都可以在 ./reproduce 目录中找到。
├── dataset
│ └── LiHua-World
│ ├── README.md
│ ├── README_CN.md
│ ├── data
│ │ ├── LiHuaWorld.zip
│ └── qa
│ ├── query_set.csv
│ └── query_set.json
├── minirag
│ ├── kg
│ │ ├── __init__.py
│ │ ├── neo4j_impl.py
│ │ └── oracle_impl.py
│ ├── __init__.py
│ ├── base.py
│ ├── exceptions.py
│ ├── llm.py
│ ├── minirag.py
│ ├── operate.py
│ ├── prompt.py
│ ├── storage.py
│ └── utils.py
├── reproduce
│ ├── Step_0_index.py
│ └── Step_1_QA.py
├── LICENSE
├── main.py
├── README.md
├── README_CN.md
├── requirements.txt
├── setup.py

LiHua-World 是一个专为设备端 RAG 场景设计的数据集,包含一位名为 LiHua 的虚拟用户一年的聊天记录。该数据集包含三种类型的问题:单跳、多跳和总结,每个问题都配有手动标注的答案和支持文档。更多详情,请参阅 LiHua-World 数据集的 README。
感谢所有的贡献者!
我们的框架和代码库参考了以下相关工作,它们是我们工作的基础:nano-graphrag 和 LightRAG。感谢他们的出色工作。
@article{fan2025minirag,
title={MiniRAG: Towards Extremely Simple Retrieval-Augmented Generation},
author={Fan, Tianyu and Wang, Jingyuan and Ren, Xubin and Huang, Chao},
journal={arXiv preprint arXiv:2501.06713},
year={2025}
}
感谢您对我们工作的关注!