Skip to content

lekliu/LiuRAG

Repository files navigation

🗡️ Wuxia-Expert-RAG: 倚天屠龙记智能百科问答系统

这是一个基于 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     # 项目依赖

🚀 快速开始

1. 环境准备

建议使用 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

2. 配置环境变量

在项目根目录创建 .env 文件:

GOOGLE_API_KEY=你的_Gemini_API_Key
HF_TOKEN=你的_HuggingFace_Token
HF_ENDPOINT=https://hf-mirror.com  # 国内加速镜像

3. 构建索引并运行

倚天屠龙记.pdf 放入项目根目录,运行:

python main.py

注:首次运行将自动切分文档并构建向量库。

📈 典型示例

User: 张无忌的父亲是谁?
AI: 张无忌的父亲是武当五侠张翠山... [参考来源: 第379页]
User: 他是怎么死的?
System: (自动重写查询:张翠山是怎么死的?)
AI: 张翠山在武当山大殿自刎而死,原因是为了维护义兄谢逊并保全武当声誉... [参考来源: 第76页]

🛠️ 后续开发计划 (Roadmap)

  • Web UI 增强:集成 Streamlit 聊天界面。
  • 重排序优化:引入 BGE-Reranker。
  • 多路召回 (Hybrid Search):结合 BM25 关键词检索,进一步提升人名/地名检索精度。
  • 文档多模态处理:优化 PDF 中图像和表格的识别。
  • 部署加速:将 Reranker 迁移至 GPU 推理,降低响应延迟。

📄 开源协议

MIT License. 欢迎 Star 和参与贡献!


给你的操作建议:

  1. requirements.txt:记得运行 pip freeze > requirements.txt 生成一份依赖表,这样别人(或者未来的你)部署时会非常方便。
  2. README 里的截图:如果你之后做出了 Streamlit 的网页界面,在这里放一张截图会非常吸引人。
  3. .gitignore:一定要把 .env.venv/db/(数据库文件夹)加入 .gitignore,防止你的 API Key 和本地巨大的索引库被推送到 GitHub 上。

如果你准备好了,就执行 git init 开启你的 GitHub 之旅吧!

About

基于《倚天屠龙记》的 RAG 智能问答系统:集成查询重写、BGE-Reranker 与 Gemini 3.1,支持多轮对话与页码溯源的深度武侠百科。

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

Generated from x-dr/telegraph-Image