【SpringAI Alibaba】基于 Redis 实现连续对话与向量存储

发布于:2025-07-16 ⋅ 阅读:(17) ⋅ 点赞:(0)

目录

一、连续对话的实现

1.1 添加依赖

1.2 设置配置文件

1.3 添加Redis配置类

1.4 配置ChatClient实现连续对话

二、Redis向量存储与查询

2.1 安装 RediSearch​(Redis Stack)

2.2 添加依赖

2.3 配置 Redis 服务器信息

2.4 添加 RedisConfig

2.5 Redis 添加向量数据

2.6 避免数据重复添加

2.7 Redis 查询向量数据


一、连续对话的实现

因为大模型本身并不存储数据,因此想要实现连续对话,其实是把历史对话信息一次给大模型,这样大模型就可以根据历史对话实现“连续对话”的功能了。​

因此存储的历史数据可能很多,所以最好存储在非关系型数据库,我们本文以存储到 Redis 为例给大家演示连续对话的实现。

1.1 添加依赖

需要添加两个依赖:spring-ai-alibaba-starter-memory-redis 是 Redis 存储器,jedis 是 Redis 存储器需要操作 Redis 数据库的驱动:

<dependency>​
    <groupId>com.alibaba.cloud.ai</groupId>​
    <artifactId>spring-ai-alibaba-starter-memory-redis</artifactId>​
</dependency>​
​
<dependency>​
    <groupId>redis.clients</groupId>​
    <artifactId>jedis</artifactId>​
    <version>5.2.0</version>​
</dependency>

1.2 设置配置文件

设置配置文件,配置 Redis 连接信息:

spring:​
  ai:​
    memory:​
      redis:​
        host: localhost​
        port: 6379​
        timeout: 5000

1.3 添加Redis配置类

添加 Redis 配置类,注入 RedisChatMemoryRepository 对象,实现 Redis 自定义存储器注入:

import com.alibaba.cloud.ai.memory.redis.RedisChatMemoryRepository;​
import org.springframework.beans.factory.annotation.Value;​
import org.springframework.context.annotation.Bean;​
import org.springframework.context.annotation.Configuration;​
​
@Configuration​
public class RedisMemoryConfig {​
​
    @Value("${spring.ai.memory.redis.host}")​
    private String redisHost;​
    @Value("${spring.ai.memory.redis.port}")​
    private int redisPort;​
//    @Value("${spring.ai.memory.redis.password}")​
//    private String redisPassword;​
    @Value("${spring.ai.memory.redis.timeout}")​
    private int redisTimeout;​
​
    @Bean​
    public RedisChatMemoryRepository redisChatMemoryRepository() {​
        return RedisChatMemoryRepository.builder()​
                .host(redisHost)​
                .port(redisPort)​
                // 若没有设置密码则注释该项​
//           .password(redisPassword)​
                .timeout(redisTimeout)​
                .build();​
    }​
}

网站公告

今日签到

点亮在社区的每一天
去签到