spring ai用法
以前的智能体开发要么使用python的langchain、langgroup,要么使用 dify、coze 这样的平台在页面上操作。在页面上操作如果出了问题不方便调试、排查,参数设置、向量库的选取等也不是那么可控。在2025年5月推出了spring ai 1.0版本,让java开发者也能开发智能体;
大模型应用的步骤
绝大部分开发者都是使用大模型,不会用到算法 或者 是新搭建一个大模型,对于大模型的使用目前最广泛的使用是聊天机器人,大致步骤如下:
这是一个比较简单的流程,具体的业务场景可以使用不同的流程,在这个流程中需要开发者做的事主要是以下几件:
1、搭建知识库,并对知识库的数据进行检索
2、搭建工具,也就是查询接口,哪个接口做什么事让大模型知道
3、部署大模型
线上大模型有时不稳定,使用线上大模型会将知识库数据暴露给外网、存在数据安全考虑,若没有这两点顾虑也可以使用线上的大模型,而不需要部署大模型
4、大模型的微调,一般的聊天机器人用不到,对于特殊场景可能会用到,参考我的博客中使用 llamafactory、xtuner 微调大模型的文章
向量库保存、检索的步骤:
保存:上传文档时会将文档中的数据分段,每一段就会转成一个向量,这个向量存放在一个多维空间中,语义相近的向量会间隔比较近。
检索:检索数据时也会将检索的数据转成向量,然后在向量空间中查找里这个向量最近的一个或多个向量(默认使用余弦算法,也有其他的算法),将查询出来的几个向量转换成文字,然后将这些查询出来的值和查询条件发给大模型,大模型归纳总结之后再返回;
以上操作中将文字转成向量、将向量转成文字、识别语义并将语义相近的向量放在相邻的空间中,这些操作都是embedding模型来做的;
在保存和检索过程汇总会用到多个参数,比如对数据分段每一段的长度、向量的维度、检索后返回几条、使用哪个向量库 这些都可以进行设置;
spring ai demo
我这里有一个 spring ai 的案例及使用,使用的是redis的向量库
后端代码: https://pan.baidu.com/s/1Ww48waIaYXBbKBXXTxC1Qg?pwd=jgir
前端:https://pan.baidu.com/s/1lyHo8834sIxlX_zDX8viGg?pwd=s3z7
redis向量库的安装参考:https://blog.csdn.net/qishiheyongshi/article/details/153052511?spm=1011.2415.3001.5331
demo中我使用的阿里云百炼上的大模型,需要自己去申请api-key,包括我个人云服务的数据库、redis等 :
告知大模型某个方法的用途使用 Tool 注解即可,其他的和普通方法一样:
demo 用法
前端:需要先安装node,使用 vscode 打开前端项目,运行 npm run dev 即可,打开页面有有几个demo,可以和后端交互
后端:除了和前端的交互外我新加了一个 rag 功能,用于知识库的保存和检索,使用的 redis 向量库,通过postman调用
请求头
请求体
知识库的检索: