前言
标签:Spring AI、RAG、PGVector、Redis、DeepSeek、知识库、AI教育平台、Java项目实战
适用人群:Java开发工程师、AI应用开发者、应届生毕设、企业项目开发
项目名称:EduAgentX 智能教育知识库系统
前两篇文章我们已经掌握了:
- Spring AI基础开发
- ChatClient使用
- Prompt工程
- Embedding向量化
- PGVector向量数据库
- RAG检索增强生成
- Tool Calling
- Agent开发思想
但很多开发者学完之后仍然会有一个问题:
我知道这些概念,但不知道如何真正落地一个项目。
所以本篇文章直接以一个完整项目为例,带你从0到1搭建:
EduAgentX AI知识库系统实现效果:
学生提问 ↓ AI检索课程资料 ↓ 结合知识库回答 ↓ 返回准确答案而不是普通AI的:
我不知道一、项目背景
假设我们开发一个在线教育平台。
目前已有:
用户系统 课程系统 考试系统 学习记录系统学生经常提问:
什么是SpringMVC? Redis缓存穿透是什么? Java线程池有哪些参数? 我这次考试为什么成绩下降?传统方式:
老师回答问题:
成本高 效率低 无法24小时服务于是增加:
AI学习助手二、项目整体架构设计
整体架构如下:
Vue3 │ Spring Gateway │ ┌──────────┴──────────┐ │ │ 用户服务 AI知识库服务 │ Spring AI │ ┌─────────────┬─────────────┐ │ │ │ Redis PGVector DeepSeek │ MySQL职责划分:
MySQL
存储:
用户 课程 考试 成绩Redis
缓存:
用户信息 课程详情 热点问题 聊天记录PGVector
存储:
知识库向量DeepSeek
负责:
理解问题 生成答案Spring AI
负责:
统一调用模型 向量检索 Prompt组装三、数据库设计
用户表
CREATETABLEsys_user(idBIGINTPRIMARYKEY,usernameVARCHAR(50),passwordVARCHAR(100),create_timeDATETIME);课程表
CREATETABLEcourse(idBIGINTPRIMARYKEY,course_nameVARCHAR(100),teacher_nameVARCHAR(50),descriptionTEXT);AI聊天记录表
CREATETABLEai_chat_record(idBIGINTPRIMARYKEY,user_idBIGINT,questionTEXT,answerTEXT,create_timeDATETIME);知识库文档表
CREATETABLEknowledge_document(idBIGINTPRIMARYKEY,titleVARCHAR(255),contentLONGTEXT,statusTINYINT,create_timeDATETIME);四、知识库文档上传设计
企业项目中知识来源:
PDF Word Markdown Excel TXT 网页内容例如上传:
Java面试宝典.pdf后台接口:
@PostMapping("/upload")publicResultupload(MultipartFilefile){returnknowledgeService.upload(file);}处理流程:
上传文件 ↓ 解析内容 ↓ 切片 ↓ 向量化 ↓ 存入PGVector五、文档切片(Chunk)
很多新人直接把:
100页PDF发送给大模型。
这是错误的。
原因:
Token限制。
正确方式:
切片例如:
Java线程池 核心线程数 最大线程数 阻塞队列切成:
Chunk1 Chunk2 Chunk3每块:
300~500字最佳。
Spring AI支持:
TokenTextSplitter代码:
TokenTextSplittersplitter=newTokenTextSplitter();List<Document>docs=splitter.apply(List.of(document));结果:
一个文档 ↓ 多个Chunk六、Embedding向量化
切片后:
文字模型无法检索。
需要:
向量化注入:
@AutowiredprivateEmbeddingModelembeddingModel;执行:
EmbeddingResponseresponse=embeddingModel.call(newEmbeddingRequest(List.of(content),EmbeddingOptionsBuilder.builder().build()));结果:
Java线程池 ↓ [0.11,0.35,0.77...]七、接入PGVector
Maven依赖
<dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-pgvector-store</artifactId></dependency>配置
spring:datasource:url:jdbc:postgresql://localhost:5432/eduagentx存储向量
vectorStore.add(List.of(newDocument(content)));数据库:
内容 + 向量同时保存。
八、用户提问流程
学生输入:
什么是Redis缓存穿透?系统执行:
问题 ↓ Embedding ↓ 向量搜索 ↓ 获取相关文档 ↓ 构造Prompt ↓ 调用DeepSeek ↓ 返回答案九、核心RAG代码实现
查询知识:
List<Document>docs=vectorStore.similaritySearch(question);获取:
Redis缓存穿透 Redis布隆过滤器 Redis缓存击穿相关内容。
构造Prompt:
Stringprompt=""" 你是一名Java高级讲师。 请根据以下知识回答: %s 用户问题: %s """.formatted(docs.toString(),question);调用模型:
Stringanswer=chatClient.prompt(prompt).call().content();返回:
缓存穿透指...十、聊天记忆实现
普通聊天:
问一次 忘一次用户:
我叫张三下一句:
我叫什么?AI不知道。
解决:
Chat MemoryRedis存储:
user:1001:chat格式:
[{"role":"user","content":"我叫张三"},{"role":"assistant","content":"好的"}]Spring AI支持:
MessageChatMemoryAdvisor配置:
Advisoradvisor=newMessageChatMemoryAdvisor(chatMemory);效果:
连续对话实现。
十一、热点问题缓存优化
例如:
学生频繁提问:
什么是SpringMVC? 什么是Redis?每次都调用模型。
成本极高。
方案:
Redis缓存。
Key:
ai:question:hash流程:
问题 ↓ Redis查询 ↓ 存在 ↓ 直接返回 ↓ 不存在 ↓ 调用AI ↓ 写入RedisJava实现:
Stringcache=redisTemplate.opsForValue().get(key);if(cache!=null){returncache;}成本直接下降:
70%以上十二、Prompt工程优化
很多项目效果差:
不是模型问题。
而是Prompt垃圾。
错误Prompt:
解释Redis优化后:
你是一位拥有10年经验的Java架构师。 请从以下几个方面解释Redis: 1. 定义 2. 核心数据结构 3. 使用场景 4. 面试重点 要求: 通俗易懂 包含代码示例回答质量提升明显。
十三、权限控制设计
企业知识库必须做权限。
例如:
学生:
只能访问课程资料教师:
访问全部资料管理员:
访问系统文档实现:
if(role.equals("student")){queryCourseDoc();}避免:
数据泄露十四、AI学习助手升级
在EduAgentX中。
基础版:
问 ↓ 答升级版:
分析成绩 ↓ 发现薄弱知识点 ↓ 推荐课程 ↓ 生成学习计划例如:
学生:
Java成绩65分AI:
集合框架掌握较差 建议学习: ArrayList HashMap ConcurrentHashMap十五、企业部署方案
开发环境:
Docker生产环境:
Nginx ↓ Spring Boot ↓ Redis集群 ↓ PostgreSQL ↓ PGVector ↓ DeepSeek推荐配置:
4核8G Redis 4G PostgreSQL 8G即可支撑:
5000+ 在线用户十六、项目亮点(简历可写)
如果你准备找工作。
项目描述可以写:
EduAgentX智能教育平台
技术栈:
Spring Boot Spring AI DeepSeek PGVector Redis MySQL Vue3项目亮点:
1. 基于Spring AI实现RAG知识库 2. 使用PGVector完成向量检索 3. Redis缓存热点问题 4. 实现多轮对话记忆 5. 支持PDF知识库导入 6. 支持课程资料智能问答 7. AI生成学习计划 8. Agent辅助学习分析总结
当下企业真正需要的已经不是:
调用一下ChatGPT接口而是:
Spring AI + RAG + 向量数据库 + Redis + Agent构建能够解决实际业务问题的 AI 系统。
如果你把这套EduAgentX AI知识库项目完整做出来,无论是校招还是社招,都已经具备了一个比较有竞争力的 AI 应用项目。