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

相关推荐
苏三说技术2 小时前
LangChain4j 和 LangGraph4j,哪个更好?
后端
ServBay3 小时前
7 个AI开发中真正用得上的 MCP Server,配合Claude Code食用效果更佳
后端·claude·mcp
妙码生花3 小时前
从 PHP 到 AI + Golang,程序员自救转型手记(十五):优化细节、网络请求封装
前端·后端·ai编程
用户6757049885024 小时前
Go 语言里判断字符串为空,90% 的人都写错了!
后端·go
Flittly4 小时前
【AgentScope Java新手村系列】(16)从RAG到多路检索
java·spring boot·spring
用户6757049885024 小时前
Go 进阶必修:90% 的人都没用对的“表驱动法”
后端·go
小兔崽子去哪了4 小时前
Java 生成二维码解决方案
java·后端
苍何4 小时前
懂事的 Agent 已经开始自己看屏幕干活了,效率起飞!
后端
掘金码甲哥4 小时前
1分钟买不了吃亏系列: nginx动态域名解析
后端