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

SpringAI——向量存储(vector store)

官方解释:向量存储(VectorStore)是一种用于存储和检索高维向量数据的数据库或存储解决方案,它特别适用于处理那些经过嵌入模型转化后的数据。在 VectorStore 中,查询与传统关系数据库不同。它们执行相似性搜索,而不是精确匹配。当给定一个向量作为查询时,VectorStore 返回与查询向量“相似”的向量。

也就是把非结构化数据转化成向量数据存储到向量数据库里面,通过查询可以检索出相似的向量列表

准备:

  • 首先要到阿里云百炼申请一个api-key(api-key创建地址)
  • 创建知识库(知识库创建步骤自己看官方提供的文档关于知识库的操作)
  • 上传文档(大模型服务平台百炼控制台 (aliyun.com))
  • 为知识库添加文档

我已经上传了一个文档

文档的内容如下: 

宠物领养系统使用手册
1. 系统简介
宠物领养系统是一个在线平台,旨在帮助有意向领养宠物的人找到合适的宠物,并提供领养流程的管理。系统包括宠物信息展示、领养申请、审核流程、领养协议签署等功能。
2. 注册账号
1.访问宠物领养系统官方网站或下载应用程序。
2.点击“注册”按钮,填写必要的个人信息,如姓名、邮箱、手机号等。
3.创建一个安全的密码,并确认密码。
4.阅读并同意用户协议和隐私政策。
5.点击“提交”完成注册。
3. 浏览宠物信息
1.登录宠物领养系统。
2.在首页点击“宠物信息”板块。
3.浏览不同种类和特征的宠物列表。
4.点击宠物图片或名称,查看宠物的详细信息,包括年龄、性别、健康状况、领养条件等。
4. 提交领养申请
1.在宠物详细信息页面,点击“申请领养”按钮。
2.填写领养申请表,包括个人信息、领养理由、家庭情况等。
3.上传相关证明文件,如身份证明、居住证明等。
4.点击“提交申请”按钮,等待系统审核。
5. 审核流程
1.系统管理员会审核提交的领养申请。
2.审核通过后,系统会发送通知到申请人的邮箱或手机。
3.如果申请未通过,申请人会收到未通过原因,并可以重新提交修改后的申请。
6. 签署领养协议
1.审核通过后,申请人需要在线签署领养协议。
2.阅读并理解协议内容,确认无误后点击“同意并签署”按钮。
3.系统会记录签署时间,并生成电子版领养协议供下载和打印。
7. 完成领养
1.系统会提供领养中心的地址和联系方式。
2.按照约定时间前往领养中心,与工作人员见面。
3.完成最后的手续,如支付领养费用(如有)、领取宠物健康证明等。
4.带领宠物回家,并确保其健康和安全。
8. 宠物信息更新
1.登录宠物领养系统。
2.点击“我的宠物”板块。
3.上传宠物的最新照片和健康状况更新。
4.如有领养变动,及时通知系统管理员进行记录。
9. 常见问题解答
1.如何找回密码?
o在登录页面点击“忘记密码”,输入注册邮箱,系统会发送重置密码的链接。
2.领养费用是多少?
o领养费用因地区和宠物种类而异,具体费用请咨询领养中心。
3.领养后可以退养吗?
o领养协议中会明确退养条件和流程,如有特殊原因需要退养,请联系领养中心。
10. 联系方式
宠物领养系统客服邮箱:support@petadoption.com
客服热线:123-456-7890
官方网站:www.petadoption.com
注意:本手册仅供参考,实际使用过程中请遵循系统最新提示和规定。

我已经创建了一个名叫“test”的知识库,为知识库添加文档

因为文档比较少,为了测试建议设置较小的最大分段长度,这样可以多一些分块

可以看到文件被切成了多个切片:

 接下来我们就可以通过代码来检索数据了

创建SpringBoot项目,引入依赖 

        <dependency><groupId>com.alibaba.cloud.ai</groupId><artifactId>spring-ai-alibaba-starter</artifactId><version>1.0.0-M6.1</version></dependency>

接下来我们就要配置DashScopeCloudStore,主要就是连接我们的知识库

 @Beanpublic DashScopeCloudStore dashScopeCloudStore() {DashScopeStoreOptions options = new DashScopeStoreOptions("test");//知识库名称return new DashScopeCloudStore(new DashScopeApi("你自己的api-key"),options); // 根据实际构造参数调整}

 接下来就可以检索了:

@RestController
@RequestMapping("/ai/v1")
public class VectorStoreController {@Autowiredprivate  DashScopeCloudStore dashScopeCloudStore;@GetMapping("/ai/search")public List<Document> search(@RequestParam(value = "message") String message) {SearchRequest request = SearchRequest.builder().query(message).topK(3).similarityThreshold(0.8).build();return this.dashScopeCloudStore.similaritySearch(request);}
}

使用SearchRequest 可以设置你要返回的相似文档的最大数量topK,,相似度超过similarityThreshold的文档才会被返回 ,以及一些过滤表达式。当然我们也可以之间传字符串,因为这些值都有对应的默认值。

我们看一下检索结果:

http://www.dtcms.com/a/339062.html

相关文章:

  • SpringClound——网关、服务保护和分布式事务
  • Redis-缓存-击穿-分布式锁
  • 使用ros2跑mid360的fastlio2算法详细教程
  • 【数据结构】用堆解决TOPK问题
  • 算法训练营day56 图论⑥ 108. 109.冗余连接系列
  • C++---为什么迭代器常用auto类型?
  • 强、软、弱、虚引用
  • 在 Qt C++ 中利用 OpenCV 实现视频处理技术详解
  • 尝试Claude Code的安装
  • 学习笔记分享——基于STM32的平衡车项目
  • Mac调试ios的safari浏览器打开的页面
  • 电子电气架构 --- 软件项目成本估算
  • 技术攻坚全链铸盾 锁定12月济南第26届食品农产品安全高峰论坛
  • 任务十二 我的页面及添加歌曲功能开发
  • Typescript入门-对象讲解
  • Python量化交易:结合爬虫与TA-Lib技术指标分析
  • Matplotlib数据可视化实战:Matplotlib子图布局与管理入门
  • Ansible 角色管理指南
  • Pandas数据处理与分析实战:Pandas数据处理与Matplotlib可视化入门
  • 0819 使用IP多路复用实现TCP并发服务器
  • Tomcat 的核心脚本catalina.sh 和 startup.sh的关系
  • 陪诊小程序系统开发:开启智慧就医新时代
  • CNN 在故障诊断中的应用:原理、案例与优势
  • BEV:隐式相机视角转换-----BEVFormer
  • 简单实现监听redis的Key过期事件
  • Shopee本土店账号安全运营:规避封禁风险的多维策略
  • 微服务-08.微服务拆分-拆分商品服务
  • 什么是强化学习
  • JMeter高级性能测试训练营 – 从入门到企业级实战
  • pytest高级用法之插件开发