这个项目是一个可落地的书籍问答 RAG 模板,包含你要求的增强能力:
- ✅ DeepSeek API 生成回答
- ✅ Chroma 本地向量数据库(免费、离线可用、无需云账号)
- ✅ 增量更新(新增/改动文件只重建对应分块)
- ✅ BM25 + 向量混合检索
- ✅ Rerank 重排模型
- ✅ 自动去重,减少重复上下文,查询更快
- ✅ Web UI 聊天界面(Streamlit)
- ✅ Docker 沙箱环境(便于移植部署)
- Embedding:
BAAI/bge-small-zh-v1.5 - Vector DB:Chroma(
data/chroma持久化) - Hybrid Retrieval:
- Chroma 向量召回
- 本地 BM25 召回
- 分数融合(hybrid_score)
- 文本去重
- Rerank(
BAAI/bge-reranker-base)
- 生成:DeepSeek
deepseek-chat
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txtcp .env.example .env编辑 .env 填入:
DEEPSEEK_API_KEY
把书籍文件放到 data/books/,支持:.pdf / .txt / .md
python src/ingest.pypython src/chat.pystreamlit run src/web_ui.py浏览器打开后即可问答,侧边栏支持手动触发增量入库。
docker compose up --build -ddocker compose exec app python src/ingest.py打开:http://localhost:8501
docker compose down向量库数据会落盘到
./data/chroma,容器重建后仍可复用。
.
├── data/books/
├── data/chroma/
├── docs/
│ └── 使用说明.md
├── src/
│ ├── rag_pipeline.py
│ ├── ingest.py
│ ├── chat.py
│ └── web_ui.py
├── Dockerfile
├── docker-compose.yml
├── .env.example
└── requirements.txt