model.onnx、tokenizer.json 文件介绍

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(分词器配置文件,文字转数字的翻译字典)

神经网络不能直接读懂自然语言,只能接收数字数组。

  • 作用:
    1. 把输入中文/英文句子拆成最小词语单元(token)
    2. 根据内置词表,把每个词语转换成模型能识别的整数ID
    3. 补齐长度、生成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做相似度检索
  1. 接收原始文本字符串
  2. 加载 tokenizer.json,依据里面的词表和规则:文本分词 → 转为数字 ID 数组(预处理)
  3. 将数字 ID 数组送入加载好的 model.onnx 神经网络
  4. ONNX 模型进行前向推理计算
  5. 输出 float[] 语义向量(Embedding),用于 Milvus 向量库检索、相似度匹配

三、区别

  1. Spring‑AI transformer starter

    需要两个文件:model.onnx + tokenizer.json,由SpringAI内置ONNX运行时执行向量化。

    Spring‑AI 在未配置本地model‑uri时会自动联网下载model.onnx(需要梯子),但是不会自动下载 tokenizer.json,必须手动获取;

  2. LangChain4j AllMiniLmL6V2EmbeddingModel

    它自带内置分词器,不需要tokenizer.json ;仅内置onnx模型,首次运行自动下载模型,不识别这套yml配置。

相关推荐
Flynn Liang2 天前
Spring AI 多模态实战(下):文生图 + TTS 语音合成(含 2.0 流式音频分片)
人工智能·spring·文生图·音视频·语音合成·tts·springai
增量星球2 天前
Spring AI 2.0 Tool Calling 到底怎么跑起来的:从 @Tool 到两次模型调用
java·agent·springai·ai coding
Flynn Liang2 天前
让 AI 查订单、查库存、发消息:Spring AI 自定义工具(Tool)实战与工具描述工程
java·人工智能·spring·函数调用·springai·tool·自定义工具
Flynn Liang3 天前
大模型怎么自己调函数?Spring AI 2.0 Tool Calling 自动循环原理 + 完整时序图
java·人工智能·spring·agent·函数调用·springai·toolcalling
Flynn Liang3 天前
RAG 答非所问/幻觉怎么破?Spring AI QuestionAnswerAdvisor 召回优化实战(TopK/重排/混合检索)
人工智能·算法·spring·rag·幻觉·springai
Flynn Liang4 天前
内存/Redis/PGVector/Milvus/ES 怎么选?Spring AI VectorStore 抽象与向量库选型对照表
redis·elasticsearch·milvus·rag·springai·pgvector·向量库
学编程就要猛7 天前
MCP(Model Context Protocol)
java·springai
点纭8 天前
springAI Alibaba Agent Framework 实战:快速使用
springai
Flynn Liang8 天前
Spring AI ChatClient 详解:system/user/assistant 角色、call 与 stream 到底怎么选
java·人工智能·spring·springai·流式输出·chatclient·java接入大模型
Flynn Liang8 天前
保姆级|Spring AI 2.0 第一个 Demo:Spring Boot 4 接入大模型(含国内可用方案 + 完整 pom)
人工智能·spring·ollama·springai·deepseek·springai入门·java接入大模型