Skip to content

[Bug] 向量模型 Dimensions 参数必填且无"不发送"选项,拒绝自定义维度的向量服务(vLLM + Qwen3-Embedding 等)全部向量化失败 #7039

Description

@SAXEM1997

Contact Information

SAXEM1997 (github)

MaxKB Version

v2.10.6-lts (docker: registry.fit2cloud.com/maxkb/maxkb:v2.10.6-lts)

Problem Description

OpenAI 兼容向量模型的「模型参数 → Dimensions(dimensions)」下拉框为必填required=True,默认 1024,仅 1536/1024/768/512 四个选项,没有"模型默认/不发送该参数"的选项),代码位置:apps/models_provider/impl/openai_model_provider/credential/embedding.py:20

只要配置了该模型参数,MaxKB 每次向量化都会在 /v1/embeddings 请求中携带 dimensions。若后端向量服务不接受自定义维度(典型:vLLM 按模型 config.json 的 matryoshka_dimensions 字段判定,缺失该字段即视为不支持 matryoshka 截断),所有向量化请求都会 400 失败:

openai.BadRequestError: Error code: 400 - {'error': {'message': 'Model "Qwen3-Embedding-4B" does not support matryoshka representation, changing output dimensions will lead to poor results.', 'type': 'BadRequestError', 'param': '', 'code': 400}}

#5295 同根因(该 issue 已关闭但未改代码,仅社区建议"删除维度参数")。但在当前版本 UI 中该参数必填、无法删除,#5295 的 workaround 无法通过界面完成,只能改数据库或改模型侧配置。

Steps to Reproduce

  1. 用 vLLM(本例 0.23.0,CPU 版)部署 Qwen3-Embedding-4B,模型 config.json 无 matryoshka_dimensions 字段(部分本地转换/早期下载的模型文件缺失该字段)
  2. MaxKB「模型管理」以 OpenAI 提供商接入该 embedding 服务 —— Dimensions 参数必填(默认 1024,无法留空)
  3. 创建知识库并选择该模型,上传文档
  4. 所有段落向量化失败,celery 日志大量 向量段落: xxx 错误:Error code: 400 ... does not support matryoshka representation ...

The expected correct result

  • 建议在 Dimensions 参数中增加「模型默认(不发送 dimensions)」选项,或将其改为非必填;
  • 当后端对 dimensions 返回 400 时,可考虑自动降级为不带 dimensions 重试一次,并在模型校验(is_valid 的 embed_query('Hello'))阶段提前暴露该问题(当前模型添加校验可通过,真正向量化时才失败,用户难以定位)。

Related log output

2026-09-14 16:37:02 [listener_manage ERROR] 向量段落: 01a09f0c-5b38-... 错误:Error code: 400 - {'error': {'message': 'Model "Qwen3-Embedding-4B" does not support matryoshka representation, changing output dimensions will lead to poor results.', 'type': 'BadRequestError', 'param': '', 'code': 400}}

Additional Information

两种已验证的临时解法(供其他用户参考):

  1. 模型侧(推荐):给后端模型的 config.json 补充官方字段 "matryoshka_dimensions": [1024, 2048, 2560] 并重启 vLLM —— vLLM 会重新判定支持 matryoshka,dimensions=1024 请求正常返回 1024 维向量(Qwen3-Embedding 官方本身支持 MRL 截断,1024 在官方支持列表内)。
  2. MaxKB 侧:直接改数据库去掉模型参数中的 dimensions(UI 无法删除)。

另注:Qwen3-Embedding 系列输出维度并非只有表单里的 4 档(例如 4B 模型默认 2560),固定四选项也无法覆盖常见模型的真实维度。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions