查阅官方文档,Spring AI 支持的数据库如下:
- PostgreSQL
- MySQL / MariaDB
- SQL Server
- HSQLDB
- Cassandra
- Neo4j 图数据库;
最终我们选型的是 Cassandra 数据库。
Apache Cassandra 是一个开源的分布式 NoSQL(Not Only SQL)数据库管理系统,专为处理大规模数据量和高写入频率的工作负载而设计。它最初由 Facebook 开发,后来贡献给了 Apache 软件基金会,成为了 Apache 的一个顶级项目。
之所以选择它,主要是考虑到:
- 时间序列优化: 原生支持时间序列数据模型(聊天记录本质是时间序列),并且内置 TTL (Time-To-Live) 自动清理机制,比如自动清理 3 年前的对话记录;
- 高并发写入:分布式架构轻松处理海量聊天消息写入(优于关系型数据库),线性扩展能力满足用户量增长;
- 生产级可靠性:多副本机制保障高可用,自动分区平衡,无单点故障;
- 与 Spring AI 深度集成:与 Spring AI 兼容性较好,自动建表 (
ai_chat_memory
),无需手动 DDL,支持滑动窗口记忆策略
安装Cassandra 完成之后
首先,编辑 pom.xml
文件, 添加 Cassandra 依赖,如下:
<!-- Cassandra -->
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-starter-model-chat-memory-repository-cassandra</artifactId>
</dependency>
添加完成后,记得刷新一下 Maven, 将依赖下载到本地仓库中。
添加配置
cassandra:
contact-points: 127.0.0.1 # Cassandra 集群节点地址(可配置多个,用逗号分隔)
port: 9042 # 端口号
local-datacenter: datacenter1 # 必须与集群配置的数据中心名称一致(大小写敏感)
application:
name: xiaojiu-ai-robot
chat:
memory:
repository:
cassandra:
keyspace: xiaojiu_ai_robot # 指定存储聊天记忆的 Keyspace(类似数据库名)
table: t_ai_chat_memory # 表名
time-to-live: 1095d # 数据的自动过期时间(1095天 ≈ 3年)
initialize-schema: true # 自动初始化表结构
修改ChatMemory 存储方式
/**
* 记忆存储
* @return
*/
@Resource
private CassandraChatMemoryRepository chatMemoryRepository;
@Bean
public ChatMemory chatMemory() {
return MessageWindowChatMemory.builder()
.maxMessages(50)//最大消息窗口50默认20
.chatMemoryRepository(chatMemoryRepository)//记忆存储
.build();
}
启动项目可以看到已经成功初始化好了

这时候问一些问题也成功的持久化到了数据库中

注意:这里建议使用Dbeaver来进行连接使用其他数据库连接工具如DataGrip连接容易显示错误白白浪费没必要的时间。

其实是没问题的。
Comments NOTHING