easy-ai-spring-boot-starter
easy-ai-spring-boot-starter copied to clipboard
这不是一个AI大模型,但是可以帮你快速集成AI大模型到Spring项目中,并通过“检索增强生成(RAG)”的方式建立专家知识库帮助大模型回答问题。
easy-ai-spring-boot-starter
易智Spring
这不是一个AI大模型,但是可以帮你快速集成AI大模型到Spring项目中,
并通过“检索增强生成(RAG)”的方式建立专家知识库帮助大模型回答问题。核心功能依赖于Spring AI实现,RAG运行原理如下
代码示例
快速开始
引入依赖
增加 JitPack 仓库
<repositories>
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>
</repositories>
引入jar
<dependency>
<groupId>com.github.wb04307201</groupId>
<artifactId>easy-ai-spring-boot-starter</artifactId>
<version>0.6.0</version>
</dependency>
安装向量数据库
通过docker安装chromadb数据库
docker run -d --name chromadb -p 8000:8000 chromadb/chroma
安装大语言模型
默认通过ollama使用大模型,下载并安装
# 拉取llama3模型
ollama pull llama3
# 拉取qwen2模型
ollama pull qwen2
添加相关配置
spring:
application:
name: spring_ai_demo
ai:
ollama:
chat:
options:
# model: llama3
model: qwen2
embedding:
options:
model: qwen2
base-url: "http://localhost:11434"
vectorstore:
chroma:
client:
host: http://localhost
port: 8000
collection-name: SpringAiCollection
initialize-schema: true
servlet:
multipart:
max-file-size: 10MB
max-request-size: 10MB
在启动类上加上@EnableEasyAi注解
@EnableEasyAi
@SpringBootApplication
public class EasyAiDemoApplication {
public static void main(String[] args) {
SpringApplication.run(EasyAiDemoApplication.class, args);
}
}
使用检索增强生成(RAG)辅助对话
当未上传知识库时

显然开始胡说八道了
现在让我们上传一些知识库,访问文档上传界面http://ip:端口/easy/ai/list

状态列显示“向量存储完”即文档已转入知识库
访问聊天界面http://ip:端口/easy/ai/chat

高级
使用其他大模型API
这里以智谱AI为例,如何对接大模型API
修改项目依赖,支持的大模型平台可到Spring AI查看
<dependency>
<groupId>com.gitee.wb04307201</groupId>
<artifactId>easy-ai-spring-boot-starter</artifactId>
<version>0.6.0</version>
<exclusions>
<exclusion>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-ollama-spring-boot-starter</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-zhipuai-spring-boot-starter</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>
修改配置项目
spring:
ai:
zhipuai:
api-key: 智谱AI API Key
除了大模型API外,向量数据库也可以参照上面的方式进行替换
