cohere 5.11 的 Python SDK,client.embed(model='embed-multilingual-v3.0', texts=['退货政策']) 抛 422,返回体里写 input_type is required,同一段代码上个月还能跑,升级 SDK 之后才出现,退回 5.9 能过但没有 v4 模型。

一开始怀疑是「走 OpenAI 兼容层时字段没被透传」,查了一圈,方向不对。

排查方向其实有限,先把可能性排一排。v3 模型强制要求 input_type 四个枚举之一。也可能是SDK 5.x 移除了旧版本里的默认值。

另外,入库和查询用了同一个 input_type 导致召回偏移。

先用 curl 带 input_type 打官方接口

curl https://api.cohere.com/v1/embed -H "Authorization: Bearer $CO_KEY" -H "content-type: application/json" -d '{"model":"embed-multilingual-v3.0","texts":["退货政策"],"input_type":"search_document"}'

SDK 里显式传 search_document

python -c "import cohere;c=cohere.ClientV2();print(len(c.embed(model='embed-multilingual-v3.0',texts=['退货政策'],input_type='search_document').embeddings.float_))"

随后核对向量维度与条数

python -c "import cohere;r=cohere.ClientV2().embed(model='embed-multilingual-v3.0',texts=['a','b'],input_type='search_document');print(len(r.embeddings.float_),len(r.embeddings.float_[0]))"

入库用 document 查询用 query 分两处配置

python ingest.py --input-type search_document && python search.py --input-type search_query

命令输出我都留了记录,免得改完记不清原来的值。

改之前先确认了最近有没有人动过配置,避免白查一遍。

恢复的判定其实很直接。422 消失,返回的 embeddings 条数与输入文本一致,维度为 1024,检索首条命中预期文档。

补一句。input_type 填错不会报错,只会让召回率下降,入库与查询必须分别使用 document 和 query 两种值。如果同一现象隔几天又出现,说明根因没找到,别当偶发处理。

作者 9823189