目录
2.1 安装 RediSearch(Redis Stack)
一、连续对话的实现
因为大模型本身并不存储数据,因此想要实现连续对话,其实是把历史对话信息一次给大模型,这样大模型就可以根据历史对话实现“连续对话”的功能了。
因此存储的历史数据可能很多,所以最好存储在非关系型数据库,我们本文以存储到 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();
}
}