news 2026/4/16 19:48:48

SpringAI基于内存存储向量

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
SpringAI基于内存存储向量

一、环境信息

1、参看如下:

SpringAI入门学习

二、测试使用

1、创建SimpleVectorStore

public interface VectorStore extends DocumentWriter { default String getName() { return this.getClass().getSimpleName(); } void add(List<Document> documents); default void accept(List<Document> documents) { this.add(documents); } void delete(List<String> idList); void delete(Filter.Expression filterExpression); default void delete(String filterExpression) { SearchRequest searchRequest = SearchRequest.builder().filterExpression(filterExpression).build(); Filter.Expression textExpression = searchRequest.getFilterExpression(); Assert.notNull(textExpression, "Filter expression must not be null"); this.delete(textExpression); } @Nullable List<Document> similaritySearch(SearchRequest request); @Nullable default List<Document> similaritySearch(String query) { return this.similaritySearch(SearchRequest.builder().query(query).build()); } default <T> Optional<T> getNativeClient() { return Optional.empty(); } public interface Builder<T extends Builder<T>> { T observationRegistry(ObservationRegistry observationRegistry); T customObservationConvention(VectorStoreObservationConvention convention); T batchingStrategy(BatchingStrategy batchingStrategy); VectorStore build(); } }
/** * 向量模型配置VectorStore * @return */ @Bean public VectorStore vectorStore(){ DashScopeEmbeddingModel model = new DashScopeEmbeddingModel(new DashScopeApi(apiKey)); SimpleVectorStore vectorStore = SimpleVectorStore.builder(model) .build(); return vectorStore; }

2、控制器测试

package org.spring.springaiprojet.controller; import com.alibaba.cloud.ai.dashscope.api.DashScopeApi; import com.alibaba.cloud.ai.dashscope.embedding.DashScopeEmbeddingModel; import org.springframework.ai.document.Document; import org.springframework.ai.vectorstore.SimpleVectorStore; import org.springframework.ai.vectorstore.VectorStore; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.io.ClassPathResource; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.util.Arrays; import java.util.List; @RestController @RequestMapping("/ai/") public class AiVectorController { @Autowired private VectorStore vectorStore; @RequestMapping("/qwen/vector/api") public String vector() throws IOException { StringBuilder text = new StringBuilder(); ClassLoader classLoader = getClass().getClassLoader(); InputStream inputStream = classLoader.getResourceAsStream("springai.txt"); ClassPathResource classPathResource = new ClassPathResource("springai.txt"); try (BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream))){ String line; while ((line = reader.readLine()) != null){ text.append(line); } } List<Document> list = Arrays.stream(text.toString().split("。")).map(Document::new).toList(); // 存储向量,内部会自动向量化 vectorStore.add(list); // 相似性检索,similaritySearch实现 List<Document> documentList = vectorStore.similaritySearch("文本"); for(Document document : documentList){ System.out.println(document.getText()); System.out.println(document.getScore()); System.out.println("-----------------"); } return "success"; }

3、测试文件内容如下:springai.txt

SpringAI 是 Spring 官方推出的 AI 应用开发框架,通过提供统一的 API 抽象简化 AI 模型(如大语言模型、嵌入模型)与 Spring 生态的集成,支持多类 AI 服务(OpenAI、Azure OpenAI、Hugging Face 等)和向量存储(Redis、Milvus 等),让开发者聚焦业务逻辑。其核心组件按功能可分为‌数据处理、模型交互、向量存储、工具集成‌等维度,各组件分工明确以支撑 AI 应用开发全流程: 一、数据处理组件 数据是 AI 应用的基石,SpringAI 提供工具帮助开发者处理和准备数据,核心逻辑包括: ‌数据预处理‌:对原始数据进行清洗、格式转换、特征提取等操作,为后续 AI 模型训练或推理提供合规输入。 ‌数据存储与管理‌:整合向量存储(如 Redis、Milvus)等技术,实现嵌入向量的存储与相似性检索(核心用于 RAG 场景),确保数据高效存取与检索。 二、模型交互组件 模型交互是 AI 应用的核心环节,SpringAI 通过统一接口屏蔽不同厂商(OpenAI、Anthropic 等)的差异,核心功能包括: ‌模型抽象‌:将大语言模型、嵌入模型等抽象为统一接口,开发者无需关注底层实现细节,直接调用接口即可完成模型调用。 ‌提示与响应管理‌:支持提示文本(Prompt Text)和系统消息(System Message)的动态生成与管理,同时处理模型返回的响应(包含生成文本、元数据等),确保交互流程标准化。 三、向量存储组件 向量存储是 RAG(Retrieval Augmented Generation)场景的核心,SpringAI 提供工具支持向量存储的‌存储、检索、管理‌全流程: ‌存储‌:将文本的嵌入向量存储到 Redis、Milvus 等存储系统,为后续检索提供数据基础。 ‌检索‌:基于向量相似性算法(如余弦相似度)快速定位与输入文本最相关的向量,支撑 RAG 场景下的知识检索。 ‌管理‌:提供向量存储的生命周期管理(如创建、更新、删除),确保存储系统的高效与稳定。 四、工具集成组件 工具集成是 AI 应用扩展能力的关键,SpringAI 支持‌函数调用(Function Calling)‌等机制,核心逻辑包括: ‌工具注册‌:开发者可注册外部工具(如数据库查询、API 调用),让模型根据问题自动调用工具获取信息。 ‌调用机制‌:通过统一接口调用注册工具,模型可基于问题自动触发工具执行,实现“AI + 工具”的协同工作流。 五、环境与生态组件 SpringAI 基于 Spring Boot 构建,通过‌Starters 引入依赖‌简化环境搭建,核心优势包括: ‌依赖管理‌:通过 Maven/Gradle 的 Starters 依赖,快速引入 SpringAI 及其生态组件,避免版本兼容性问题。 ‌生态整合‌:无缝集成 Spring Boot、Spring Web、Spring Data 等现有 Spring 组件,开发者可复用 Spring 生态的开发经验,快速构建 AI 驱动的应用。 六、其他组件(如评估器 - 优化器) 部分组件(如评估器 - 优化器)聚焦‌模型评估与优化‌,核心逻辑包括: ‌评估‌:对模型生成内容的准确性和相关性进行评估,为优化提供数据依据。 ‌优化‌:基于评估结果调整模型参数或流程,持续提升 AI 应用的性能与效果。 SpringAI 的组件设计遵循“简化开发、聚焦业务”的理念,通过各组件的分工协作,帮助开发者高效构建 AI 驱动的应用,同时保障技术栈的稳定性与可扩展性。

4、测试内容如下:

GET http://localhost:8088/boot/ai/qwen/vector/api

5、基于SearchRequest实现

SearchRequest request= SearchRequest.builder().query("文本") .topK(1) .similarityThreshold(0.2).build();

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

Matlab/Simulink 三相四桥臂逆变器仿真模型探索

matlab/simulink三相四桥臂逆变器仿真模型 采用电压外环&#xff0c;电流内环控制策略&#xff0c;交流侧可以接不平衡负载&#xff0c;在负载不平衡的情况下依然保持输出电压对称。 直流侧电压为750V&#xff0c;可以自己定义&#xff0c;交流侧为380/220v&#xff0c;平衡负载…

作者头像 李华
网站建设 2026/4/16 16:14:46

探索一维声子晶体结构带隙仿真模型

一维声子晶体结构带隙仿真模型在材料科学与物理学的交叉领域&#xff0c;声子晶体是一个极具吸引力的研究对象。今天咱们就来深入聊聊一维声子晶体结构带隙的仿真模型。 什么是一维声子晶体 简单来说&#xff0c;声子晶体是一种具有周期性结构的人工复合材料&#xff0c;其声学…

作者头像 李华
网站建设 2026/4/16 15:04:36

【计算机毕业设计案例】基于springboot+微信小程序的选修课管理系统的设计与实现“课程查询-在线选课-课表管理-成绩追踪”(程序+文档+讲解+定制)

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

作者头像 李华
网站建设 2026/4/16 14:24:36

SenseVoice语音识别系统Docker Compose集群化部署实战

SenseVoice语音识别系统Docker Compose集群化部署实战 【免费下载链接】SenseVoice Multilingual Voice Understanding Model 项目地址: https://gitcode.com/gh_mirrors/se/SenseVoice 问题导向&#xff1a;为什么需要容器化部署语音识别服务&#xff1f; 在传统语音识…

作者头像 李华
网站建设 2026/4/16 15:09:58

网页多开“卡壳”?揭秘是内存还是CPU在“拖后腿”

不少人都有过这样的经历&#xff1a;同时打开十几个网页刷资讯、查资料、看视频&#xff0c;原本流畅的电脑突然变得卡顿&#xff0c;鼠标点击半天没反应&#xff0c;甚至浏览器直接崩溃。这时候难免会疑惑&#xff1a;到底是内存不够用了&#xff0c;还是CPU扛不住了&#xff…

作者头像 李华
网站建设 2026/4/15 16:43:05

WP4C1+,800-1150 MHz的四路功率分配器, 现货库存

型号介绍今天我要向大家介绍的是 Mini-Circuits 的一款功分器——WP4C1。 它的电压驻波比&#xff08;VSWR&#xff09;表现优异&#xff0c;端口S为1.5:1&#xff0c;其他端口为1.4:1&#xff0c;确保良好的阻抗匹配。其工作温度范围为-40C至85C&#xff0c;存储温度可低至-65…

作者头像 李华