Qdrant + Ollama Ollama+ Docker Registry Docker Registry + Docker Compose+ BAAI bge-reranker

容器化全本地RAG,本地文件索引检索,LLM/嵌入/重排全部本地运行,数据不出本机。

✓ 数据完全本地,安全可控✓ 递归索引子目录,支持多种文件格式 ✕ 资源占用较重✕ 仅支持Sentence Transfor

方案简介

Minima 是一个开源的本地(on-premises)RAG 容器化方案,可完全脱离 ChatGPT 或 Claude 等外部服务运行。所有神经网络组件——LLM、reranker、embedding——都运行在你自己的云或 PC 上,确保数据安全。该方案适合需要在本地对私有文档(PDF、Excel、Word、文本等)进行问答检索、且不能把数据发送到第三方 API 的用户或团队。项目以 Docker 容器形式部署索引与检索服务,通过 Ollama 运行本地 LLM,使用 Qdrant 作为向量存储,并提供基于 Electron 的本地聊天界面。

亮点与能力

  • 完全本地运行,数据不出本机
  • 递归索引 LOCAL_FILES_PATH 根目录下所有子文件夹的文档
  • 支持 .pdf、.xls、.docx、.txt、.md、.csv 文件类型
  • 查询增强、带重排的文档检索、答案生成三段式流程
  • 提供 Electron 聊天界面(http://localhost:3000)
  • 通过环境变量即可切换模型与配置
  • 嵌入模型可替换为任意 Sentence Transformer 模型
  • 重排器可选任意 BAAI reranker

组成与分工

  • Ollama:运行本地 LLM,负责查询增强与答案生成(OLLAMA_MODEL 需填 LLM 模型,非嵌入模型)
  • Sentence Transformers:文档嵌入模型,当前仅支持此类模型,测试用过 all-mpnet-base-v2
  • BAAI reranker(CrossEncoder):对检索结果重排,如 BAAI/bge-reranker-base
  • Qdrant:向量存储,按 EMBEDDING_SIZE 配置维度
  • Docker Compose:编排索引、检索等容器服务
  • Electron:本地聊天 UI,npm install && npm start 启动

前置要求

  • 本地已安装 Docker 与 Docker Compose
  • 克隆 Minima 项目到本地
  • 在项目根目录创建 .env 文件(参考 .env.sample)
  • Ollama 模式需额外安装 Ollama
  • 启动聊天 UI 需 Node.js(cd electron 后 npm install)

实施步骤

1. 选择启动方式

最简单的方式使用 run.sh 脚本:

bash
./run.sh

2. 配置 .env

创建 .env 文件,从 .env.sample 复制所有环境变量,本地 Ollama 模式示例:

LOCAL_FILES_PATH=/Users/davidmayboroda/Downloads/PDFs/
EMBEDDING_MODEL_ID=sentence-transformers/all-mpnet-base-v2
EMBEDDING_SIZE=768
OLLAMA_MODEL=qwen2:0.5b # must be LLM model id from Ollama models page
RERANKER_MODEL=BAAI/bge-reranker-base # please, choose any BAAI reranker model

3. 启动容器

bash
docker compose -f docker-compose-ollama.yml --env-file .env up --build

4. 启动聊天界面

bash
cd electron
npm install
npm start

5. 提问验证

打开 http://localhost:3000,针对 LOCAL_FILES_PATH 目录中的文件提问即可获得基于本地文件的回答。

使用与配置要点

  • LOCAL_FILES_PATH:索引根目录,递归索引所有子文件夹
  • EMBEDDING_MODEL_ID:嵌入模型,当前仅支持 Sentence Transformer 模型
  • EMBEDDING_SIZE:嵌入维度,必须与所选嵌入模型实际维度一致(如 all-mpnet-base-v2 为 768)
  • OLLAMA_MODEL:Ollama 模型 ID,必须是 LLM 模型而非嵌入模型
  • RERANKER_MODEL:重排模型,可从 HuggingFace BAAI 集合中挑选
  • 修改索引内容后向本地目录添加文件即可被问答覆盖

注意事项与常见问题

  • OLLAMA_MODEL 必须填 LLM 模型 ID,不要填嵌入模型
  • 嵌入模型目前仅支持 Sentence Transformer 类模型
  • EMBEDDING_SIZE 需与嵌入模型实际输出维度一致,否则 Qdrant 向量存储配置会出错
  • 本地 Ollama 模式比 Custom LLM 模式占用更多资源(需额外下载 reranker)

优缺点

  • ✓ 数据完全本地,安全可控
  • ✓ 递归索引子目录,支持多种文件格式
  • ✕ 资源占用较重
  • ✕ 仅支持Sentence Transfor

出处

本方案挖掘自开源项目 Minima-AI-Inc/minima,方案内容与实施命令均来自其 README 原文。

方案出处
Minima-AI-Inc/minima:On-premises conversational RAG with configurable containers
1047 star On-premises conversational RAG with configurable containers

本方案由真实开源项目挖掘整理,实施命令均来自其 README 原文,安装使用请遵循项目开源协议。