当前位置: 首页 > news >正文

SpringAI版本更新:向量数据库不可用的解决方案!

Spring AI 前两天(4.10 日)更新了 1.0.0-M7 版本后,原来的 SimpleVectorStore 内存级别的向量数据库就不能用了,Spring AI 将其全部源码删除了。

此时我们就需要一种成本更低的解决方案来解决这个问题,如何解决呢?我们一起来看。

解决方案:Redis 向量数据库

虽然 SimpleVectorStore 不支持了,但 Spring AI 内置了 Redis 或 ES 作为向量数据库的分布式存储中间件,我们可以用他们来进行向量的存储。

而在这两种方案中,显然 Redis 使用成本更低,因此,我们来看如何将向量存储到 Redis 数据库中。

它的具体实现步骤如下。

安装Redis-Stack

  1. 下载 Docker Hub:https://www.docker.com/get-started/
  2. 安装 redis-stack-server:使用“docker run -d --name redis-stack-server -p 6379:6379 redis/redis-stack-server”。

添加依赖

我们使用阿里云百炼平台的嵌入模型 text-embedding-v3 是兼容 OpenAI 的 SDK 的,因此,我们需要添加 OpenAI 和 Redis Vector 依赖:

<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-openai</artifactId>
</dependency>

设置配置信息

配置 Redis 连接信息,以及嵌入模型的配置信息:

spring:data:redis:host: localhostport: 6379ai:vectorstore:redis:initialize-schema: trueindex-name: custom-indexprefix: custom-prefixopenai:api-key: ${ALIYUN-AK}embedding:options:model: text-embedding-v3

阿里云百炼平台支持的向量模型:

代码实现

Redis 添加向量数据

@Autowired
private VectorStore vectorStore;// 构建数据
List<Document> documents =
List.of(new Document("I like Spring Boot"),new Document("I love Java"));
// 添加到向量数据库
vectorStore.add(documents);

当然,向量数据的数据源可以是文件、图片、音频等资源,这里为了简单演示整体执行流程,使用了更简单直观的文本作为数据源。

VectorStore 提供的常用方法如下:

  • add(List documents) :添加文档。
  • delete(List idList) :按 ID 删除文档。
  • delete(Filter.Expression filterExpression) :按过滤表达式删除文档。
  • similaritySearch(String query) 和 similaritySearch(SearchRequest request) :相似性搜索。

执行结果如下:

查询向量数据

@RestController
@RequestMapping("/vector")
public class VectorController {@Resourceprivate VectorStore vectorStore;@RequestMapping("/find")public List find(@RequestParam String query) {// 构建搜索请求,设置查询文本和返回的文档数量SearchRequest request = SearchRequest.builder().query(query).topK(3).build();List<Document> result = vectorStore.similaritySearch(request);System.out.println(result);return result;}
}

执行结果如下:

从上述结果可以看出,和“java”相似度最高的向量为“I love Java”,相似度评分为 0.77,如果我们 SearchRequest 对象中的 topK 设置为 1 的话,只会查询“I love Java”这条数据,如下图所示:

本文已收录到我的技术小站 www.javacn.site,其中包含的内容有:Spring AI、并发编程、MySQL、Redis、Spring、Spring MVC、Spring Boot、Spring Cloud、MyBatis、JVM、设计模式、消息队列、场景题等模块。


文章转载自:

http://jaxY8Xty.rnqbn.cn
http://REh1PwYX.rnqbn.cn
http://aEnE9C8u.rnqbn.cn
http://0Gvit2aw.rnqbn.cn
http://tlLsgW0P.rnqbn.cn
http://Nfiz6xJi.rnqbn.cn
http://VnLd93Ge.rnqbn.cn
http://IT4suCM6.rnqbn.cn
http://RxqYRzcU.rnqbn.cn
http://Geb65xmT.rnqbn.cn
http://hMo4sXRS.rnqbn.cn
http://vziz0CUe.rnqbn.cn
http://4m2Ik7gt.rnqbn.cn
http://mym92VGf.rnqbn.cn
http://EWvz4dnx.rnqbn.cn
http://fSa8cfEj.rnqbn.cn
http://mTRGKBuJ.rnqbn.cn
http://JfzGxgTi.rnqbn.cn
http://gnGnr3De.rnqbn.cn
http://xXQsWMLF.rnqbn.cn
http://NjgFS6MP.rnqbn.cn
http://WNuz62uU.rnqbn.cn
http://TzaOevz1.rnqbn.cn
http://8gldcHBV.rnqbn.cn
http://hMM3Nexk.rnqbn.cn
http://nQ9jeT3M.rnqbn.cn
http://05ebbdIe.rnqbn.cn
http://gzoDOl1N.rnqbn.cn
http://VsGqOPVK.rnqbn.cn
http://UTvS2erO.rnqbn.cn
http://www.dtcms.com/a/137170.html

相关文章:

  • ​​eBay东南亚爆单密码:72小时交付计划如何重构厦门仓+东南亚供应链?​
  • SpringAI+DeepSeek大模型应用开发——1 AI概述
  • 云游戏盒子的硬件设计与趋势分析
  • (3)VTK C++开发示例 --- 旋转的锥体
  • 什么是高防服务器
  • 【正点原子STM32MP257连载】第四章 ATK-DLMP257B功能测试——USB WIFI测试 #WIFI蓝牙二合一 #RTL8733BU
  • STM32F103C8T6 单片机入门基础知识及点亮第一个 LED 灯
  • 从单模态到多模态:五大模型架构演进与技术介绍
  • ping, tracert, tracepath, traceroute, ssh, telnet, tcping详细解释
  • 如何知道raid 有问题了
  • 单个霍尔传感器时,也存在上升沿和下降沿,为什么双边沿计数需要两个霍尔传感器呢?
  • 基于MCAL的S32K312 delay功能实现
  • Chatbox上使用本地和在线DeepSeek以及硅基流动DeepSeekI的对比感受
  • 如何利用GM DC Monitor快速监控一台网络类设备
  • OOP丨《Java编程思想》阅读笔记Chapter 5 : 初始化与清理
  • python爬虫降低IP封禁,python爬虫除了使用代理IP和降低请求频率,还有哪些方法可以应对IP封禁?
  • Cursor入门教程-JetBrains过度向
  • ReportLab 导出 PDF(页面布局)
  • 【Windows】安装或者点击OneDrive没有任何反应的解决方案
  • C++零基础实践教程 函数 数组、字符串与 Vector
  • 【文献笔记】SatLM: Satisfiability-Aided Language Models Using Declarative Prompting
  • STM32-FreeRTOS的详细配置
  • STM32基础教程——DMA
  • 深入解析Java日志框架Logback:从原理到最佳实践
  • 医院 VMware 替代实践合集|以国产虚拟化和超融合替代 vSphere 和 vSAN
  • 随机IP的重要性:解锁网络世界的无限可能
  • 数据库脱裤
  • Spring Boot管理Spring MVC
  • 【CRF系列】第7篇:CRF实战——经典工具与Python库应用
  • SPA 收入支出/技师提成自动统计系统——仙盟共创平台——未来之窗