408-RAG 是一个基于本地知识库的智能问答系统,专为计算机(408)考研设计。它利用检索增强生成(RAG)技术,结合 Milvus/Chroma 向量数据库和大型语言模型(如 Qwen3),提供精准、高效的考点检索、真题解析和智能问答功能。
项目采用 GPLv3 协议开源,支持离线部署,旨在帮助考生高效备考,并为相关技术研究提供参考。
本系统采用经典的 RAG (Retrieval-Augmented Generation) 架构,其工作流程如下:
-
知识库构建 (Indexing)
- 文档处理: 系统首先通过
DocumentProcessor
读取data_base/knowledge_db
目录下的原始文档(如 PDF、TXT 等)。 - 文本切割: 对文档进行切割,支持多种策略(如默认、按章节、按论文格式),将长文本切分成小的知识块(Chunks)。
- 向量化: 使用 Embedding 模型将每个知识块转换为向量(Vector Embeddings)。
- 数据入库: 将文本块及其对应的向量索引存储在向量数据库(Vector Database)中,以便快速检索。
- 文档处理: 系统首先通过
-
问答检索 (Retrieval & Generation)
- 用户提问: 用户输入一个问题。
- 问题向量化: 将用户的问题同样转换为向量。
- 相似度检索: 在向量数据库中,通过计算问题向量与知识块向量之间的相似度,检索出与问题最相关的
k
个知识块作为上下文(Context)。 - 答案生成: 将原始问题和检索到的上下文信息一同发送给大型语言模型(LLM),由 LLM 基于上下文生成最终的、更精准的答案。
- 本地化部署: 支持完全离线部署,保障数据隐私。
- 模块化设计: 系统分为文档处理、向量数据库、LLM 调用等模块,易于扩展和维护。
- 多种文本切割策略: 内置多种文本切割器,可根据文档类型选择最优处理方式。
- 专注考研领域: 知识库内容聚焦于 408 考研四科,问题回答更具针对性。
- Python 3.12
- 其他依赖项
git clone https://github.com/guohuiyuan/408-RAG.git
cd 408-RAG
pip install -r requirements.txt
创建 .env
文件,并填入必要的 API 密钥和地址。可以从复制 .env_example
开始:
cp .env_example .env
然后编辑 .env
文件。
系统通过 .env
文件加载环境变量。以下是各变量的说明:
OPENAI_API_KEY
: 必需。您的 API 密钥。这里并非特指 OpenAI 的密钥,而是兼容 OpenAI API 格式的任意服务提供商的密钥,例如本项目默认使用的硅基流动(SiliconFlow)。OPENAI_BASE_URL
: 必需。API 的请求地址。默认值为https://api.siliconflow.cn/v1
。
PS: Qwen/Qwen3-8B,THUDM/GLM-4.1V-9B-Thinking在硅基流动是免费使用的。
- 准备知识库: 将您的知识库文档(PDF, TXT等)放入
data_base/knowledge_db
目录下。 - 运行主程序: 脚本将自动检查知识库是否存在。如果不存在,它会首先构建知识库,然后启动问答服务。
python src/rag/rag_main.py
程序会执行一个示例查询 "什么是操作系统?",您可以修改 rag_main.py
中的查询内容进行测试。
- assistant408 的 400 道题目
- 408 1000 题
- 王道选择题
- 深入浅出计算机网络习题
- 计算机网络每日一题
- 王道 26 考研系列电子书
- 千葉原的 408 历年真题解析
- 童话的 408 易错/冷门知识点总结
模型 | 正确率 |
---|---|
qwen3:8b | 91.62% (361/394) |