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

相关推荐
咩咩啃树皮7 小时前
第40篇:Vue3组件化开发精讲——组件拆分、复用、父子通信、工程化架构
java·前端·架构
阳光是sunny7 小时前
LangGraph中的Reducer是什么
前端·人工智能·后端
灯澜忆梦7 小时前
GO_并发编程---定时器
开发语言·后端·golang
阳光是sunny7 小时前
从链到图:LangGraph 入门基础全解析
前端·人工智能·后端
鱟鲥鳚7 小时前
Spring Boot 集成 LangChain4j:从模型调用到 Tool Calling(Demo版)
java·spring boot
皮皮林5517 小时前
开源实力派,给本地 AI 装上深度调研能力,一张 3090 跑到 95.7 分!
后端
努力的小雨8 小时前
把 Windows 桌面图标做成一个会自己运转的小世界
后端
武子康9 小时前
Search Console Platform Properties 扩大 SEO 资产边界:从 Page Ranking 到 Topic Coverage(5 类误读边界 + 3 表数据层设计)
前端·人工智能·后端
大模型码小白9 小时前
【Python零基础教程】继承、多态与魔法函数:面向对象编程三大核心特性详解
java·大数据·开发语言·人工智能·python·ai编程
腾渊信息科技公司9 小时前
Spring Boot对接MES实战:视觉检测数据自动同步方案
java·人工智能·spring boot·后端·计算机视觉·ai·软件需求