首页/AI/RAG 与向量库速查/OpenAI Embeddings API 用法
Embedding 与检索50 条

OpenAI Embeddings API 用法

托管向量化接口:text-embedding-3-small 默认 1536 维、text-embedding-3-large 默认 3072 维,都支持 dimensions 参数输出更短向量(Matryoshka 思路)。

RAG 与向量库速查AI更新于 2026-10-13

这个接口做什么

托管向量化接口省去了模型部署与显存规划:把文本数组发给服务,返回等长向量数组。text-embedding-3-small 默认 1536 维、text-embedding-3-large 默认 3072 维,两者都支持 dimensions 参数输出更短的向量,属于 Matryoshka 表示思路,可按存储预算与效果要求折中。

基本信息

小模型text-embedding-3-small,默认 1536 维
大模型text-embedding-3-large,默认 3072 维
可缩短支持 dimensions 参数,按需输出更短向量
计费口径按输入 token 计费,重试会重复计费
适用无自建推理资源、要求快速接入的场景

批量调用与缩短维度

批量调用与缩短维度
from openai import OpenAI

client = OpenAI()
resp = client.embeddings.create(
    model="text-embedding-3-small",
    input=["如何配置超时", "超时设置方法"],
    dimensions=512,             # 可选:按需缩短向量
)
for d in resp.data:
    print(len(d.embedding))

使用要点

  • 批量提交:一次请求里放多条文本,能显著降低往返开销
  • 控制单批大小:批太大容易触发请求体上限或超时,按报错逐步下调
  • 加重试退避:失败重试要带指数退避,并保证写入幂等,避免重复计费
  • 记录用量:把每次调用的 token 用量落到监控里,容量与成本才有依据
  • 锁定模型版本:即使同名模型也可能更新,出问题时要能定位到具体版本

两个模型的取舍

维度smalllarge
默认维度15363072
存储与检索成本较低约为前者两倍量级
精度多数检索场景够用更难的语义匹配更占优
缩短维度可降到 512 等可降到 1024 等
缩短向量可省存储与带宽,但可能损失效果,需要用自己的评测集验证后再决定,不要凭直觉直接砍半。
缩短后的向量与库里已有的全维度向量无法共存:同一索引列必须维度统一,切换时只能全量重建。

成本与稳定性

  • 先估量:文档总量换算成 token 数再乘单价,重建一次索引的费用要提前算清
  • 加缓存:同一文本的向量落到本地缓存,重复实验或重跑任务时不必再次调用
  • 设并发上限:并发过高容易触发限流,配合队列与退避比盲目重试更稳
  • 留降级路径:接口不可用时能临时改用本地模型,或暂停入库而不阻塞在线检索
  • 监控失败率与用量曲线,异常波动往往先于业务感知出现

易错点

  • 缩短后的向量与库里旧向量维度不一致时无法共存,必须统一重建
  • 失败重试没有退避与幂等控制,重复调用既多花钱又可能写重复数据
  • 把整库文本逐条同步调用,串行耗时过长且中途失败难以续跑
  • 隐藏了模型版本与维度配置,半年后无人知道索引是用哪套参数建的

数据来源与参考

  • OpenAI 官方文档(Embeddings API)
  • Kusupati et al., Matryoshka Representation Learning, arXiv:2205.13147
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌