本地优先 | 隐私安全 | 跨端可用 | 个人 RAG
一个完全运行在本地、基于你自己的学习记录构建的 个人知识管理(PKM)+ 检索增强生成(RAG) 系统。
你通过 AI 学习的内容会被自动提炼、结构化保存,并在你需要时主动回顾,或基于历史笔记回答新问题。
| 功能 | 说明 |
|---|---|
| 📝 智能记录 | 粘贴 AI 对话,本地模型自动提炼核心概念、类比、行动建议 |
| 🏷️ 自动标签 | 自动提取 2-3 个标签,可手动修正 |
| 📚 知识库 | 结构化存储学习记录,支持搜索、编辑、删除 |
| 🧠 主动回顾 | 抽取近期记录,生成回忆问题、知识关联与延伸思考 |
| 💬 RAG 问答 | 面向你的历史笔记进行检索并回答问题 |
| ⚙️ 个人背景注入 | 根据你的硬件环境与学习偏好定制回答风格 |
| 📱 手机访问 | 可配合 Tailscale 安全远程访问网页版 |
┌─────────────┐ ┌─────────────┐ ┌─────────────────┐
│ 桌面端 │ │ 手机浏览器 │ │ WSL (Linux) │
│ main.py │ │ Tailscale │────▶│ web_server.py │
│ (PyQt6) │ │ :8081 │ │ (FastAPI) │
└──────┬──────┘ └─────────────┘ └────────┬────────┘
│ │
└──────────────┬───────────────────────────┘
│
┌───────▼────────┐
│ learning_data │
│ ├── knowledge.db (SQLite)
│ └── profile.json (个人背景)
└────────────────┘
│
┌───────▼────────┐
│ llama.cpp │
│ Qwen2.5-7B-Q4 │
│ localhost:8080│
└────────────────┘
- 推理层:
llama.cpp (llama_cpp.server)本地运行 Qwen2.5 7B Q4 量化模型 - 桌面端:PyQt6 原生 GUI,适合快速记录
- 服务端:FastAPI + Uvicorn,支持网页访问
- 数据层:SQLite + JSON(个人背景)
- 组网:Tailscale(可选),无需公网 IP
使用项目自带依赖清单安装:
pip install -r requirements.txt如需在 WSL 运行网页端,也可单独补充:
pip install requestspython -m llama_cpp.server \
--model ~/models/Qwen2.5-7B-Instruct-GGUF/qwen2.5-7b-instruct-q4_k_m.gguf \
--n_ctx 4096 \
--n_gpu_layers 999 \
--host 0.0.0.0 \
--port 8080WSL / Linux(网页端)
./start_server.sh或:
python web_server.pyWindows(桌面端)
start_desktop.bat或:
python main.py- 在 WSL 登录 Tailscale:
sudo tailscale up - 手机安装并登录同账号 Tailscale
- 查看 WSL IP:
tailscale ip -4 - 访问:
http://<tailscale-ip>:8081
- 与 Kimi / ChatGPT 对话学习
- 复制 AI 回复到「记录新学习」
- 点击「生成总结」获得结构化总结与标签
- 确认并保存到知识库
- 打开「今日回顾」
- 系统随机抽取近期记录
- 生成回忆问题、知识关联、延伸思考
- 主动回忆,强化长期记忆
- 打开「RAG 问答」
- 提问(例如:我之前学的 Transformer 注意力机制是什么?)
- 系统检索历史记录
- 模型基于你的笔记作答并标注来源
pkm-rag/
├── main.py # 桌面端(PyQt6)
├── web_server.py # 网页服务端(FastAPI)
├── requirements.txt # Python 依赖清单
├── .gitignore # 隐私与本地文件忽略规则
├── start_server.sh # WSL 一键启动脚本
├── start_desktop.bat # Windows 一键启动脚本
├── learning_data/ # 本地数据目录(隐私,不上传)
│ ├── knowledge.db # SQLite 学习记录
│ └── profile.json # 个人背景配置
└── templates/ # 网页模板(运行时自动生成)
本项目设计哲学:本地优先,数据主权归你。
| 措施 | 说明 |
|---|---|
| 数据不出机器 | 学习记录存储在本地 SQLite,不上传云端 |
| 模型本地推理 | 通过 llama.cpp 本地推理,无需外部 API |
| 背景信息隔离 | profile.json 已加入 .gitignore |
| 知识库隔离 | learning_data/ 已加入 .gitignore |
| 内网访问 | 手机访问可通过 Tailscale,不暴露公网端口 |
| 无遥测 | 代码不包含数据上报或使用统计 |
⚠️ 推送到 GitHub 前,请确认仓库中不包含learning_data/与templates/。
在 main.py 与 web_server.py 顶部修改:
API_BASE = "http://localhost:8080"在桌面端或网页端「个人背景」中编辑,内容会保存到 learning_data/profile.json,包括:
- 硬件环境(如 RTX 4060 8GB)
- 学习偏好(如喜欢类比、不喜欢公式)
这些信息会在每次推理时注入系统提示词。
- 推理引擎:llama.cpp(llama_cpp.server)
- 桌面 GUI:PyQt6
- Web 后端:FastAPI + Uvicorn
- Web 前端:HTML + CSS + JavaScript
- 数据库:SQLite3
- 组网:Tailscale(可选)
MIT License