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

Spring boot集成milvus(spring ai)

服务器部署Milvus


Run Milvus with Docker Compose (Linux)

milvus版本可在docker-compose.yml中进行image修改
在这里插入图片描述
启动后,docker查看启动成功
在这里插入图片描述

spring boot集成milvus

参考了这篇文章

Spring AI开发RAG示例,理解RAG执行原理

但集成过程中遇到了一系列问题,所以想着记录一下,省的以后再次集成遇到同样的问题看这一篇文章就行了

问题1 启动时报错,错误信息为 INTERNAL: Failed to frame message和This is supposed to be overridden by subclasses.

io.grpc.StatusRuntimeException: INTERNAL: Failed to frame messageat io.grpc.Status.asRuntimeException(Status.java:529) ~[grpc-api-1.59.1.jar:1.59.1]at io.grpc.internal.MessageFramer.writePayload(MessageFramer.java:154) ~[grpc-core-1.59.1.jar:1.59.1]at io.grpc.internal.AbstractStream.writeMessage(AbstractStream.java:66) ~[grpc-core-1.59.1.jar:1.59.1]at io.grpc.internal.ForwardingClientStream.writeMessage(ForwardingClientStream.java:37) ~[grpc-core-1.59.1.jar:1.59.1]at io.grpc.internal.DelayedStream$6.run(DelayedStream.java:283) ~[grpc-core-1.59.1.jar:1.59.1]at io.grpc.internal.DelayedStream.drainPendingCalls(DelayedStream.java:182) ~[grpc-core-1.59.1.jar:1.59.1]at io.grpc.internal.DelayedStream.access$100(DelayedStream.java:44) ~[grpc-core-1.59.1.jar:1.59.1]at io.grpc.internal.DelayedStream$4.run(DelayedStream.java:148) ~[grpc-core-1.59.1.jar:1.59.1]at io.grpc.stub.ClientCalls$ThreadlessExecutor.runQuietly(ClientCalls.java:742) ~[grpc-stub-1.59.1.jar:1.59.1]at io.grpc.stub.ClientCalls$ThreadlessExecutor.waitAndDrain(ClientCalls.java:725) ~[grpc-stub-1.59.1.jar:1.59.1]at io.grpc.stub.ClientCalls.blockingUnaryCall(ClientCalls.java:159) ~[grpc-stub-1.59.1.jar:1.59.1]at io.milvus.grpc.MilvusServiceGrpc$MilvusServiceBlockingStub.hasCollection(MilvusServiceGrpc.java:3992) ~[milvus-sdk-java-2.3.5.jar:na]at io.milvus.client.AbstractMilvusGrpcClient.hasCollection(AbstractMilvusGrpcClient.java:372) ~[milvus-sdk-java-2.3.5.jar:na]at io.milvus.client.MilvusServiceClient.lambda$hasCollection$1(MilvusServiceClient.java:358) ~[milvus-sdk-java-2.3.5.jar:na]at io.milvus.client.MilvusServiceClient.retry(MilvusServiceClient.java:277) ~[milvus-sdk-java-2.3.5.jar:na]at io.milvus.client.MilvusServiceClient.hasCollection(MilvusServiceClient.java:358) ~[milvus-sdk-java-2.3.5.jar:na]at org.springframework.ai.vectorstore.milvus.MilvusVectorStore.isDatabaseCollectionExists(MilvusVectorStore.java:423) ~[spring-ai-milvus-store-1.0.0-M5.jar:1.0.0-M5]at org.springframework.ai.vectorstore.milvus.MilvusVectorStore.createCollection(MilvusVectorStore.java:433) ~[spring-ai-milvus-store-1.0.0-M5.jar:1.0.0-M5]at org.springframework.ai.vectorstore.milvus.MilvusVectorStore.afterPropertiesSet(MilvusVectorStore.java:411) ~[spring-ai-milvus-store-1.0.0-M5.jar:1.0.0-M5]at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1853) ~[spring-beans-6.1.12.jar:6.1.12]at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1802) ~[spring-beans-6.1.12.jar:6.1.12]at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:600) ~[spring-beans-6.1.12.jar:6.1.12]at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:522) ~[spring-beans-6.1.12.jar:6.1.12]at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:337) ~[spring-beans-6.1.12.jar:6.1.12]at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-6.1.12.jar:6.1.12]at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:335) ~[spring-beans-6.1.12.jar:6.1.12]at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200) ~[spring-beans-6.1.12.jar:6.1.12]at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:254) ~[spring-beans-6.1.12.jar:6.1.12]at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1443) ~[spring-beans-6.1.12.jar:6.1.12]at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1353) ~[spring-beans-6.1.12.jar:6.1.12]at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.resolveFieldValue(AutowiredAnnotationBeanPostProcessor.java:785) ~[spring-beans-6.1.12.jar:6.1.12]at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:768) ~[spring-beans-6.1.12.jar:6.1.12]at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:145) ~[spring-beans-6.1.12.jar:6.1.12]at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:509) ~[spring-beans-6.1.12.jar:6.1.12]at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1439) ~[spring-beans-6.1.12.jar:6.1.12]at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:599) ~[spring-beans-6.1.12.jar:6.1.12]at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:522) ~[spring-beans-6.1.12.jar:6.1.12]at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:337) ~[spring-beans-6.1.12.jar:6.1.12]at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-6.1.12.jar:6.1.12]at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:335) ~[spring-beans-6.1.12.jar:6.1.12]at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200) ~[spring-beans-6.1.12.jar:6.1.12]at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:975) ~[spring-beans-6.1.12.jar:6.1.12]at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:971) ~[spring-context-6.1.12.jar:6.1.12]at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:625) ~[spring-context-6.1.12.jar:6.1.12]at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) ~[spring-boot-3.3.3.jar:3.3.3]at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:754) ~[spring-boot-3.3.3.jar:3.3.3]at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:456) ~[spring-boot-3.3.3.jar:3.3.3]at org.springframework.boot.SpringApplication.run(SpringApplication.java:335) ~[spring-boot-3.3.3.jar:3.3.3]at org.springframework.boot.SpringApplication.run(SpringApplication.java:1363) ~[spring-boot-3.3.3.jar:3.3.3]at org.springframework.boot.SpringApplication.run(SpringApplication.java:1352) ~[spring-boot-3.3.3.jar:3.3.3]at com.betp.milvus.BetpMilvusApplication.main(BetpMilvusApplication.java:16) ~[classes/:na]at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na]at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[na:na]at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:50) ~[spring-boot-devtools-3.3.3.jar:3.3.3]
Caused by: java.lang.UnsupportedOperationException: This is supposed to be overridden by subclasses.at com.google.protobuf.GeneratedMessageV3.getUnknownFields(GeneratedMessageV3.java:302) ~[protobuf-java-3.19.4.jar:na]at io.milvus.grpc.HasCollectionRequest.getSerializedSize(HasCollectionRequest.java:237) ~[milvus-sdk-java-2.3.5.jar:na]at io.grpc.protobuf.lite.ProtoInputStream.available(ProtoInputStream.java:108) ~[grpc-protobuf-lite-1.59.1.jar:1.59.1]at io.grpc.internal.MessageFramer.getKnownLength(MessageFramer.java:208) ~[grpc-core-1.59.1.jar:1.59.1]at io.grpc.internal.MessageFramer.writePayload(MessageFramer.java:138) ~[grpc-core-1.59.1.jar:1.59.1]... 54 common frames omitted

问题1解答

实际问题为(spring-ai-milvus-store)中(milvus-sdk-java)中的(protobuf-java)的版本问题
protobuf-java)版本修改逻辑为图中的版本3.24.0在这里插入图片描述

修改后的代码为

        <dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-milvus-store</artifactId><version>${spring-ai.version}</version><exclusions><exclusion><groupId>com.google.protobuf</groupId><artifactId>protobuf-java</artifactId></exclusion></exclusions></dependency><dependency><groupId>com.google.protobuf</groupId><artifactId>protobuf-java</artifactId><version>3.24.0</version><scope>compile</scope></dependency>

问题2 spring-ai-milvus-store和服务器milvus版本兼容问题

官网版本兼容截图
在这里插入图片描述

问题2解答

服务器milvus版本为v2.5.4,按图所说对应sdk版本应为2.5.9,但实际操作时会报错,经过尝试(不断修改spring-ai.version版本)后,适用的(milvus-sdk-java)版本为2.3.5
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

当前仅发现这几个问题,以后发现集成中的问题会继续添加

http://www.lryc.cn/news/2397823.html

相关文章:

  • Visual Studio+SQL Server数据挖掘
  • maven项目编译时复制xml到classes目录方案
  • 通过阿里云服务发送邮件
  • Vad-R1:通过从感知到认知的思维链进行视频异常推理
  • 黑马Java面试笔记之MySQL篇(事务)
  • 群辉(synology)NAS老机器连接出现网页端可以进入,但是本地访问输入一样的账号密码是出现错误时解决方案
  • C++多重继承详解与实战解析
  • 【深度学习】实验四 卷积神经网络CNN
  • 实现一个免费可用的文生图的MCP Server
  • 无公网ip远程桌面连接不了怎么办?内网计算机让外网访问方法和问题分析
  • 【手搓一个原生全局loading组件解决页面闪烁问题】
  • CSS基础巩固-基础-选择
  • 一种在SQL Server中传递多行数据的方法
  • 【Docker 从入门到实战全攻略(一):核心概念 + 命令详解 + 部署案例】
  • github 提交失败,连接不上
  • 系统架构设计师(一):计算机系统基础知识
  • VMware安装Ubuntu全攻略
  • 清理 pycharm 无效解释器
  • 精益数据分析(92/126):指标基准化——如何判断你的数据表现是否足够优秀
  • 手机如何压缩文件为 RAR 格式:详细教程与工具推荐
  • Elasticsearch集群管理的相关工具介绍
  • 基于多尺度卷积和扩张卷积-LSTM的多变量时间序列预测
  • Java 注解式限流教程(使用 Redis + AOP)
  • C# XAML 基础:构建现代 Windows 应用程序的 UI 语言
  • Linux运维笔记:服务器感染 netools 病毒案例
  • (面试)获取View宽高的几种方式
  • 【Linux】进程地址空间揭秘(初步认识)
  • 设计模式——备忘录设计模式(行为型)
  • 吴恩达:构建自动化评估并不需要大量投入,从一些简单快速的示例入手,然后逐步迭代!
  • 鸿蒙OSUniApp内存管理优化实战:从入门到精通#三方框架 #Uniapp