基于 RAG(检索增强生成)的完全本地运行的 PDF 文献阅读工具。所有数据不出本机,无需联网,保护你的隐私。
- 🔒 完全本地:嵌入模型、大模型、向量库全部运行在本机,无数据外泄风险
- 📄 PDF 智能问答:上传论文/文档,直接提问即可获得基于原文的答案
- 🎯 精准检索:基于 BGE 中文嵌入模型 + ChromaDB 向量检索
- 🤖 本地大模型:通过 Ollama 调用 Qwen2-1.5B 生成回答
- 📊 Bad Case 收集:对不满意回答一键标记,方便后续优化
- 🔄 索引重建:侧边栏一键重建向量库,换文档秒切换
| 组件 | 技术选型 |
|---|---|
| 向量数据库 | ChromaDB |
| 嵌入模型 | BGE-small-zh-v1.5(本地) |
| 生成模型 | Qwen2-1.5B(通过 Ollama 本地运行) |
| Web 框架 | Streamlit |
| PDF 解析 | PyPDF |
前往 https://ollama.com 下载安装 Ollama,然后拉取模型: bash ollama pull qwen2:1.5b
安装并运行一次后,模型会自动缓存到: C:\Users\你的用户名.cache\huggingface\hub\models--BAAI--bge-small-zh-v1.5\snapshots<哈希值>\
记下这个路径,后面需要配置环境变量。
- Python 3.10 或更高版本
- 推荐使用 Conda 创建独立虚拟环境
bash git clone https://github.com/ABLigege/LocalSmartReader.git cd LocalSmartReader
bash pip install -r requirements.txt
设置 BGE_PATH 指向你本地的 BGE 模型快照目录:
Windows(CMD): cmd set BGE_PATH=C:\Users\你的用户名.cache\huggingface\hub\models--BAAI--bge-small-zh-v1.5\snapshots<你的哈希值>
Windows(PowerShell): powershell $env:BGE_PATH="C:\Users\你的用户名.cache\huggingface\hub\models--BAAI--bge-small-zh-v1.5\snapshots<你的哈希值>"
💡 提示:也可以直接修改
app.py中的DEFAULT_BGE变量为你的本地路径。
将你的 PDF 文献放入 data/ 文件夹中。你可以:
- 放入任意数量的 PDF 文件
- 同时放入
.xlsx文件(用于评估等配套功能) - PDF 文件名不限,支持中文
streamlit run app.py
浏览器会自动打开 http://localhost:8501,直接在聊天框中提问即可!
如果运行时提示 CUDA / 显存相关错误,可以强制使用 CPU 运行:
set OLLAMA_GPU_LAYERS=0 streamlit run app.py
首次提问会稍慢(需加载模型),后续提问速度正常。
在网页底部的输入框中,直接输入关于文档的问题,例如:
- "这篇论文的核心创新点是什么?"
- "第三章的实验结果如何?"
- "总结一下本文的主要结论"
当你替换了 data/ 中的 PDF 文件后,点击侧边栏的 「🔄 重建向量库」 按钮,即可重新构建索引。
- 👍 有用:标记回答质量好
- 👎 无用:标记为 Bad Case,自动保存到
data/bad_cases.jsonl,方便后续分析优化
每次回答前,系统会检索相关文本片段。点击 「🔍 检索到的相关片段」 可展开查看具体引用来源。
streamlit==1.36.0 chromadb==0.4.24 sentence-transformers==2.7.0 pypdf==4.2.0 ollama numpy==1.26.4
- LlamaIndex — RAG 框架灵感来源
- ChromaDB — 轻量向量数据库
- Ollama — 本地大模型运行工具
- BGE — 中文嵌入模型
- Qwen — 阿里开源大模型