Skip to content
zcgotopPublic

About

本地优先的个人知识管理 + RAG 系统。基于 llama.cpp 本地模型,自动提炼学习笔记、主动回顾防遗忘、支持向个人知识库问答。跨端可用(桌面端 PyQt + 手机 Web)。

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

🧠 PKM-RAG:个人本地知识管理与回顾系统

本地优先 | 隐私安全 | 跨端可用 | 个人 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

🚀 快速开始

1. 安装依赖

使用项目自带依赖清单安装:

pip install -r requirements.txt

如需在 WSL 运行网页端,也可单独补充:

pip install requests

2. 启动模型服务(llama.cpp)

python -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 8080

3. 启动应用

WSL / Linux(网页端)

./start_server.sh

或:

python web_server.py

Windows(桌面端)

start_desktop.bat

或:

python main.py

4. 手机远程访问(可选)

  1. 在 WSL 登录 Tailscale:sudo tailscale up
  2. 手机安装并登录同账号 Tailscale
  3. 查看 WSL IP:tailscale ip -4
  4. 访问:http://<tailscale-ip>:8081

📖 使用工作流

日常学习

  1. 与 Kimi / ChatGPT 对话学习
  2. 复制 AI 回复到「记录新学习」
  3. 点击「生成总结」获得结构化总结与标签
  4. 确认并保存到知识库

防遗忘回顾

  1. 打开「今日回顾」
  2. 系统随机抽取近期记录
  3. 生成回忆问题、知识关联、延伸思考
  4. 主动回忆,强化长期记忆

知识库问答(RAG)

  1. 打开「RAG 问答」
  2. 提问(例如:我之前学的 Transformer 注意力机制是什么?)
  3. 系统检索历史记录
  4. 模型基于你的笔记作答并标注来源

📁 项目结构

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

About

本地优先的个人知识管理 + RAG 系统。基于 llama.cpp 本地模型,自动提炼学习笔记、主动回顾防遗忘、支持向个人知识库问答。跨端可用(桌面端 PyQt + 手机 Web)。

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages