这不是一个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.2</version>
</dependency>
通过docker安装chromadb数据库
docker run -d --name chromadb -p 8000:8000 chromadb/chroma
默认通过ollama使用大模型,下载并安装
# 拉取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
easy:
defaultSystem:
enableRag: true
userTextAdvise: \n上下文信息如下,用---------------------包围\n\n---------------------\n{question_answer_context}\n---------------------\n\n基于上下文和提供的历史信息(而非先验知识),回复用户评论。如果答案不在上下文中,请告知用户无法回答这个问题。\n
fileStorageServiceClass: cn.wubo.easy.ai.document.impl.LocalDocumentStorageServiceImpl
fileStorageRecordClass: cn.wubo.easy.ai.document.impl.MemDocumentStorageRecordImpl
enableWeb: true
enableRest: true
servlet:
multipart:
max-file-size: 10MB
max-request-size: 10MB
@EnableEasyAi
@SpringBootApplication
public class EasyAiDemoApplication {
public static void main(String[] args) {
SpringApplication.run(EasyAiDemoApplication.class, args);
}
}
现在让我们上传一些知识库,访问文档上传界面http://ip:端口/easy/ai/list
状态列显示“向量存储完”即文档已转入知识库
访问聊天界面http://ip:端口/easy/ai/chat
这里以智谱AI为例,如何对接大模型API
修改项目依赖,支持的大模型平台可到Spring AI查看
<dependency>
<groupId>com.gitee.wb04307201</groupId>
<artifactId>easy-ai-spring-boot-starter</artifactId>
<version>0.6.2</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外,向量数据库也可以参照上面的方式进行替换