项目思路来源:知识星球码农会锁
本人希望跟随知识星球大佬的开源项目进一步提升自己的开发能力与设计思维。先跟随 + 边敲边思考 + 后跳出的三步走策略彻底消化吸收项目。科技改变世界 你我一同进步!为成为一名优秀的开发架构师不断提升自己的小程~~
开始今天的记录学习:
一、设计思想
AI 应用开发可以说是目前编程开发者必须具备的能力和技术栈。在通用 AI 大模型的加持下,我们可以根据 AI 实现各种问答功能,但是受限于对话内容字数以及大模型未学习过的知识,AI 并不会给出正确的答案,也就是会出现“幻觉”现象。RAG 的加入就可以合理解决这部分问题。
RAG 检索增强生成,它不仅仅是一个知识内容存储工具,更重要的是它可以将检索与生成相结合构成一个智能系统,可以从海量数据中快速提取相关信息,并结合上下文生成精准、连贯的答案。对不同需求场景构建专属的 RAG 知识库,实现个性化、专业化的智能服务。
市面上有很多的开源的 RAG,甚至很多公司也都推出了自己的 RAG 知识库网页版,用户直接上传自己的各种文件就可以一键生成知识库,收费也非常的便宜。我之前实习过的一家面向医疗的小公司为了节约成本采用的腾讯云的 LKE 大模型,LKE 对各种大模型以及知识库进行了集成,网页端可以一键上传私域数据构建知识库,而且暴露的 API 可以在后端项目中进行接入,实现完整的 AI 功能链路。但是问题也很明显,就是数据安全无法得到保证,公司想要构建的知识库涉及患者和医生的隐私,所以后续公司想要进一步深耕,确实需要自己本地部署 + 构建私人RAG 知识库。
本项目就是针对上述提到的内容,基于 Ollama 部署 DeepSeek 大模型,提供 API 接口。通过 Spring AI 框架调用 API 实现 RAG 知识库,让知识库支持文本解析,但是还未部署上线,目前还处于测试 Demo 状态。
从项目开发中我想到可以与我之前做的 Agent 代码自动评审组件相结合,构建一个更完整的大模型应用开发项目,目前还停留在设想中,等后续开发推进(先挖个坑)~~~
穿插一个小点:本人最开始接触编程时目光只放在了 Java 后端开发上,但是随着时代的发展,大模型的迅速迭代,我发现,不能让自己局限于单一的业务开发,必须跟上时代的潮流。包括之前美团来学校做的宣讲会,也一直再强调,大模型的应用开发是目前最急迫需求的技术栈。
二、业务场景
目前想到的业务场景无非是针对给定的知识库让大模型回答的问题更精细、更准确,后续会有其它的业务场景我还会进行补充~~~
在这一节我主要想解释的是整个流程是什么样的?
先来看一张图:

整体架构分为三层:
数据准备层:私域数据可以是任何类型,不单是文字,也可以是 Java 代码和 SQL 语句。具体来讲,将上传的数据先按照我们设定的方式进行解析和切割,将切割后的数据进行标注,标记出这些内容属于的范围,也就是文本向量化存入到向量数据库中。其实整个 RAG 我觉得最重要的一部分就是向量化模型这部分,将数据以何种方式进行向量化,这部分可以引入大模型也有算法内容在里面,可以微调,让向量化后的向量数据更高效,但是我现在还没有深入了解这部分内容,后续会跟进学习~~~目前只是使用 Spring AI 给我们暴露出的 Embedding 相关的 API 。之前也学习过另一个开源框架 LangChain4j ,目前也已经更新到1.0.0 beta1了,其生态也相对完整。
数据检索层:在这一层中,用户在提问的时候,将问题与问题相关的向量库检索到的内容合并在一起构成完整的 Knowledge 知识内容,这部分涉及到目标检索和向量相似度匹配的问题。
LLM 生成层:最后一层,大模型得到了更完整、更优质的问题和信息 Prompt 可以回答的更准确、更精致。
三、实现效果
目前还在开发中~~后续会补充
本次项目需要用到的技术栈目前来看:Spring Boot + Spring AI + Redis + PostgreSQL + Ollama + DeepSeek + OpenAI + Docker
掌握 Spring Boot + Redis + PostgreSQL 搭建 AI 编程项目框架
掌握 Spring AI + Ollama + DeepSeek + OpenAI 本地部署接口对接
掌握 Spring AI + RAG 增强检索实现流程,能够搭建自己的本地知识库
掌握多线程模型对知识库检索的异步响应,提高切割与存储的效率
Flux 异步响应接口 + UI 流式应答对接
Linux + Docker + Portainer + Nginx 的服务器运维部署

No responses yet