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中文文档等,等你加入~

相关推荐
南城以南溫暖如初14725 分钟前
外卖CPS实战指南:从技术选型到运营落地全流程解析
java·spring boot·mysql·架构·vue
傻啦嘿哟1 小时前
英雄联盟皮肤爬虫:爬取全皮肤价格与特效,做比价工具
java·c++·爬虫
码匠许师傅2 小时前
【C++ 面试真题】24. 聊聊 C++ 的时间日期处理
java·c++·面试
mqiqe3 小时前
AgentScope Java 2.0 Agent 状态存储(AgentStateStore)深度解析:构建可恢复、可扩展的智能体运行时
java·运维·网络
zhifou1234563 小时前
java 17升级安装
java·开发语言
用户3721574261353 小时前
如何使用 Java 将 Markdown 转换为 PDF(含自定义设置)
java
IT_陈寒3 小时前
Vue的响应式什么时候会失灵?这个坑我踩了
前端·人工智能·后端
Patrick_Wilson3 小时前
Web 认证方案技术指南
前端·后端·面试
用户3721574261353 小时前
如何使用 Java 在 Word 文档中添加和删除水印:分步指南
java
与驴OO4 小时前
设计 Skill 系统,这 3 个坑我替你踩过了
后端·aigc