news 2026/2/15 0:44:04

85_Spring AI 干货笔记之 Apache Cassandra 向量存储

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
85_Spring AI 干货笔记之 Apache Cassandra 向量存储

一、Apache Cassandra 向量存储

本节将引导您设置 CassandraVectorStore 以存储文档嵌入并执行相似性搜索。

二、什么是 Apache Cassandra?

Apache Cassandra® 是一个真正的开源分布式数据库,以其线性可扩展性、经过验证的容错性和低延迟而闻名,使其成为关键任务事务数据的完美平台。

其向量相似性搜索(VSS)基于 JVector 库,确保了一流的性能和相关性。

在 Apache Cassandra 中进行向量搜索就像这样简单:

SELECTcontentFROMtableORDERBYcontent_vector ANNOFquery_embedding;

更多相关文档可以在这里 阅读。

此 Spring AI 向量存储设计用于全新的 RAG 应用程序,并且能够基于现有数据和表进行改造。

该存储还可用于现有数据库中的非 RAG 用例,例如语义搜索、地理邻近搜索等。

存储将根据其配置自动创建或增强所需的模式。如果您不希望修改模式,请使用 initializeSchema 配置存储。

使用 spring-boot-autoconfigure 时,根据 Spring Boot 标准,initializeSchema 默认为 false,您必须通过在 application.properties 文件中设置 …​initialize-schema=true 来选择加入模式创建/修改。

三、什么是 JVector?

JVector 是一个纯 Java 嵌入式向量搜索引擎。

与其他 HNSW 向量相似性搜索实现相比,它之所以脱颖而出,是因为:

  • 算法快速:JVector 使用受 DiskANN 和相关研究启发的最先进图算法,提供高召回率和低延迟。

  • 实现快速:JVector 使用 Panama SIMD API 来加速索引构建和查询。

  • 内存高效:JVector 使用产品量化压缩向量,以便在搜索期间它们可以保留在内存中。

  • 磁盘感知:JVector 的磁盘布局设计为在查询时进行最少必要的 IOPS。

  • 并发:索引构建至少可线性扩展到 32 个线程。线程数加倍,构建时间减半。

  • 增量:在构建索引的同时查询索引。在添加向量和能够在搜索结果中找到它之间没有延迟。

  • 易于嵌入:API 设计易于嵌入,由在生产中使用它的人设计。

四、先决条件

一个 EmbeddingModel实例 来计算文档嵌入。这通常配置为 Spring Bean。有几种选择:

  • Transformers 嵌入- 在您的本地环境中计算嵌入。默认是通过 ONNX 和 all-MiniLM-L6-v2 句子转换器。这可以直接使用。

  • 如果您想使用 OpenAI 的嵌入- 使用 OpenAI 嵌入端点。您需要在 OpenAI 注册 创建账户,并在 API 密钥 生成 api-key 令牌。

  • 还有许多其他选择,请参阅嵌入 API 文档。

一个 Apache Cassandra 实例,版本为 5.0-beta1 或更高

  • DIY 快速入门

  • 对于托管服务,Astra DB 提供了一个相当不错的免费层级服务。

五、依赖项

Spring AI 自动配置、启动器模块的工件名称发生了重大变化。请参阅升级说明以获取更多信息。

对于 依赖管理,我们建议使用 Spring AI BOM,如依赖管理部分所述。

将这些依赖项添加到您的项目中:

  • 仅用于 Cassandra 向量存储:
<dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-cassandra-store</artifactId></dependency>

或者,用于 RAG 应用程序中所需的一切(使用默认的 ONNX 嵌入模型):

<dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-starter-vector-store-cassandra</artifactId></dependency>

六、配置属性

您可以在 Spring Boot 配置中使用以下属性来自定义 Apache Cassandra 向量存储。

七、使用

7.1 基本用法

创建一个 CassandraVectorStore 实例作为 Spring Bean:

@BeanpublicVectorStorevectorStore(CqlSessionsession,EmbeddingModelembeddingModel){returnCassandraVectorStore.builder(embeddingModel).session(session).keyspace("my_keyspace").table("my_vectors").build();}

一旦有了向量存储实例,您就可以添加文档并执行搜索:

// 添加文档vectorStore.add(List.of(newDocument("1","内容1",Map.
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/14 22:21:22

一个 SpringBoot 项目能处理多少请求?我终于悟了

这篇文章带大家盘一个读者遇到的面试题哈。 根据读者转述&#xff0c;面试官的原问题就是&#xff1a;一个 SpringBoot 项目能同时处理多少请求&#xff1f; 不知道你听到这个问题之后的第一反应是什么。 我大概知道他要问的是哪个方向&#xff0c;但是对于这种只有一句话的…

作者头像 李华
网站建设 2026/2/13 21:27:51

【计算机毕业设计案例】基于python+Hadoop的国家气象降雨量大数据分析系统基于hadoop的气象数据分析与可视化系统(程序+文档+讲解+定制)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/2/14 22:10:32

8-4 WPS JS宏 new RegExp()、test()、exec()正则表达式的创建与使用

8-4 WPS JS宏 new RegExp()、test()、exec()正则表达式的创建与使用 如果前面讲解的字符串处理函数还不能轻松处理,或者处理不了字符串数据,那么可以使用正则表达式。真正强大的字符串处理技术,它可以做查找、替换、拆分等操作。 一、正则表达式函数 new RegExp(): 新建正…

作者头像 李华
网站建设 2026/2/12 18:34:00

新型Brotli压缩格式将优化PDF文件大小

Brotli是当今应用最广泛却鲜为人知的压缩格式之一&#xff0c;已被各大浏览器和内容分发网络广泛采用。然而在PDF文档领域&#xff0c;自1996年版本1.2以来&#xff0c;PDF一直采用FlateDecode过滤器进行压缩&#xff0c;该过滤器也被用于.zip和.png文件的压缩。这一现状即将改…

作者头像 李华
网站建设 2026/2/11 10:22:29

基于随机森林算法的Boss直聘数据分析及可视化(源码+lw+部署文档+讲解等)

课题介绍本课题旨在设计并实现基于随机森林算法的Boss直聘数据分析及可视化系统&#xff0c;解决Boss直聘平台招聘数据量大、杂乱无章、核心信息提取困难、招聘趋势难以预判、数据价值无法有效挖掘等问题。系统采用SpringBoot作为后端核心框架&#xff0c;结合MyBatis-Plus简化…

作者头像 李华
网站建设 2026/2/14 9:20:10

计算机大数据毕设实战-基于Hadoop的某篮球队各个球员数据分析系统的设计与实现【完整源码+LW+部署说明+演示视频,全bao一条龙等】

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华