一个基于 RAG(检索增强生成)的智能个人知识库系统,帮助你管理文献、书籍,并提供AI驱动的智能搜索和问答功能。
- 📄 多格式支持:PDF、DOCX、EPUB 文档上传和解析
- 🤖 AI 智能分类:自动识别文档类型并打标签
- 📊 阅读进度管理:跟踪每本书的阅读状态(未读/正在读/已读完/归档)
- 🔍 混合检索:向量语义检索 + BM25 关键词检索,精准找到相关内容
- 💬 RAG 问答:基于你的知识库内容回答问题,附带来源引用
- 🏠 本地 Embedding:使用 bge-m3 模型,文档内容不出本地
- 🎨 古典书房风格 UI:独特的视觉设计,告别千篇一律的 AI 界面
系统采用三栏布局:
- 左侧:文档筛选(按状态/分类)+ 上传入口
- 中间:文档书架,卡片式展示
- 右侧:AI 问答面板
git clone https://github.com/WORMMMMMM/JarvisOfYourKnowledge.git
cd JarvisOfYourKnowledgepip install -r requirements.txt⏳ 首次运行会自动下载 Embedding 模型(约 1-2GB),请耐心等待
创建 .env 文件:
# GLM API 配置(必填)
GLM_API_KEY=your_glm_api_key_here
GLM_BASE_URL=https://open.bigmodel.cn/api/paas/v4/
GLM_MODEL=glm-4-flash
# Embedding 模型(可选,默认 bge-m3)
EMBEDDING_MODEL=BAAI/bge-m3
# 服务配置(可选)
HOST=0.0.0.0
PORT=8000python main.py访问 http://localhost:8000 即可使用。
- 点击左上角「📤 上传文档」按钮
- 选择 PDF、DOCX 或 EPUB 文件
- 系统会自动:
- 解析文档内容
- AI 分析并分类
- 建立检索索引
点击任意文档卡片,可以:
- 设置阅读状态(未读/正在读/已读完/归档)
- 调整阅读进度(0-100%)
- 添加个人笔记
在右侧问答面板输入问题,例如:
- "这篇论文的主要观点是什么?"
- "关于机器学习的文档里提到了哪些算法?"
- "总结一下《XXX》这本书的核心内容"
系统会从你的知识库中检索相关内容,生成带来源引用的回答。
JarvisOfYourKnowledge/
├── main.py # 启动入口
├── config.py # 配置文件
├── requirements.txt # 依赖
├── app/
│ ├── api.py # FastAPI 路由
│ ├── doc_parser.py # 文档解析(PDF/DOCX/EPUB)
│ ├── chunker.py # 文本分块
│ ├── indexer.py # 向量 + BM25 索引
│ ├── retriever.py # 混合检索
│ ├── llm_client.py # GLM API 客户端
│ ├── classifier.py # AI 文档分类
│ ├── library.py # 知识库管理
│ ├── answerer.py # RAG 问答生成
│ └── models.py # 数据模型
├── frontend/
│ └── index.html # Web 界面
└── data/ # 运行时数据(gitignore)
├── uploads/ # 上传的原始文档
├── index/ # 索引文件
└── library.sqlite # 元数据数据库
| 参数 | 默认值 | 说明 |
|---|---|---|
| CHUNK_SIZE | 400 | 分块目标字数 |
| CHUNK_OVERLAP | 50 | 块间重叠字数 |
| RETRIEVAL_TOP_K | 5 | 检索返回的证据数量 |
| HYBRID_ALPHA | 0.5 | 向量检索分数权重 |
| HYBRID_BETA | 0.5 | BM25 检索分数权重 |
| LLM_TEMPERATURE | 0.2 | 生成温度(越低越稳定) |
| 接口 | 方法 | 说明 |
|---|---|---|
| /api/documents/upload | POST | 上传文档 |
| /api/documents | GET | 获取文档列表 |
| /api/documents/{id} | GET | 获取文档详情 |
| /api/documents/{id} | PATCH | 更新文档信息 |
| /api/documents/{id} | DELETE | 删除文档 |
| /api/chat | POST | RAG 问答 |
| /api/stats | GET | 知识库统计 |
| /api/categories | GET | 获取所有分类 |
| /api/tags | GET | 获取所有标签 |
| /api/health | GET | 健康检查 |
完整 API 文档:http://localhost:8000/docs
A: 首次运行需要下载 Embedding 模型(约 1-2GB),这是一次性的。
A: 访问 智谱AI开放平台,注册后可获取 API Key。
A: 当前版本仅支持可选中文字的 PDF。扫描版需要 OCR 支持,后续版本会考虑添加。
A: 当前版本针对 GLM 优化。如需支持其他模型,可以修改 app/llm_client.py。
- 支持更多文档格式(TXT、Markdown)
- OCR 支持扫描版 PDF
- 文档标注和高亮
- 移动端适配
- 多 LLM 支持(OpenAI、Claude 等)
- 文档导出和分享
MIT
- BAAI/bge-m3 - 优秀的多语言 Embedding 模型
- 智谱AI - GLM 大语言模型
- FastAPI - 现代 Python Web 框架