这是一个基于 RAG (Retrieval-Augmented Generation) 架构的中型智能问答项目。系统以金庸武侠小说《倚天屠龙记》为知识库,通过向量检索、深度重排序及查询改写技术,实现了精准、具备上下文感知能力的武侠知识问答。
- 现代化的 Web 交互界面:基于 Streamlit 打造,提供类似 ChatGPT 的流式对话体验,支持实时清理历史记录。
- 多轮对话上下文感知:集成 Query Rewriting 模块,利用 LLM 自动补全代词,实现深度的上下文关联。
- 高性能混合检索:
- 初筛:使用
FastEmbed实现毫秒级语义检索。 - 精选:集成 BGE-Reranker-v2-m3 深度重排序,大幅提升复杂问题的回答精准度。
- 初筛:使用
- 自动溯源与透明度:AI 回答实时附带 PDF 原始页码参考,支持点击查看来源。
- 灵活的后端集成:对接 Google Gemini 3.1 Flash Lite 尖端模型,通过代理优化解决国内 API 访问限制。
- 组件化工程设计:采用生产环境级的目录结构,实现文档处理、向量管理、问答引擎的完全解耦。
- LLM: Google Gemini 3.1 Flash Lite / 1.5 Flash
- Embedding: FastEmbed (
BAAI/bge-small-zh-v1.5) - Reranker: FlagEmbedding (
BAAI/bge-reranker-v2-m3) - Vector Database: ChromaDB
- Framework: LangChain, Python 3.11 (稳定性最佳选择)
LiuRAG/
├── core/
│ ├── processor.py # 文档解析与切分逻辑
│ ├── vector_store.py # 向量库构建与加载 (Chroma)
│ └── engine.py # RAG 核心逻辑 (Rewrite + Retrieval + Rerank)
├── config.py # 全局配置文件 (模型参数、路径等)
├── main.py # 终端对话入口
├── .env # 环境变量 (API Keys, Proxy)
└── requirements.txt # 项目依赖
建议使用 Python 3.11 运行本项目(因底层 AI 库在 3.13 版本尚存兼容性问题)。
git clone https://github.com/your-username/LiuRAG.git
cd LiuRAG
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -r requirements.txt在项目根目录创建 .env 文件:
GOOGLE_API_KEY=你的_Gemini_API_Key
HF_TOKEN=你的_HuggingFace_Token
HF_ENDPOINT=https://hf-mirror.com # 国内加速镜像
将 倚天屠龙记.pdf 放入项目根目录,运行:
python main.py注:首次运行将自动切分文档并构建向量库。
User: 张无忌的父亲是谁?
AI: 张无忌的父亲是武当五侠张翠山... [参考来源: 第379页]
User: 他是怎么死的?
System: (自动重写查询:张翠山是怎么死的?)
AI: 张翠山在武当山大殿自刎而死,原因是为了维护义兄谢逊并保全武当声誉... [参考来源: 第76页]
- Web UI 增强:集成 Streamlit 聊天界面。
- 重排序优化:引入 BGE-Reranker。
- 多路召回 (Hybrid Search):结合 BM25 关键词检索,进一步提升人名/地名检索精度。
- 文档多模态处理:优化 PDF 中图像和表格的识别。
- 部署加速:将 Reranker 迁移至 GPU 推理,降低响应延迟。
MIT License. 欢迎 Star 和参与贡献!
- requirements.txt:记得运行
pip freeze > requirements.txt生成一份依赖表,这样别人(或者未来的你)部署时会非常方便。 - README 里的截图:如果你之后做出了 Streamlit 的网页界面,在这里放一张截图会非常吸引人。
- .gitignore:一定要把
.env、.venv/和db/(数据库文件夹)加入.gitignore,防止你的 API Key 和本地巨大的索引库被推送到 GitHub 上。
如果你准备好了,就执行 git init 开启你的 GitHub 之旅吧!