Skip to content

408-RAG 是一个基于本地知识库的智能问答系统,专为计算机(408)考研设计。它利用检索增强生成(RAG)技术,结合 Milvus/Chroma 向量数据库和大型语言模型(如 Qwen3),提供精准、高效的考点检索、真题解析和智能问答功能。

License

Notifications You must be signed in to change notification settings

guohuiyuan/408-RAG

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

33 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

408-RAG: 计算机考研智能问答系统

408-RAG 是一个基于本地知识库的智能问答系统,专为计算机(408)考研设计。它利用检索增强生成(RAG)技术,结合 Milvus/Chroma 向量数据库和大型语言模型(如 Qwen3),提供精准、高效的考点检索、真题解析和智能问答功能。

项目采用 GPLv3 协议开源,支持离线部署,旨在帮助考生高效备考,并为相关技术研究提供参考。

系统架构

本系统采用经典的 RAG (Retrieval-Augmented Generation) 架构,其工作流程如下:

  1. 知识库构建 (Indexing)

    • 文档处理: 系统首先通过 DocumentProcessor 读取 data_base/knowledge_db 目录下的原始文档(如 PDF、TXT 等)。
    • 文本切割: 对文档进行切割,支持多种策略(如默认、按章节、按论文格式),将长文本切分成小的知识块(Chunks)。
    • 向量化: 使用 Embedding 模型将每个知识块转换为向量(Vector Embeddings)。
    • 数据入库: 将文本块及其对应的向量索引存储在向量数据库(Vector Database)中,以便快速检索。
  2. 问答检索 (Retrieval & Generation)

    • 用户提问: 用户输入一个问题。
    • 问题向量化: 将用户的问题同样转换为向量。
    • 相似度检索: 在向量数据库中,通过计算问题向量与知识块向量之间的相似度,检索出与问题最相关的 k 个知识块作为上下文(Context)。
    • 答案生成: 将原始问题和检索到的上下文信息一同发送给大型语言模型(LLM),由 LLM 基于上下文生成最终的、更精准的答案。

功能特性

  • 本地化部署: 支持完全离线部署,保障数据隐私。
  • 模块化设计: 系统分为文档处理、向量数据库、LLM 调用等模块,易于扩展和维护。
  • 多种文本切割策略: 内置多种文本切割器,可根据文档类型选择最优处理方式。
  • 专注考研领域: 知识库内容聚焦于 408 考研四科,问题回答更具针对性。

快速开始

1. 环境准备

  • Python 3.12
  • 其他依赖项

2. 克隆项目

git clone https://github.com/guohuiyuan/408-RAG.git
cd 408-RAG

3. 安装依赖

pip install -r requirements.txt

4. 配置环境变量

创建 .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在硅基流动是免费使用的。

使用方法

  1. 准备知识库: 将您的知识库文档(PDF, TXT等)放入 data_base/knowledge_db 目录下。
  2. 运行主程序: 脚本将自动检查知识库是否存在。如果不存在,它会首先构建知识库,然后启动问答服务。
python src/rag/rag_main.py

程序会执行一个示例查询 "什么是操作系统?",您可以修改 rag_main.py 中的查询内容进行测试。

数据集

题目来源

  • assistant408 的 400 道题目
  • 408 1000 题
  • 王道选择题
  • 深入浅出计算机网络习题
  • 计算机网络每日一题

知识库来源

  • 王道 26 考研系列电子书
  • 千葉原的 408 历年真题解析
  • 童话的 408 易错/冷门知识点总结

测试效果

400题测试效果

模型 正确率
qwen3:8b 91.62% (361/394)

About

408-RAG 是一个基于本地知识库的智能问答系统,专为计算机(408)考研设计。它利用检索增强生成(RAG)技术,结合 Milvus/Chroma 向量数据库和大型语言模型(如 Qwen3),提供精准、高效的考点检索、真题解析和智能问答功能。

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages