Spring AI实现rag流程(简易版)

介绍:通过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中文文档等,等你加入~

相关推荐
文丑颜不良啊4 小时前
LeetCode876~900题目解析
java·leetcode
aloha_7895 小时前
Java 基础、集合、异常与 JUnit 5 速查
java·junit·sqlserver
知守观5 小时前
设计模式实战:从真实老项目中看标准模板方法与工厂的落地
java·spring·设计模式
独隅6 小时前
Claude API 实战教程:从入门到完整项目
android·java·数据库·claude·claude code
_孤傲_6 小时前
快速掌握 MySQL 语法
数据库·后端·mysql
Wang's Blog6 小时前
Java 项目实战: 交友项目 - 圈子功能实现:总结
java·开发语言·交友
SL_staff6 小时前
JVS私有化文档系统上线避坑指南:5大运维与业务协同断点及检测加固实践
java·开源·全栈
IT_陈寒7 小时前
Java静态变量初始化坑得我头皮发麻
前端·人工智能·后端
FinelyYang8 小时前
考试系统简答题 AI 阅卷:覆盖度驱动、异步评分与人机协同落地实践
java·大数据·人工智能
hhhjhl8 小时前
Yup 跨端三方库仓颉适配全流程
java·开发语言