← 返回列表

书内 Book Learning:面向多账户教材的引文校验 RAG 学习助手

Zafer-Liu/book-learning · 书内 BOOKNOTE · 多账户教材 RAG 学习助手 —— 回答必引原文:C/W 双引用校验、批注阅读器、长对话自动压缩、可选联网补充(MCP)

GitHub原文发布 未知首次收录 2026-10-13上架 2026-10-14 07:09

☆ 收藏查看项目 ↗

ELI5:它是什么,解决什么问题

书内(Book Learning / BOOKNOTE)是一个可自托管的多账户教材学习工作区,支持上传 Markdown、TXT、DOCX 教材,提供问答、章节讲解、要点梳理与自测四种学习模式。所有回答必须基于本轮检索到的教材证据并附带可展开的原文引用(C/W 双轨引用校验),无引用或伪造引用的回答会被整体拒绝且不落库。项目还包含批注阅读器、长对话自动压缩与上下文计量、可选联网补充(MCP/智谱搜索)、自测复习与 Anki CSV 导出、只读分享链接及在线演示,数据按账户与书籍隔离,单本书一个检索上下文。

核心能力与快速开始

★ 45 · Python

能做什么
上传 UTF-8 的 .md / .markdown / .txt / .docx 教材(每文件上限 50 MB / 4M 字符,每账户 20 本 / 200 MB),进行标题识别与后台分块索引(默认每块 ≤1200 字符、160 重叠)。检索采用词法、FTS5 全文与向量三路等权 RRF(k=60)融合;未配置 embedding 服务时显式降级为关键词检索并在界面说明。支持问答(模型自主多轮检索,≤10 次)、章节讲解、要点梳理、自测(答案默认折叠)四种模式,可限定到某一小节检索。生成受证据约束:引用标签由服务端在检索时分配,回答中的 C(教材)与 W(网络)标签分轨校验,缺失引用、伪造标签或用网络内容替代教材证据的回答整体拒绝且不保存;每条回答至少需锚定一个 C 引用。附带批注阅读器(三色高亮、私有批注不发送给模型、可就选中段落提问或就地自测)、长对话自动压缩与上下文计量(未压缩字符 ≥9000 且消息 ≥6 时触发总结,最后 3 轮保持原文,连续 3 次失败开路熔断)、可选联网补充(仅当设置 STUDY_SEARCH_API_KEY 时出现,默认关闭,仅外发模型提炼的检索词)、内置 mermaid 图表工具(每次回答最多 3 张,内容绑定检索证据)、自测复习与 Anki 兼容 CSV 导出、可撤销的只读分享链接与限速不留存的在线演示、按账户与书籍隔离的阅读位置记忆、多账户注册登录(PBKDF2 密码、会话 Cookie + CSRF,支持一码一账号与邀请码)。
适用场景
适用于个人或小团队自托管搭建教材学习空间:把教材放入书架后通过问答、章节讲解、要点梳理与自测进行学习,并凭借可展开的原文引用核对每个结论;用批注阅读器精读并围绕引用上下文提问;用自动压缩与上下文计量维持长对话学习;在允许联网时用可选的网络搜索补充非教材信息;用自测复习与 Anki CSV 导出做复习安排;用只读分享链接或在线演示向他人展示回答。
项目形态
可直接使用的工具
部署方式
自托管;提供本地运行方式(Python 3.11+,python -m study,默认 http://127.0.0.1:8080)以及基于仓库内 Dockerfile 部署到 Railway 的说明(需挂载 /data 持久卷,健康检查 /health,保持 1 副本、1 个 Gunicorn worker;SQLite 与单实例索引队列,扩展前需外置数据库与任务队列)。前端为免构建的原生 JS/CSS。
主要依赖
Python 3.11+、Flask 3.x;数据存储在 SQLite(WAL)与本地数据目录;回答模型需 OpenAI 兼容的 /chat/completions 接口;embedding 服务为可选(OpenAI 兼容 /embeddings,如 bge-m3,更换模型需重建索引);联网补充可选,默认使用智谱 web-search-pro(也可配置远程 MCP)。必需环境变量包括 STUDY_SECRET_KEY,HTTPS 下需设置 STUDY_COOKIE_SECURE=1。具体模型、API 成本与硬件要求未说明。
使用限制
数据按账户隔离但不做端到端加密,部署管理员可访问 Volume;未提供邮箱验证、密码找回、管理后台、计费功能,取消请求只会断开浏览器连接而后端可能继续完成,不支持流回滚;网络内容未经核实且不代表教材,法律类教材可能过时,回答不构成现行法律陈述或个人法律建议;扩展性受限(SQLite + 单实例索引队列,多副本需先外置数据库与任务队列);builtin_books 仅存在于本地磁盘、不入 git,需按说明恢复 pre-commit 钩子防止误提交。具体延迟、并发上限与运行成本未说明。
许可证
GPL-3.0
最近推送
2026-10-12 19:13

资料检查:2026-10-13 07:00 · 卡片整理:2026-10-14 07:00
卡片由 AI 根据仓库资料整理,未进行安装或运行验证

职业应用

程序员

自托管部署与二次开发:项目为 Python/Flask 服务,含 SQLite、FTS5、RAG 检索与 SSE 流式回答,程序员可阅读 study/ 下的 app.py、tutor.py、rag.py 等模块进行代码审查、排错与功能扩展,并运行离线回归测试。

查看内容依据
study/ # Flask backend app.py # routes, SSE answer stream, accounts & quotas tutor.py # evidence-constrained generation, agent loop, C/W validation rag.py # lexical / FTS5 / vector retrieval fused with RRF

官方使用入口 ↗

由 AI 根据来源材料整理,未进行安装或运行验证

产品经理

上传 Markdown/TXT/DOCX 教材后,使用问答、章节讲解、要点梳理与自测四种学习模式,并借助自测复习与 Anki CSV 导出整理学习材料。

查看内容依据
upload Markdown / TXT / DOCX textbooks, switch between Q&A, chapter explanation, key-point outlining and self-testing

官方使用入口 ↗

由 AI 根据来源材料整理,未进行安装或运行验证

这是基于来源内容整理的摘要。原文链接失效后,本页摘要和讨论仍会保留。

讨论 0

登录后参与讨论,阅读资讯无需注册。

还没有评论,来分享第一个看法。