从零开始做一个高校课程资料 RAG Agent 问答系统
大模型解答专业课知识点幻觉频发、脱离教材?计算机毕设选题内卷,不想做老旧管理系统?零基础想学RAG开发,看不懂架构、跑不通项目?
本专栏纯零基础、校园专属、全流程闭环、可答辩可商用,手把手搭建高校课程资料RAG Agent问答系统,一套项目搞定自学备考、高分毕设、求职加分、校园副业四大核心需求。
🔥专栏核心差异化优势
✅校园垂直适配:兼容课件PPT、专业课PDF、历年真题、课堂笔记等全格式校内资料,贴合教学答疑逻辑
✅彻底克制幻觉:问答溯源校内原始资料,自带文档页码来源,答案严谨合规,杜绝AI编造考点错题
✅低门槛上手:弱化冗余理论,逐行代码实操,Python基础即可学完,从环境搭建到部署上线一站式教学
✅项目复用价值高:1. 自用备考:私人AI专业课助教,考点答疑、真题解析、章节梳理一键完成。2. 高分毕设:2026优选AI选题,创新点充足,论文易撰写、答辩通过率高。3. 求职赋能:掌握混合检索、Agent调度、幻觉抑制工业方案,补齐大模型岗位项目经验。4. 副业变现:可复刻院系/班级知识库,承接校内AI答疑系统定制接单
📚Full-Process Technical Chain链路
学术文档降噪处理→专属语义切片→向量库部署→混合检索优化→RAG幻觉优化→Agent智能问答→前端可视化搭建→项目部署→毕设赋能→系统迭代扩容
👥适配人群
💡专栏配套福利
- 计算机本硕学生:搞定毕设、课程大作业、面试项目
- AI零基础开发者:快速落地RAG+Agent成品项目
- 校内师生:搭建班级/院系专属课程AI知识库
- AI求职者、副业从业者:积累垂直项目、拓展校园定制接单业务
附赠全套可运行源码、课程资料包、毕设模板、报错排错手册,全程伴学答疑,省去全网找代码、调试踩坑时间。
1. 项目定位
这个项目的核心不是训练一个大模型,而是把大模型能力接入真实教学业务场景。
完整目标流程如下:
教师上传课程资料
-> 系统解析资料
-> 系统把资料切成小片段
-> 学生提出问题
-> 系统先从资料里找相关内容
-> 再基于找到的资料生成回答
-> 返回答案和出处
这就是 RAG 的基本流程。
RAG 是 Retrieval-Augmented Generation,中文常译为检索增强生成。简单说,就是先检索资料,再生成回答。
普通大模型问答:
学生提问
-> 大模型凭自己的知识回答
RAG 问答:
学生提问
-> 系统从课程资料里找相关片段
-> 把相关片段交给大模型
-> 大模型基于这些资料回答
-> 返回答案和出处
RAG 的价值是让回答有依据,减少幻觉。
2. Agent、RAG、LLM 的关系
2.1 LLM 是什么
LLM 是 Large Language Model,大语言模型。
常见例子包括 GPT、Claude、Gemini、通义千问、DeepSeek、Kimi 等。
LLM 负责理解和生成自然语言。但是 LLM 不一定知道你的课程资料、你的实验指导书、你的课堂要求,也可能编造内容。
2.2 RAG 是什么
RAG 让大模型先看你的资料,再回答问题。
在教育场景里,它解决的问题是:
- 学生问的问题必须基于课程资料回答。
- 回答需要附带出处。
- 资料不足时不能乱编。
- 教师可以控制知识来源。
2.3 Agent 是什么
Agent 比普通问答更进一步。
普通问答系统主要是:
你问一句,它答一句。
Agent 更像是:
你给一个任务,它会拆步骤、调工具、执行流程。
例如以后可以让系统做:
帮我分析本章课程资料,生成 10 道选择题、5 道简答题,并整理成 Word。
一个 Agent 可能会执行:
理解任务
-> 检索课程资料
-> 调用大模型生成题目
-> 调用文档工具生成 Word
-> 返回下载链接
当前项目还不是完整 Agent。当前项目是 RAG 后端 MVP,是后续 Agent 化的基础。
3. 当前项目技术栈
当前后端使用 Python 技术栈:
Python
FastAPI
Uvicorn
SQLAlchemy
SQLite
Swagger UI
本地文件存储 uploads
3.1 Python
Python 是项目的主要编程语言。
注意:课程内容是 Java Web,但系统本身用 Python 写。
也就是说:
系统服务对象:Java Web 课程
系统开发语言:Python
3.2 FastAPI
FastAPI 是 Python Web API 框架。
它负责定义接口,例如:
GET /api/health
POST /api/documents
GET /api/documents
DELETE /api/documents/{document_id}
POST /api/chat/ask
类比 Java:
FastAPI 类似 Spring MVC / Spring Boot Web
3.3 Uvicorn
Uvicorn 是 ASGI Web 服务器。
它负责把 FastAPI 应用跑起来,监听浏览器或客户端发来的 HTTP 请求。
类比 Java:
Uvicorn 类似 Tomcat / Netty
FastAPI 类似 Spring MVC
启动命令:
uvicorn app.main:app –reload
这条命令的含义:
uvicorn 启动 Uvicorn 服务器
app.main 找 backend/app/main.py 这个模块
:app 使用 main.py 里的 app 变量
–reload 开发模式,代码改了自动重启
3.4 Swagger UI
浏览器打开:
http://127.0.0.1:8000/docs
这个页面就是 Swagger UI。
它是后端接口文档和接口测试页面。它能让你不用写前端,也不用 Postman,就能直接测试接口。
3.5 SQLite
SQLite 是本地轻量级数据库。
它不需要单独启动数据库服务,也不需要像 MySQL 那样安装服务端。Python 标准库自带 SQLite 支持,所以当前项目可以直接使用。
当前项目里:
原始上传文件 -> 保存到 backend/uploads 目录
文档元数据 -> 保存到 SQLite
解析后的文本切块 -> 保存到 SQLite
问答历史 -> 保存到 SQLite
所以,上传的文件本体不是直接塞进 SQLite。SQLite 主要保存文件信息、解析文本、切块和问答记录。
4. 项目目录结构
项目根目录:
E:\\CodeX\\agent
主要目录:
agent/
backend/
app/
api/
core/
models/
schemas/
services/
main.py
tests/
pyproject.toml
README.md
.env.example
docs/
superpowers/
tutorials/
.gitignore
4.1 backend
backend 是后端项目目录,包含 FastAPI 应用代码、数据库模型、业务服务、API 路由、测试代码和 Python 依赖配置。
4.2 app/main.py
入口文件:
backend/app/main.py
核心作用:
- 创建 FastAPI 应用。
- 注册健康检查接口。
- 注册文档接口。
- 注册问答接口。
示例结构:
from fastapi import FastAPI
from app.api.chat import router as chat_router
from app.api.documents import router as documents_router
def create_app() –> FastAPI:
app = FastAPI(title="Java Web RAG Assistant", version="0.1.0")
@app.get("/api/health")
def health() –> dict[str, str]:
return {"status": "ok", "service": "java-web-rag-assistant"}
app.include_router(documents_router)
app.include_router(chat_router)
return app
app = create_app()
这里的 def create_app() -> FastAPI: 表示定义一个函数,返回 FastAPI 类型的对象。
类比 Java:
public static FastAPI createApp() {
...
}
Python 里的 -> FastAPI 是返回值类型标注,不是 lambda。
4.3 app/api
负责定义 HTTP 接口。
当前主要文件:
documents.py 文档上传、文档列表、删除文档
chat.py 学生提问接口
4.4 app/core
负责基础配置。
当前主要文件:
config.py 读取配置,例如数据库地址、上传目录
database.py 创建数据库连接、初始化表
4.5 app/models
负责数据库表模型。
当前主要文件:
document.py 上传文档表
chunk.py 文本切块表
chat.py 会话和消息表
user.py 用户表,当前 MVP 先预留
4.6 app/schemas
负责接口请求和响应结构。Swagger 页面底部的 Schemas 就来自这里。
例如:
ChatAskRequest 提问请求结构
ChatAskResponse 提问响应结构
DocumentRead 文档返回结构
你可以把它理解成 Java 里的 DTO。
4.7 app/services
负责业务逻辑。
当前主要文件:
storage.py 保存上传文件
parsers.py 解析 PDF、DOCX、PPTX、Markdown、代码等
chunking.py 文本切块
ingestion.py 文档入库流程
retrieval.py 本地检索
prompt.py Prompt 构造
chat.py 问答服务


