介绍:通过Spring AI技术实现录入数据向量化后检索
jdk版本:17
spring-boot版本:3.4.5
spring-ai版本:1.0.0
spring-ai-alibaba版本:1.0.0.4
步骤一:引入依赖
依赖管理
js
<dependencyManagement>
<dependencies>
<!-- Spring Boot -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring-boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- Spring AI Alibaba -->
<dependency>
<groupId>com.alibaba.cloud.ai</groupId>
<artifactId>spring-ai-alibaba-bom</artifactId>
<version>${SpringAIAlibaba.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- Spring AI -->
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-bom</artifactId>
<version>${spring-ai.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
核心依赖
js
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-starter-vector-store-redis</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-starter-model-zhipuai</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-rag</artifactId>
</dependency>
步骤二:配置文件
application.yml
js
spring:
ai:
zhipuai:
api-key: 个人key
base-url: "https://open.bigmodel.cn/api/paas/"
chat:
options:
model: "glm-4.5"
embedding:
options:
model: embedding-3
dimensions: 256
vectorstore:
redis:
# 启动时自动创建Redis向量索引结构(首次部署需要开启)
initialize-schema: true
# Redis键名前缀,用于区分不同应用的向量数据
prefix: rag_prefix
# Redis向量索引名称
index: rag_index
步骤三:核心代码
1TestController
js
@RestController
@RequestMapping("/rag")
public class TestController {
private final VectorStore vectorStore;
public RagController(VectorStore vectorStore) {
this.vectorStore = vectorStore;
}
/**
* 录入数据
*
* @param data
* @return
*/
@PostMapping("importData")
public String importData(@RequestParam("data") String data) {
Document document = Document.builder()
.text(data)
.build();
vectorStore.add(List.of(document));
return "success";
}
/**
* 检索
*
* @param query
* @return
*/
@PostMapping("search")
public List<Document> search(@RequestParam("query") String query) {
SearchRequest searchRequest = SearchRequest.builder()
.topK(2)
.query(query)
.build();
List<Document> documents = vectorStore.similaritySearch(searchRequest);
return documents;
}
}
至此,基于Spring AI实现rag流程的demo版已完成!
本人正在打造技术交流群,欢迎志同道合的朋友一起探讨,一起努力,通过自己的努力,在技术岗位这条道路上走得更远。QQ群号:952912771 备注:技术交流 即可通过!
加入技术群可以获取资料,含AI资料、Spring AI中文文档等,等你加入~