OpenAI Embeddings 入门:向量检索最小可行流程

说明 embeddings 是什么、和聊天 API 的区别,以及语义搜索 / RAG 的最小流程、适用场景与常见误区。

作者
ChatGPT博客编辑部
发布时间
阅读时长
约 3 分钟阅读
OpenAI Embeddings 入门封面

这篇解决什么: 如何用 Embeddings 做语义相似与简易检索,而不是再写一个聊天机器人。
适合谁: 要做知识库问答、相似推荐、去重的开发者。
一句话: Embeddings ≠ chatbot——它把文本变成向量,方便「算相近」,本身不负责多轮闲聊。

上次核对:模型名与维度以 platform.openai.com 当前 Embedding 模型列表为准(2026-09-18)。

它在系统里站哪一层

文档切片 → Embedding API → 向量存储
用户问题 → Embedding API → 近邻检索 → (可选)再交给 Chat/Responses 生成回答

对话补全见 API 入门 或 Responses。本页只覆盖「向量这一跳」。

最小可行流程

1. 选任务,而不是先选数据库

任务 Embeddings 是否值得
「这段和那份文档像不像」 值得
知识库问答(先找片段再生成) 通常值得
只要翻译/改写一封邮件 不需要 embeddings
精确关键字过滤(订单号、SKU) 先用普通检索/SQL

2. 切片(Chunk)

  • 按标题/段落切,避免把整本手册塞进一个向量。
  • 记录 source_id、标题、偏移,方便引用回原文。
  • 切片过大:检索噪声;过小:丢失上下文——用你的语料试 200–800 字量级起步(经验起点,不是官方定数)。

3. 调用 Embedding(示意)

import OpenAI from 'openai';

const client = new OpenAI({ apiKey: process.env.OPENAI_API_KEY });

async function embed(text: string) {
  const res = await client.embeddings.create({
    model: 'text-embedding-3-small', // 以平台当前模型名为准
    input: text,
  });
  return res.data[0]?.embedding;
}

把返回的 number[] 与元数据一并写入向量库或先用内存/ SQLite 做 PoC。

4. 相似度与检索

  • 常用余弦相似度(cosine)。
  • 查询时:问题 → embedding → Top-K 近邻 → 把片段交给生成模型(可选)。
  • 生成模型仍会编造:检索只降低胡说概率,不取消人工核对。

RAG 里它负责什么、不负责什么

负责 不负责
语义召回相关片段 保证答案事实正确
降低「全书塞进 prompt」的成本 替代权限与审计
支持去重、聚类、推荐 替代结构化过滤(日期、作者)

完整 Agent 编排见 Agents;流式与账单见 成本文。

常见误区

  1. 用聊天模型「假装」检索——长上下文硬塞 ≠ embeddings。
  2. 不切分就 embed 整库——贵且差。
  3. 召回了就信——必须带来源;关键数字二次核对。
  4. 把 embedding 当长期记忆产品功能——产品 Memory 见 ChatGPT Memory,那是另一条意图。

实施检查清单

  • 明确「只检索」还是「检索 + 生成」
  • 切片策略与元数据字段写进文档
  • Key 仅服务端;语料无密钥/身份证
  • 评测集:10 个真实问题,看 Top-K 是否命中正确段
  • 监控 embedding 调用量与存储体积

相关阅读

使用入口

评论

评论功能即将上线,欢迎先通过关于页联系我们反馈意见。