ollama 和 Milvus application.yml配置
第一块:基础服务配置
server:
port: 8080
含义:SpringBoot项目启动后,占用本机8080端口提供web服务。
第二块:spring 顶层配置 → 供给【Spring AI】框架(官方组件)
spring:
application:
name: java-llm-compare
项目名称,日志、监控里会展示这个服务名。
ai:
ollama:
base-url: http://localhost:11434
chat:
options:
model: llama3
temperature: 0.7
embedding:
options:
model: nomic-embed-text
✅ SpringAI 内置Ollama连接配置
base-url:本地Ollama服务地址;chat.model: llama3:对话大模型,聊天问答使用;temperature:0.7:随机性,越高回答越有创造性,越低回答越稳定;embedding.model: nomic-embed-text:嵌入向量模型,用来把文本转为向量存入Milvus。
① 当前 yml 里 spring.ai.ollama = 只用于 Ollama 本地大模型
Ollama 的定位:在你本机 / 内网服务器运行大模型程序。
如果你电脑没有安装 Ollama、没有下载模型文件,这段配置完全无效,不能对接 DeepSeek 云端 API。
② 建议不需要本地部署模型!普通家用电脑根本扛不住本地大模型运行
✅ 完全推荐直接用 DeepSeek 云端 API,不吃本机显卡、CPU 资源。
③ 本地跑 7B 参数模型最低需要 16G 显存;34B、67B 大模型普通 PC 根本跑不动,CPU 推理速度极慢。
如果希望对接DeepSeek的话,配置需要调整:
ai:
openai:
# 利用 OpenAI 协议无缝对接 DeepSeek
base-url: https://api.deepseek.com
api-key: sk-***********************
chat:
options:
model: deepseek-chat
temperature: 0.7
# ⚠️【关键踩坑点】必须关闭 OpenAI 默认的 Embedding 功能!否则会和本地模型冲突,且 DeepSeek 没有此接口会报 404
embedding:
enabled: false
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-transformers-spring-boot-starter</artifactId>
</dependency>
如果pom.xml中有这个配置,项目启动时会自动去 GitHub 下载模型文件,只要在 pom.xml 中配置了 spring-ai-transformers-spring-boot-starter 依赖,即使代码中没有显式使用,项目启动时 Spring Boot 的自动配置机制也会尝试加载它。
原因:
这是 Spring Boot “自动配置 (Auto-Configuration)” 机制的核心特性。它的设计理念是“约定优于配置”,旨在简化开发,让你通过添加依赖就能获得功能,无需手动编写大量配置代码。
其工作流程大致如下:
依赖引入:我们在 pom.xml 中添加了 spring-ai-transformers-spring-boot-starter 依赖。
启动扫描:Spring Boot 应用启动时,会扫描 classpath 下所有的 jar 包。
触发配置:它发现这个 Starter 依赖,并找到其内部的自动配置类 TransformersEmbeddingModel。
条件判断与执行:自动配置类会根据 @Conditional 系列注解进行条件判断。对于 TransformersEmbeddingModel,只要没有通过配置明确禁用它,且类路径存在,它就会默认激活。
Bean 创建:条件满足后,Spring 就会创建 TransformersEmbeddingModel 这个 Bean。正是这个 Bean 在初始化时,会去尝试从网络下载模型文件。
整个过程是 Spring Boot 框架在启动时自动完成的,和我们是否在业务代码中调用无关。
解决方案:
核心思路是绕过应用启动时的自动下载,主要有三种方法:
-
方案一:提前手动下载模型文件(最推荐)
这是最直接有效的办法。你可以提前把模型文件下载到本地,再通过配置指向它。- 超链接下载文件 (可点击下载):
- model.onnx
- tokenizer.json
json文件直接copy内容,新建文件粘贴进去就行了
- 将文件放入项目资源目录:例如,放在
src/main/resources/onnx/文件夹下。 - 在
application.properties或application.yml中配置本地路径:spring.ai.embedding.transformer.onnx.modelUri=classpath:onnx/model.onnx spring.ai.embedding.transformer.tokenizer.uri=classpath:onnx/tokenizer.json
- 超链接下载文件 (可点击下载):
-
方案二:使用国内镜像源
你可以在配置文件中将下载地址替换为国内镜像,例如 Hugging Face 的镜像站:spring.ai.embedding.transformer.onnx.modelUri=https://hf-mirror.com/sentence-transformers/all-MiniLM-L6-v2/resolve/main/onnx/model.onnx spring.ai.embedding.transformer.tokenizer.uri=https://hf-mirror.com/sentence-transformers/all-MiniLM-L6-v2/resolve/main/tokenizer.json -
方案三:配置缓存目录
你可以指定一个自己有权限的目录作为缓存,但这个方法本身不能解决下载失败的问题,通常需要和方案一或二结合使用:spring.ai.embedding.transformer.cache.directory=/path/to/your/cache
—————————————————————————————————————————————————
vectorstore:
milvus:
collection-name: spring_ai_collection
client:
host: localhost
port: 19530
embedding-dimension: 768
✅ SpringAI 自带 Milvus向量库配置(报错来源就在这里!)
5. collection-name: spring_ai_collection
SpringAI读写向量,只会操作Milvus里名叫spring_ai_collection的集合;
6. client.host/port:Milvus数据库地址端口;
7. embedding-dimension:768nomic-embed-text输出向量固定768长度,创建集合时用来定义向量字段;
⚠️ 当前缺失配置!Milvus开启账号鉴权,需要补充用户名密码
client:
host: localhost
port: 19530
username: root
password: Milvus
重点特性:SpringAI自动装配会自动创建集合,但是不会自动创建向量索引,这就是你
index not found的根源。
第三块:app 自定义配置 → 供给【LangChain4j】框架
app:
ollama:
base-url: http://localhost:11434
chat-model: llama3
embedding-model: nomic-embed-text
milvus:
host: localhost
port: 19530
collection-name: langchain4j_collection
dimension: 768
关键知识点:
app: 这一段SpringBoot原生不会自动识别!
这些参数不会自动生效,必须你手动写 @ConfigurationProperties 配置类读取,提供给LangChain4j使用。
collection-name: langchain4j_collection
LangChain4j操作向量,使用Milvus中另一个独立集合;dimension:768同样适配 nomic-embed-text;
⚠️ 重中之重:两套Milvus集合隔离
| 框架 | 读取配置路径 | Milvus集合名称 |
|---|---|---|
| Spring AI | spring.ai.vectorstore.milvus |
spring_ai_collection |
| LangChain4j | app.milvus(手动代码读取) |
langchain4j_collection |
👉 两个是Milvus中完全独立的两张“表”!
你往SpringAI存入向量,LangChain4j查不到;反之同理。
不要混淆集合名称,不要交叉使用。
当前存在的3个隐患清单
- spring.ai.vectorstore.milvus.client 缺少账号密码
Milvus默认开启登录校验,后续大概率出现连接失败; - SpringAI自动创建集合,不会自动构建索引,就是你遇到的
index not found; - Milvus Java SDK版本
2.3.6和服务端v2.6.13不匹配,建议升级至2.6.0
补充:最简修正后的完整yml片段(直接复制覆盖)
spring:
ai:
vectorstore:
milvus:
collection-name: spring_ai_collection
client:
host: localhost
port: 19530
username: root
password: Milvus
embedding-dimension: 768
initialize-schema: true # 开启自动初始化,如果集合不存在,会初始化创建
两个框架区别
- Spring AI:Spring官方推出,适配Spring生态,配置直接写在
spring.ai下,开箱即用; - LangChain4j:第三方Java大模型框架,Spring没有原生自动装配,所有参数需要手动绑定读取(也就是app下这一段配置)。
实现效果:
更多推荐



所有评论(0)