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配置。

相关推荐
云和数据.ChenGuang15 小时前
用 Claude Code 重构遗留系统:从评估到落地的完整指南
java·人工智能·spring boot·后端·重构·springai
鱼宵4 天前
Spring AI 可观测与透明化:traceId 串起全链路,思考过程实时直播给用户
java·人工智能·spring·链路追踪·springai
Joy T4 天前
Spring AI 接入已有 Java 项目的三种架构设计
java·人工智能·springai·ai入门·chatclient·ai service·ai能力接入
鱼宵4 天前
Spring AI 流式输出:Flux + SSE 打字机,回答不再干等三秒
java·人工智能·spring·sse·springai·流式输出
鱼宵5 天前
Spring AI 生产化改造:记忆落 Redis、向量落 ES,重启再也不丢
人工智能·redis·spring·elasticsearch·springai
云和数据.ChenGuang5 天前
langchain4j InMemoryEmbeddingStore常用的方法
java·人工智能·windows·java-ee·fastapi·springai
做个文艺程序员5 天前
MinIO第07篇:基于MinIO + Spring AI + pgvector构建RAG知识库(Java全栈实战)
minio·向量数据库·ai大模型·rag·springai·pgvector
鱼宵5 天前
Spring AI 提示词模板:{变量} 参数化 + few-shot,一条提示词反复用
java·人工智能·spring·few-shot·提示词工程·springai
鱼宵6 天前
Spring AI 初体验:配好 yml 就能聊,ChatClient 四步链式调用
人工智能·spring·microsoft·大模型·springai·chatclient
鱼宵6 天前
Spring AI 工具调用:@Tool 让大模型自己查订单查库存
人工智能·spring·工具调用·functioncalling·springai