个人私有知识大脑 —— 解决隐私焦虑的本地化 RAG 知识管理系统
在 AI 时代,每个人都想借助 AI 提高学习或办公效率。但考虑到隐私问题,一些敏感资料(如日记、文档、照片等)都不方便上传到云端供 AI 参阅。
本项目旨在利用小参数语言模型,配合 RAG(检索增强生成)在用户终端上本地运行一个可以读取各类文档而不用担心隐私问题和订阅费用的 Agent,解决了云端 AI 在处理高敏感个人资产时的隐私悖论。
也可稍加修改,更换为更好性能的模型用于公司内部涉密部门使用。
- 分章节功能:参考小说软件模式,提供"前情提要 + 下集预告"
- 故事线梳理:读懂小说故事后能梳理完整故事线(角色、时间线、情节)
- 跨文档关联:根据内容语义找到相关文件
- 文件修改:根据用户要求修改对应文件
- 项目创建:自动创建 Java、Python 等项目结构
| 组件 | 技术方案 |
|---|---|
| 推理引擎 | LM Studio (或 Ollama) |
| 思考模型 | Qwen3-4B 或其他本地模型 |
| Embedding | BGE-M3 或其他嵌入模型 |
| Reranker | 可选 |
| 向量库 | LanceDB(支持混合搜索) |
| 前端 | 内置 Web 界面 / AnythingLLM |
| 文件操作 | Obsidian MCP Server |
-
安装 LM Studio
# 访问 https://lmstudio.ai 下载并安装 # macOS: brew install --cask lm-studio
-
下载模型
- 打开 LM Studio
- 搜索并下载模型(如
Qwen3-4B、Llama-3-8B等) - 下载嵌入模型(如
bge-m3)
-
启动本地服务器
- 点击 "Start Server" 按钮
- 默认端口:
1234
-
配置项目
# 编辑 .env 文件或设置环境变量 LLM_PROVIDER=lmstudio LMSTUDIO_BASE_URL=http://localhost:1234 LMSTUDIO_CHAT_MODEL=Qwen3-4B # 与 LM Studio 中加载的模型一致 LMSTUDIO_EMBEDDING_MODEL=bge-m3
-
安装 Ollama
# macOS brew install ollama # Linux curl -fsSL https://ollama.com/install.sh | sh # Windows # 从 https://ollama.com 下载安装程序
-
拉取模型
ollama pull qwen3:4b ollama pull qwen3-embedding-0.6b
-
配置项目
LLM_PROVIDER=ollama OLLAMA_BASE_URL=http://localhost:11434 OLLAMA_CHAT_MODEL=qwen3:4b OLLAMA_EMBEDDING_MODEL=qwen3-embedding-0.6b
# 克隆项目
git clone <repo-url>
cd Private-Local-Brain
# 启动服务
docker-compose up -d
# 访问服务
# 后端 API: http://localhost:8000
# AnythingLLM: http://localhost:3000
# 查看日志
docker-compose logs -f backend# 激活 Conda 环境
conda activate private-local-brain
# 启动后端(带前端界面)
cd backend
uvicorn app.main:app --reload --host 0.0.0.0 --port 8000
# 访问前端界面
# 浏览器打开:http://localhost:8000cd backend uvicorn app.main:app --reload --host 0.0.0.0 --port 8000
curl http://localhost:8000/health
### 摄入文档
```bash
# 使用脚本批量导入文档
python scripts/ingest_docs.py ~/documents
# 重建索引
python scripts/rebuild_index.py ~/documents
curl -X POST http://localhost:8000/api/chat \
-H "Content-Type: application/json" \
-d '{
"query": "我的日记里提到了哪些旅行计划?",
"top_k": 5,
"use_reranker": true
}'curl -X POST http://localhost:8000/api/search \
-H "Content-Type: application/json" \
-d '{
"query": "机器学习笔记",
"top_k": 10
}'curl -X POST http://localhost:8000/api/ingest/upload \
-F "file=@/path/to/your/document.pdf"curl http://localhost:8000/healthPrivate-Local-Brain/
├── backend/app/
│ ├── agent/ # AI Agent 模块
│ ├── api/ # API 接口层
│ ├── analysis/ # 分析模块(故事线等)
│ ├── embedding/ # 嵌入模型
│ ├── llm/ # LLM 客户端(LM Studio/Ollama)
│ ├── loaders/ # 文档加载器
│ ├── mcp/ # MCP 集成
│ ├── rag/ # RAG 核心
│ ├── vectorstore/ # 向量存储
│ └── main.py # 应用入口
├── scripts/
│ ├── ingest_docs.py # 文档摄入脚本
│ └── rebuild_index.py # 重建索引脚本
├── docker-compose.yml
└── requirements.txt
- Markdown (
.md,.markdown) - PDF (
.pdf) - Word (
.docx) - 待完善
通过环境变量或 .env 文件配置:
# ========== 模型提供商选择 ==========
LLM_PROVIDER=lmstudio # 可选:lmstudio 或 ollama
# ========== LM Studio 配置 ==========
LMSTUDIO_BASE_URL=http://localhost:1234
LMSTUDIO_CHAT_MODEL=Qwen3-4B
LMSTUDIO_EMBEDDING_MODEL=bge-m3
LMSTUDIO_TIMEOUT=120
# ========== Ollama 配置(备用) ==========
OLLAMA_BASE_URL=http://localhost:11434
OLLAMA_CHAT_MODEL=qwen3:4b
OLLAMA_EMBEDDING_MODEL=qwen3-embedding-0.6b
OLLAMA_RERANKER_MODEL=qwen3-reranker-0.6b
OLLAMA_TIMEOUT=120
# ========== LanceDB 配置 ==========
LANCEDB_PATH=./data/lancedb
VECTOR_DIMENSION=1024
# ========== RAG 配置 ==========
CHUNK_SIZE=512
CHUNK_OVERLAP=50
TOP_K=5
RERANK_TOP_K=3
HYBRID_SEARCH_ALPHA=0.7
# ========== 文件存储配置 ==========
DOCUMENTS_PATH=./data/documents
UPLOAD_PATH=./data/uploads
# ========== API 配置 ==========
API_HOST=0.0.0.0
API_PORT=8000
# ========== MCP 配置 ==========
MCP_SERVER_PATH=
OBSIDIAN_VAULT_PATH=
# ========== 日志配置 ==========
LOG_LEVEL=INFO| 用途 | 模型 | 说明 |
|---|---|---|
| 聊天 | Qwen3-4B / Llama-3-8B | 4-8B 参数量的模型,适合本地运行 |
| Embedding | bge-m3 / nomic-embed-text | 支持多语言,效果好 |
| 用途 | 模型 | 说明 |
|---|---|---|
| 聊天 | qwen3:4b / llama3:8b | 轻量级模型 |
| Embedding | qwen3-embedding-0.6b | 专用嵌入模型 |
- LM Studio 支持
- 完善 Word 文档支持
- 实现 MCP Server 完整集成
- 添加更多文档格式支持(EPUB、TXT 等)
- 优化混合搜索效果
- 添加 Web 管理界面
- 支持流式响应
MIT License
欢迎提交 Issue 和 Pull Request!