yaml
spring:
ai:
openai:
base-url: https://api.deepseek.com
api-key: ......
chat:
options:
model: deepseek-chat
temperature: 0.7
embedding:
transformer:
onnx:
model-uri: classpath:onnx/all-MiniLM-L6-v2/model.onnx
tokenizer:
uri: classpath:onnx/all-MiniLM-L6-v2/tokenizer.json
1、tokenizer.json(分词器配置文件,文字转数字的翻译字典)
神经网络不能直接读懂自然语言,只能接收数字数组。
- 作用:
- 把输入中文/英文句子拆成最小词语单元(token)
- 根据内置词表,把每个词语转换成模型能识别的整数ID
- 补齐长度、生成attention掩码等预处理信息
- 如果缺失:
程序不知道怎么切割文本、怎么把文字转为数字,直接启动报错,无法向量化
这个文件很小(几十KB),需要从huggingface同仓库单独下载,SpringAI不会自动拉取它!
2、model.onnx(ONNX神经网络模型文件,≈核心大脑)
- 本质:已经训练好的神经网络,以ONNX格式保存
- 作用:接收数字token编码,输出语义向量embedding(float\[\])
- 工作流程:
分词器把文字→数字编码 → 送入onnx模型运算 → 产出文本语义向量
如果缺失:没有神经网络,无法生成向量。
不配置model‑uri时,SpringAI会自动联网下载这个onnx模型缓存,离线环境直接报错。
model.onnx(≈80MB)
二、执行顺序
原始文本字符串
↓
tokenizer.json【分词+转数字ID】
↓
数字数组
↓
model.onnx【神经网络计算】
↓
float[] 语义向量(Embedding)→存入Milvus做相似度检索
- 接收原始文本字符串
- 加载
tokenizer.json,依据里面的词表和规则:文本分词 → 转为数字 ID 数组(预处理) - 将数字 ID 数组送入加载好的
model.onnx神经网络 - ONNX 模型进行前向推理计算
- 输出
float[]语义向量(Embedding),用于 Milvus 向量库检索、相似度匹配
三、区别
-
Spring‑AI transformer starter
需要两个文件:
model.onnx + tokenizer.json,由SpringAI内置ONNX运行时执行向量化。Spring‑AI 在未配置本地
model‑uri时会自动联网下载model.onnx(需要梯子),但是不会自动下载 tokenizer.json,必须手动获取; -
LangChain4j AllMiniLmL6V2EmbeddingModel
它自带内置分词器,不需要tokenizer.json ;仅内置onnx模型,首次运行自动下载模型,不识别这套yml配置。