关于 MiniRAG
MiniRAG 是可自托管的 RAG 知识库,使用 SQLite 存储,并结合混合检索生成带来源引用的回答。它面向需要通过网页界面、REST API 或 MCP 服务进行文档问答的团队,所有功能运行在单个 Spring Boot 进程中。
主要功能
- 01向量与 BM25 混合检索
- 02RRF 结果融合及可选重排
- 03带可点击引用的回答
- 04流式网页界面
- 05单进程 SQLite 存储
- 06网页界面、REST API 和 WeChat Work
适用场景
- 01基于导入的语料回答问题
- 02使用向量、混合或重排模式检查检索
- 03在网页界面中流式查看引用回答
- 04向 MCP 客户端提供语料查询
MCP 相关
内置 MCP 服务使用 SSE,提供用于获取引用回答的 `query` 和用于添加文档的 `ingest_text`。文档导入工具需要管理员密钥。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://minirag.kimelody.de5.net/sseclaude mcp add --transport sse kimelody-minirag https://minirag.kimelody.de5.net/sse{"mcpServers":{"kimelody-minirag":{"type":"sse","url":"https://minirag.kimelody.de5.net/sse"}}}在 Cursor 中打开{"servers":{"kimelody-minirag":{"type":"sse","url":"https://minirag.kimelody.de5.net/sse"}}}在 VS Code 中打开{"mcpServers":{"kimelody-minirag":{"type":"sse","url":"https://minirag.kimelody.de5.net/sse"}}}{"mcpServers":{"kimelody-minirag":{"serverUrl":"https://minirag.kimelody.de5.net/sse"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
https://minirag.kimelody.de5.net/sse需要授权工具
详细介绍
MiniRAG
单个 Spring Boot 进程即可运行的可自托管 RAG 知识库:使用 SQLite 存储,支持混合检索、带引用的回答,并内置 MCP 服务。无需向量数据库或消息队列。
功能
- 混合检索 — 内存余弦相似度 + SQLite FTS5(BM25),使用 RRF 融合;可选 LLM 重排
- 带引用的回答 — 可点击的
[n]引用;仅显示实际引用的来源 - 流式网页 UI — SSE、打字机效果渲染、Markdown、检索模式切换器(向量 / 混合 / 重排)
- 占用空间小 — 单进程,RSS 约 250MB,可在 1GB VPS 上运行
- 多种接口 — MCP 服务(SSE 传输)、REST API、网页 UI、企业微信回调集成
快速开始
docker run -d --name minirag -p 18090:18090 --memory 512m \
-v $(pwd)/data:/app/data \
-e DEEPSEEK_API_KEY=sk-... \
-e EMBEDDING_API_KEY=sk-... \
ghcr.io/kimelody/minirag:latest
打开 http://localhost:18090 即可开始提问。数据存储在 ./data 中(SQLite,会自动创建)。
配置
| 环境变量 | 必需 | 默认值 | 描述 |
|---|---|---|---|
DEEPSEEK_BASE_URL | 否 | https://api.deepseek.com | 任意兼容 OpenAI 的聊天端点 |
DEEPSEEK_API_KEY | 是 | — | 聊天模型 API 密钥 |
EMBEDDING_BASE_URL | 否 | https://api.siliconflow.cn/v1 | 兼容 OpenAI 的嵌入端点 |
EMBEDDING_API_KEY | 是 | — | 嵌入 API 密钥 |
EMBEDDING_MODEL | 否 | BAAI/bge-m3 | 嵌入模型 |
DEMO_KEY | 否 | — | 只读 API 的访客访问码;未设置时为开放访问(本地开发) |
ADMIN_KEY | 否 | — | 调用摄取 API 所需的管理员密钥 |
MCP
两个工具:query(question, mode?) — 提问并获取带引用的回答;ingest_text(docId, text, adminKey) — 添加文档。
{
"mcpServers": {
"minirag": {
"url": "http://localhost:18090/sse"
}
}
}
托管演示端点需要基本身份验证:https://minirag.kimelody.de5.net/sse(凭据请联系作者)。
REST API
| 方法 | 路径 | 描述 |
|---|---|---|
| POST | /api/chat | 提问;返回回答和引用来源(JSON) |
| POST | /api/chat/stream | 同上,以 SSE 流式返回(meta / token / sources / done) |
| GET | /api/search?q=&mode= | 检索调试:vector | hybrid | rerank |
| POST | /api/documents/text | 摄取 {docId, text}(需要 X-Admin-Key) |
| POST | /api/documents | 摄取上传的文件,使用 multipart 格式(需要 X-Admin-Key) |
评估
eval/ 中附带评估工具:包含标注的问题集,并针对三种检索模式计算 Top-1 / Recall / MRR 分数——在演示集上,混合检索 + 重排达到 Top-1 100% / MRR 1.0(报告);eval/law/ 中包含一份 20 道题的劳动法评估及语料清理脚本。请自备语料;原始来源文本不予再分发。
从源代码构建
mvn package
java -jar target/minirag-0.1.0-SNAPSHOT.jar
需要 Java 21。可以将 API 密钥放入工作目录下的 .env 文件中(已加入 git 忽略)。
中文说明
单进程私有化 RAG 知识库:SQLite 存储 + 混合检索(向量 + BM25,RRF 融合,可选 LLM 重排),回答带可点击引用角标,自带网页演示、REST API 与 MCP server(SSE),内存占用约 250MB,1GB 小服务器可跑。在线演示(访问码联系作者)。
许可证
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。