文档 · 向量

这个别名不会在你睡觉时换掉

/v1/models 里列着四条向量条目。三条是可以直接调用的模型名;剩下一条是别名 auto/embed,它只指向一个模型,永远不变。它不会把你的请求悄悄转给别人——这个限制是故意的,下面说它挡掉了什么。

怎么调

curl https://tokenexchage.com/v1/embeddings \
  -H "Authorization: Bearer sk-你的key" \
  -H "Content-Type: application/json" \
  -d '{"model":"auto/embed","input":"今天天气不错"}'
from openai import OpenAI

client = OpenAI(
    base_url="https://tokenexchage.com/v1",
    api_key="sk-你的key",
)

r = client.embeddings.create(
    model="auto/embed",
    input=["第一段", "第二段"],
)
print(len(r.data[0].embedding))   # 1024

input 收字符串,也收字符串数组。返回是 OpenAI 的形状({data, model, usage}),已经会调 embedding 的客户端不用改任何一行解析代码。

为什么没有降级链

大多数路由层把「模型挂了」当成「请求挂了」,于是换下一个候选重试。对话场景里这没坏处——换个模型照样能回答问题,而且你看得出来答的人变了。

向量场景里,这么干会把你的数据毁掉。

不同的 embedding 模型不共享坐标系。我们实测过三个候选,它们返回的都是 1024 维向量——长度一样、类型一样、JSON 一样。把同一句话分别喂给三个模型,比一比:

同句跨模型余弦相似度
A 与 B   0.003
A 与 C   0.010
B 与 C   0.006

基本就是 0。它们是三个互相正交的向量空间,只是恰好维数相同——也正因为「恰好相同」,这个故障极难发现:返回里没有任何一处看着不对。

用 A 把文档灌进索引,用 B 去查。结果不是检索变差,是检索变成随机的。没有报错、没有告警,你几周之后觉得搜索结果怎么不对劲,才发现。

所以 auto/embed 只有一个候选。那个模型不可用时,请求直接失败并说明原因。在「悄悄把索引污染掉」和「报错」之间,报错是唯一安全的选择。

那三个数是怎么量出来的、以及一段可以在你自己端点上复现的代码,写在 Three 1024-Dimension Embedding Models, Three Coordinate Systems(英文)。

模型要换的时候怎么办

把别名背后的 embedding 模型换掉,是破坏性变更,不是升级。所以它会以新名字发布——auto/embed-v2——老名字继续可用。

于是你的选择是明确的:

锁死 auto/embed底下什么都不动
换到新名字你自己挑时间,重建索引,切换期两个都能用

不会发生的事是:别名在某天夜里被重新指向。

参数与返回

项值
模型别名auto/embed
维度1024
端点POST /v1/embeddings
鉴权Authorization: Bearer sk-…
返回OpenAI 形状 {data, model, usage}
别名背后的候选数1

清单里另外三条——qwen-embed/text-embedding-v3、text-embedding-v4、qwen3.7-text-embedding——可以直接按名字调用,想做实验或者已经统一到某一个上面都行。别名的存在只是为了让生产代码有个稳定的东西可锁。

向量接口目前限时免费。要变的话会先在本页公告再生效,已有的 key 不受影响。

其他能力

同一套命名,一个能力一个别名,都在 /v1/models 里:

rerank

auto/rerank

按相关度重排检索结果

tts

auto/tts

文字转语音

asr

auto/asr

语音转文字

image

auto/image

文生图

video

auto/video

文生视频,异步