首页使用帮助OpenAI File Search
HELP / OPENAI EMBEDDINGS API

OpenAI Embeddings API 怎么用?

把文本发送到 /v1/embeddings 获得向量,再由应用完成分块、向量存储、metadata 权限过滤、相似度检索和质量评测。模型与维度一旦进入生产索引就必须版本化;Embedding 不是答案、数据库或授权系统。

主关键词:OpenAI Embeddings API 怎么用模型与维度向量检索更新:2026-10-31
先给结论

文本预处理 → 分块 → Embeddings API → 向量与 metadata 入库 → 查询向量化 → 权限过滤后相似度检索 → 离线评测。新项目通常先用 text-embedding-3-small 建立成本与质量基线;只有真实评测显示需要更高召回或多语言能力时,再比较 text-embedding-3-large。查询和文档必须使用同一模型、同一维度及兼容的预处理版本。

官方资料(2026-10-31 核对):Vector embeddings guide · Create embeddings API Reference · text-embedding-3-small · text-embedding-3-large

Embeddings API 与 File Search 有什么区别?

方案返回或管理应用负责适合
Embeddings API文本对应的向量分块、数据库、索引、过滤、召回、权限与引用需要自有数据层、排序或跨来源检索
File Search托管 Vector Store 与检索工具文件版本、metadata、访问控制、评测和结果展示希望减少分块和向量索引运维
Files APIFile 与 file_id用途、生命周期和下游调用上传和管理原始文件

Embeddings API 不会自动保存向量,也不会替你搜索。需要托管知识库时阅读 OpenAI File Search 指南;需要管理原始文件时查看 Files API 生命周期。不要因为向量“看不懂”就把它当成脱敏结果,授权仍必须在查询端执行。

第一步:选择模型和维度

模型默认维度当前价格选择建议
text-embedding-3-small1536每 100 万输入 Token 0.02 美元先建立低成本基线,适合大多数搜索、分类和推荐试验
text-embedding-3-large3072每 100 万输入 Token 0.13 美元在多语言或长尾召回评测确有提升时使用

两种第三代模型都支持 dimensions 参数缩短输出。降维会减少数据库存储、内存和相似度计算成本,但不能假设质量不变。为每个候选维度使用相同的语料、query 集、K 值和过滤条件评测,并把 model、dimensions、切分版本写入索引元数据。

价格为 2026-10-31 官方模型页显示的同步 Embeddings 输入价格,未来可能调整;批量离线任务应单独核对 Batch API 当时支持的端点、折扣和完成窗口。

第二步:调用 /v1/embeddings

import OpenAI from "openai";

const client = new OpenAI();

const response = await client.embeddings.create({
  model: "text-embedding-3-small",
  input: [
    "退款申请应从原购买渠道提交。",
    "API Credits 与 ChatGPT Plus 分开计费。"
  ],
  encoding_format: "float"
});

for (const item of response.data) {
  console.log(item.index, item.embedding.length);
}
console.log(response.usage.total_tokens);

服务端 SDK 会从环境变量读取 API Key,浏览器页面不应直接持有密钥。返回的 data 数组包含 index 与 embedding,用 index 对齐原输入;usage 提供本次输入 Token。若网络或 5xx 失败,使用有限次数指数退避,并保留输入内容哈希作为幂等去重依据。

请求限制怎样拆分?

  • 单个输入:当前所有 embedding 模型最大输入为 8192 tokens;空字符串不可提交。
  • 批量数量:一次请求的输入数组最多 2048 项。
  • 总 Token:一次请求内所有输入合计最多 300,000 tokens。
  • 输出格式:encoding_format 可选 float 或 base64;数据库字段与解码流程要匹配。
  • 维度参数:仅 text-embedding-3 及后续模型支持;切换 dimensions 后必须使用新的索引版本。

不要按字符数估算中文 Token。可使用官方指南推荐的 tiktoken 和 cl100k_base 在入队前计数;超长正文按语义边界分块,同时保留来源、标题、章节和偏移位置。

第三步:建立可迁移的向量索引

字段用途为什么不能省
chunk_id / source_id回溯原文与去重支持更新、删除和引用
tenant_id / acl查询前权限过滤向量相似不代表有权读取
content_hash识别内容变化避免重复向量化与重复收费
model / dimensions索引兼容性防止查询与文档向量不匹配
chunk_version切分和预处理版本支持灰度重建与回滚
text / metadata结果展示与过滤向量本身不能生成可读引用

文档更新时先写入新版本索引,完成回填、质量评测和权限抽查后,再切换查询别名并延迟清理旧索引。不要在原索引中静默混入另一模型或另一维度;即使数据库允许写入,也会使距离不可比较或直接查询失败。

第四步:把查询向量化并进行相似度搜索

  1. 使用与文档相同的模型、dimensions 和规范化规则处理 query。
  2. 在向量数据库中先应用租户、权限、语言、有效期和内容版本过滤。
  3. 按余弦相似度或等价点积查询 Top K;不要照搬固定阈值。
  4. 把命中 chunk 的原文、来源和分数返回应用;需要生成回答时再交给模型。
  5. 记录 query、候选集合、命中 ID、最终点击或人工相关性,用于后续评测。

OpenAI 指南推荐余弦相似度,并说明 embedding 已归一化为长度 1,因此点积可以更快地得到等价排序;欧氏距离也会得到相同排序。数据库的近似索引参数、过滤顺序和量化方式仍会改变召回,应在自己的部署上测量。

怎样评测向量检索,而不是只看“能搜到”?

  • 建立带答案的 query 集:覆盖高频、长尾、同义词、多语言、否定和无答案问题。
  • 离线指标:至少记录 Recall@K、MRR 或 NDCG,并分租户、语言、内容类型观察。
  • 端到端指标:如果检索结果交给生成模型,还要评测答案正确性、引用匹配和拒答。
  • 成本指标:区分首次文档回填、增量更新和实时查询 Token;与数据库存储及查询费用一起核算。
  • 对照实验:一次只改变模型、维度、chunk 或 K 中的一项,防止错误归因。

常见错误与排查

  • 400 / 输入过长:用 Token 计数而不是字符数,拆分单项并控制请求总 Token。
  • 向量维度不一致:读取索引的 model 与 dimensions 元数据,确认查询请求未切换配置。
  • 结果语义相近但业务无权访问:把租户和 ACL 作为数据库过滤条件,不要在取回结果后才隐藏。
  • 批量响应和输入错位:使用响应 index 映射原数组,不依赖异步任务完成顺序。
  • 成本突然上升:检查重复回填、内容哈希、chunk 数量、失败重试与所用模型;再到 API Usage 按 Project 对账。
  • 换模型后召回下降:不能复用旧文档向量;新旧索引要并行评测并原子切换。

上线前检查清单

  • API Key 仅存在服务端,使用独立 Project 与最小权限。
  • 输入拒绝空字符串,并在入队前检查单项和请求总 Token。
  • model、dimensions、切分版本和内容哈希写入每条向量记录。
  • 查询和文档使用相同配置,数据库字段维度固定。
  • 租户与 ACL 在相似度查询阶段强制过滤,并做越权回归测试。
  • 批量结果用 index 对齐,失败项可单独重试且不会重复写入。
  • 上线前有真实 query 集、Recall@K、下游质量、延迟与成本基线。
  • 模型或维度变更走新索引、回填、灰度、切换和回滚流程。
  • 监控 API 429/5xx、Token、数据库延迟、空结果率和索引版本。

常见问题

OpenAI Embeddings API 是做什么的?

Embeddings API 把文本转换成浮点向量,用向量距离衡量语义相关性。它常用于语义搜索、聚类、推荐、异常检测和分类;它不会生成回答,也不会自动创建向量数据库、权限过滤或引用。

text-embedding-3-small 和 text-embedding-3-large 怎么选?

先用 text-embedding-3-small 建立成本和质量基线;当多语言、长尾召回或业务评测显示质量不足时,再测试 text-embedding-3-large。不要只依据模型名称决定,应在相同语料、切分和检索参数上比较 Recall@K、下游任务质量、延迟和成本。

Embeddings API 一次可以提交多少内容?

当前 API Reference 说明单个输入不能超过模型最大输入 8192 tokens;批量数组最多 2048 个输入,并且一次请求内所有输入合计最多 300,000 tokens。空字符串不可作为输入。上线前仍应按所用模型文档和实际错误响应复核。

OpenAI embedding 默认有多少维?

text-embedding-3-small 默认输出 1536 维,text-embedding-3-large 默认输出 3072 维。text-embedding-3 系列支持 dimensions 参数缩短向量,但降维会影响存储、速度和质量,应通过自己的检索评测选择。

Embedding 搜索应该用什么距离函数?

OpenAI Embeddings 指南推荐余弦相似度。官方说明其 embedding 已归一化为长度 1,因此可用点积加速;余弦距离和欧氏距离会产生相同排序。数据库索引类型和阈值仍需用真实数据评测。

可以把不同模型或不同维度的向量放在同一个索引吗?

不建议。查询向量与文档向量必须使用兼容的模型和维度才能计算距离;模型、dimensions 或预处理改变时,应建立带版本的新索引,完成回填和评测后再切换,不要静默混用。

Embeddings API 和 OpenAI File Search 有什么区别?

Embeddings API 只返回向量,切分、存储、索引、过滤、召回、授权和引用都由应用负责;File Search 使用 OpenAI 托管的 Vector Store,自动完成分块、向量化与检索,并可在 Responses 中返回文件引用。需要完全控制索引时用 Embeddings API,希望降低运维时可评估 File Search。

本文核对日期为 2026-10-31。模型、价格、请求限制、维度和 SDK 字段可能变化,生产调用前请再次读取官方 Embeddings guide、API Reference 与对应模型页。