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
- 用 vLLM(本例 0.23.0,CPU 版)部署 Qwen3-Embedding-4B,模型 config.json 无
matryoshka_dimensions 字段(部分本地转换/早期下载的模型文件缺失该字段)
- MaxKB「模型管理」以 OpenAI 提供商接入该 embedding 服务 —— Dimensions 参数必填(默认 1024,无法留空)
- 创建知识库并选择该模型,上传文档
- 所有段落向量化失败,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
两种已验证的临时解法(供其他用户参考):
- 模型侧(推荐):给后端模型的 config.json 补充官方字段
"matryoshka_dimensions": [1024, 2048, 2560] 并重启 vLLM —— vLLM 会重新判定支持 matryoshka,dimensions=1024 请求正常返回 1024 维向量(Qwen3-Embedding 官方本身支持 MRL 截断,1024 在官方支持列表内)。
- MaxKB 侧:直接改数据库去掉模型参数中的 dimensions(UI 无法删除)。
另注:Qwen3-Embedding 系列输出维度并非只有表单里的 4 档(例如 4B 模型默认 2560),固定四选项也无法覆盖常见模型的真实维度。
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 失败:与 #5295 同根因(该 issue 已关闭但未改代码,仅社区建议"删除维度参数")。但在当前版本 UI 中该参数必填、无法删除,#5295 的 workaround 无法通过界面完成,只能改数据库或改模型侧配置。
Steps to Reproduce
matryoshka_dimensions字段(部分本地转换/早期下载的模型文件缺失该字段)向量段落: xxx 错误:Error code: 400 ... does not support matryoshka representation ...The expected correct result
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
两种已验证的临时解法(供其他用户参考):
"matryoshka_dimensions": [1024, 2048, 2560]并重启 vLLM —— vLLM 会重新判定支持 matryoshka,dimensions=1024请求正常返回 1024 维向量(Qwen3-Embedding 官方本身支持 MRL 截断,1024 在官方支持列表内)。另注:Qwen3-Embedding 系列输出维度并非只有表单里的 4 档(例如 4B 模型默认 2560),固定四选项也无法覆盖常见模型的真实维度。