Skip to content

Embeddings(嵌入)

最后更新:2026-08-12· 15 分钟阅读

🚀 快速通道

  • ChatGPT 国内版:点击直达↗
  • 稳定镜像站:打开镜像↗
  • 官方 ChatGPT:chatgpt.com ↗

Embeddings(嵌入)

更新时间:2026-08-12

导读

Embeddings API 把文本映射为高维浮点向量,使语义相近的句子在向量空间中距离更近。它是语义搜索、文档去重、推荐召回与 RAG(检索增强生成) 的基础设施。本文面向后端与数据工程师,讲清端点调用、索引流水线、评测方法与生产踩坑。模型 ID、向量维度、token 单价以 OpenAI 文档 与 定价页 为准,会随产品迭代变更——生产环境请用配置中心管理 model 名,勿写死过期型号。

和关键词搜索有什么本质区别?

维度关键词 / BM25Embeddings
匹配逻辑字面重合语义相似
「退款」能否找到「申请退订」常漏召较易召回
精确 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通用 Wiki512–1024 token,10–20% overlap 起步
按标题 / 章节技术手册单节过长需二次切
父子块长报告小块检索、大块生成
句子级FAQ易丢上下文

提升 Recall 的四招

  1. 混合检索:向量 Top-K + BM25,RRF 融合
  2. Metadata 预过滤:版本、产品线、权限标签先筛
  3. Query 改写:轻量模型把口语问题改成检索友好表述
  4. 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 数据留存政策

价格:openai.com/api/pricing

可复制 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 闭环。

相关内容