Embeddings(嵌入)
最后更新:2026-08-12· 15 分钟阅读
🚀 快速通道
- ChatGPT 国内版:点击直达↗
- 稳定镜像站:打开镜像↗
- 官方 ChatGPT:chatgpt.com ↗

更新时间:2026-08-12
导读
Embeddings API 把文本映射为高维浮点向量,使语义相近的句子在向量空间中距离更近。它是语义搜索、文档去重、推荐召回与 RAG(检索增强生成) 的基础设施。本文面向后端与数据工程师,讲清端点调用、索引流水线、评测方法与生产踩坑。模型 ID、向量维度、token 单价以 OpenAI 文档 与 定价页 为准,会随产品迭代变更——生产环境请用配置中心管理 model 名,勿写死过期型号。
和关键词搜索有什么本质区别?
| 维度 | 关键词 / BM25 | Embeddings |
|---|---|---|
| 匹配逻辑 | 字面重合 | 语义相似 |
| 「退款」能否找到「申请退订」 | 常漏召 | 较易召回 |
| 精确 SKU、订单号 | 强 | 弱,应保留 SQL / ES |
| 跨语言近义 | 需同义词表 | 相对友好 |
| 生成最终答案 | 不能 | 不能,需接 Responses API |
分工原则: Embeddings 负责「找片段」,生成模型负责「写答案」。
API 端点与调用要点
标准请求:POST /v1/embeddings。input 支持单字符串或字符串数组;批量可减少 HTTP 开销,但需遵守单次 token 上限(见 API Reference)。
curl https://api.openai.com/v1/embeddings \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "text-embedding-3-small",
"input": ["退货政策摘要", "如何取消订阅"],
"encoding_format": "float"
}'
from openai import OpenAI
client = OpenAI()
resp = client.embeddings.create(
model="text-embedding-3-small", # 以 Models 页当前 ID 为准
input="OpenAI 向量 API 按 input token 计费",
)
print(len(resp.data[0].embedding), resp.usage.total_tokens)
生产习惯:
- 文档内容不变则缓存向量(DB / Redis / 对象存储),避免重复 embed
- 大批量索引用队列 + 限速,遇 429 指数退避
- 日志记录
usage.total_tokens,按业务线分摊账单
模型选择与版本锁定
| 考量 | 建议做法 |
|---|---|
| 成本 | 先用 small 档跑 Recall 基线,再对比 large |
| 多语言 | 用含中文的真实 query 集评测,勿只看英文 benchmark |
| 存储 | 部分模型支持 dimensions 降维,需全量 re-embed |
| 升级 | 换 model = 重建索引 + 回归测试 |
铁律: 索引库与在线 query 必须使用同一 embedding 模型;混用会导致召回崩溃。
RAG 索引流水线
原始文档 → 清洗 → 切块 → batch embed → 写入向量库(附 metadata)
用户问题 → embed query → 过滤 + ANN → Top-K → 拼 context → Responses 生成
切块策略对照
| 策略 | 适合 | 注意 |
|---|---|---|
| 固定 token + overlap | 通用 Wiki | 512–1024 token,10–20% overlap 起步 |
| 按标题 / 章节 | 技术手册 | 单节过长需二次切 |
| 父子块 | 长报告 | 小块检索、大块生成 |
| 句子级 | FAQ | 易丢上下文 |
提升 Recall 的四招
- 混合检索:向量 Top-K + BM25,RRF 融合
- Metadata 预过滤:版本、产品线、权限标签先筛
- Query 改写:轻量模型把口语问题改成检索友好表述
- Rerank:Top-20 重排取 Top-5(延迟与成本更高)
生成侧约束见 Prompt Engineering 指南。
向量库与相似度
API 只返回浮点数组;持久化与 ANN 需自选:pgvector、Pinecone、Milvus、Elasticsearch dense_vector 等。OpenAI 向量通常已 L2 归一化,cosine 相似度与 dot product 等价。
选型看:数据量、QPS、混合过滤、运维能力、多租户隔离。
计费、限流与安全
- 计费:按 input token;全库索引成本 ≈ 文档总 token × 单价;每次 query 也会 embed(热门 query 可缓存向量)
- 限流:429 应退避;离线索引用 worker 池
- 安全:PII 脱敏后再入库;检索结果进 prompt 前做权限校验;查阅 API 数据留存政策
可复制 RAG context 模板
[System]
你是企业知识库助手。只根据提供的 context 回答。
若 context 不足,回答「资料中未提及」并列出需要补充的信息。
不得编造链接或法规条文。
[User]
context:
"""
[粘贴检索到的脱敏段落,附 doc_id]
"""
问题:[用户问题]
常见问题
Embeddings 和 Fine-tuning 怎么配合?
Embeddings 管检索;Fine-tuning 管生成风格与格式。RAG 常见组合是 Embeddings + 基础模型,不必微调。见 Fine-tuning 指南。
检索对了,答案仍胡编?
多为生成侧未约束「仅依据 context」、块过大含噪声、或未要求引用段落 ID。加强 instructions 并在服务端校验。
图片能直接 embed 吗?
文本 Embeddings API 面向字符串;图像理解走 Vision 指南,或 OCR 转文本后再 embed。
开源 embedding 值得换吗?
开源可本地部署;OpenAI 托管省运维。用业务 query 集测 Recall@K 与 P95 延迟再决策。
降维后要重建索引吗?
使用 dimensions 降维后,必须对全库 re-embed 并重建 ANN,再做 A/B。
官方资源
下一步阅读
行动路径
今天:对 3 组近义句与 3 组无关句 embed 后算 cosine,感受语义距离。明天:按 800 token + 15% overlap 切块一份 Markdown,批量写入 pgvector。本周:准备 30 条标注问答测 Recall@5,接入 Responses 跑通最小 RAG 闭环。
相关内容
ChatGPT / OpenAI 开发指南总览
2026 OpenAI 开发地图:ChatGPT 网页、Platform 控制台与 API 如何分工,以及从入门到生产化的阅读顺序。
OpenAI Platform 开发文档概览
platform.openai.com 控制台、文档导航、Playground、用量计费与组织管理——开发者如何高效找 API 信息。
OpenAI API 快速入门
从 Platform 账户、API Key 到第一条 OpenAI API 调用:Responses/Completions 示例、计费、限流与安全清单(2026 实操向)。
OpenAI ChatGPT API 开发指南
面向业务接入的 OpenAI API 架构、鉴权、流式输出、工具调用、限流重试与生产化清单。