共计 1482 个字符,预计需要花费 4 分钟才能阅读完成。
背景介绍
Embedding(嵌入)技术是将文本、图像等数据转换为高维向量的过程。这些向量能够捕捉数据的语义信息,使计算机能够理解和处理自然语言。ChatGPT 的 Embedding API 可以将文本转换为向量,广泛应用于:

- 语义搜索
- 文本分类
- 推荐系统
- 问答系统
准备工作
在开始之前,你需要完成以下准备工作:
- 获取 API 密钥:登录 OpenAI 官网,在 API 密钥管理页面创建新的密钥。
- 安装必要库 :确保你的 Python 环境已安装
requests库。
核心实现
请求构造
调用 Embedding API 时,需要构造一个 POST 请求,包含以下参数:
model:指定使用的模型,如text-embedding-ada-002。input:需要转换为嵌入向量的文本。user(可选):用于标识用户的唯一 ID。
Python 代码示例
import requests
import json
# 替换为你的 API 密钥
api_key = 'your-api-key'
# API 端点
url = 'https://api.openai.com/v1/embeddings'
# 请求头
headers = {'Authorization': f'Bearer {api_key}',
'Content-Type': 'application/json'
}
# 请求体
payload = {
'model': 'text-embedding-ada-002',
'input': '这是一段需要转换为嵌入向量的文本。'
}
# 发送请求
response = requests.post(url, headers=headers, data=json.dumps(payload))
# 解析响应
if response.status_code == 200:
embedding = response.json()['data'][0]['embedding']
print('嵌入向量:', embedding)
else:
print('请求失败:', response.text)
响应结果解析
成功的响应会返回一个 JSON 对象,包含以下字段:
object:固定为list。data:包含嵌入向量的数组。model:使用的模型名称。usage:API 调用的令牌使用情况。
性能考量
请求频率限制
OpenAI 对 API 调用有频率限制,具体限制因账户类型而异。建议:
- 控制请求频率,避免触发限流。
- 使用指数退避策略处理限流错误。
批量处理优化
为了提高效率,可以将多个文本合并为一个请求:
payload = {
'model': 'text-embedding-ada-002',
'input': ['文本 1', '文本 2', '文本 3']
}
避坑指南
常见错误码
401:API 密钥无效。429:请求频率过高。400:请求参数错误。
输入文本长度限制
不同模型对输入文本的长度有限制。例如,text-embedding-ada-002支持的最大令牌数为 8192。超出限制时,可以拆分文本或截断处理。
并发调用注意事项
- 避免过高的并发请求,以免触发限流。
- 使用异步请求或线程池控制并发数。
进阶建议
实际应用场景
- 语义搜索:将查询和文档转换为嵌入向量,计算相似度。
- 文本分类:使用嵌入向量作为特征输入分类模型。
- 推荐系统:基于用户历史行为的嵌入向量生成推荐。
思考题
- 如何利用 Embedding API 构建一个简单的语义搜索引擎?
- 在处理长文本时,除了截断,还有哪些优化方法?
总结
通过本文,你应该已经掌握了如何调用 ChatGPT 的 Embedding API。从获取 API 密钥到处理响应结果,每一步都至关重要。在实际应用中,注意性能优化和错误处理,可以显著提升系统的稳定性和效率。
正文完
