如何使用Spring AI加载本地的ONNX格式intfloat/multilingual-e5-large嵌入模型
如何使用Spring AI加载本地的ONNX格式intfloat/multilingual-e5-large嵌入模型
嘿,我来帮你搞定这个问题!你之前遇到的加载失败其实是没找对Spring AI加载本地ONNX模型的正确姿势,它完全支持本地模型加载的,下面我一步步给你拆解操作:
一、先确认本地模型的文件结构
首先得确保你本地下载的模型文件是完整的,目录里得包含Spring AI需要的所有核心文件,大概结构应该是这样的:
你的本地模型根目录/ ├── tokenizer.json ├── vocab.txt └── onnx/ └── model.onnx # 就是你下载的那个ONNX模型文件
要是缺了tokenizer相关的配置文件,Spring AI肯定初始化失败,所以先仔细检查一遍文件齐不齐。
二、用配置类正确初始化模型
别再用远程URL来配置了,直接指向本地的模型目录就行。你可以写一个配置类来注册模型Bean,代码示例如下:
import org.springframework.ai.transformers.TransformersEmbeddingModel; import org.springframework.ai.transformers.api.TransformersEmbeddingOptions; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class LocalEmbeddingConfig { // 这里填你本地模型根目录的绝对路径或者相对路径,比如"../local-models/multilingual-e5-large-onnx" @Value("${local.embedding.model.path}") private String localModelRootPath; @Bean public TransformersEmbeddingModel localEmbeddingModel() { // 配置模型和tokenizer的路径,因为都在同一个目录,所以直接指向根目录就行 TransformersEmbeddingOptions options = new TransformersEmbeddingOptions() .setModelId(localModelRootPath) .setTokenizerId(localModelRootPath); return new TransformersEmbeddingModel(options); } }
三、配置文件里指定本地路径
在你的application.properties或者application.yml里加上本地模型的路径配置,比如:
# application.properties local.embedding.model.path=你的本地模型根目录的路径(绝对/相对都可以)
四、几个要注意的坑
- Spring AI版本要够新:如果是比较老的版本,对本地ONNX模型的支持可能有问题,建议升级到最新的稳定版,避免版本兼容问题。
- 路径别写错:绝对路径要写全,相对路径要注意是相对于项目的根目录,别把路径写错导致找不到文件。
- 文件权限要够:确保你的应用程序有读取本地模型文件的权限,不然会报权限错误。
这样配置之后,Spring AI就能正确加载你本地的ONNX格式multilingual-e5-large模型了,你可以正常用它来生成文本嵌入了。
备注:内容来源于stack exchange,提问作者jirka
相关产品推荐
相关产品推荐

