Openai 请求格式 文本向量化 API
基本概念
什么是Embedding?
Embedding(嵌入)是将离散数据(如单词、句子)映射到连续向量空间的技术。通过Embedding:
- 语义相似的文本在向量空间中距离更近
- 便于机器学习模型处理文本数据
- 典型应用:搜索、推荐、分类等场景
常见Embedding模型
- text-embedding-3-small Openai主流emb模型
- text-embedding-3-large
- text-embedding-ada-002
- doubao-embedding-large-text
技术特点
| 特性 | 说明 | 
|---|---|
| 维度 | 通常为数百到数千维(如1024维) | 
| 归一化 | 多数Embedding会做L2归一化 | 
| 距离度量 | 常用余弦相似度计算向量距离 | 
| 多语言支持 | 现代模型通常支持多语言嵌入 | 
请求地址
POST https://openai-ss.cn/v1/embeddings认证方式
需要在请求头中添加 API Key:
headers = {
    "Authorization": "Bearer sk-******",  # 替换为你的API令牌
    "Content-Type": "application/json"
}请求参数
| 参数名 | 类型 | 必填 | 说明 | 
|---|---|---|---|
| input | string/array | 是 | 单条文本或文本列表 | 
| model | string | 是 | 使用的模型名称 | 
| encoding_format | string | 否 | 返回格式(float/base64) | 
请求示例
import openai
# 设置OpenAI API密钥和基础URL
openai.api_key = "sk-***********************************************"  # 替换为你的 key
openai.base_url = "https://openai-ss.cn/v1/"  #  这里是DMXAPI的 base url,注意这里v1后面需要/,最后的 / 很容易漏掉。
def get_embedding(text):
    response = openai.embeddings.create(
        model="text-embedding-3-small",
        input=text
    )
    return response.data[0].embedding
# 示例文本
text = "这是一个示例文本,用于演示如何获取文本嵌入。"
# 获取文本嵌入
embedding = get_embedding(text)
print(f"文本: {text}")
print(f"嵌入向量维度: {len(embedding)}")
print(f"嵌入向量前5个元素: {embedding[:5]}")典型应用场景
- 语义搜索:通过向量相似度匹配查询和文档
- 聚类分析:将相似文本自动归类
- 推荐系统:寻找内容相似的物品
- 异常检测:识别语义异常的文本
性能优化建议
- 批量处理文本(最多支持2048 tokens/请求)
- 对静态内容缓存嵌入结果
- 使用近似最近邻(ANN)算法加速搜索
响应示例
成功响应(200):
{
    "object": "list",
    "data": [
        {
            "object": "embedding",
            "embedding": [0.1, -0.2, 0.3, ...],
            "index": 0
        }
    ],
    "model": "text-embedding-ada-002",
    "usage": {
        "prompt_tokens": 5,
        "total_tokens": 5
    }
}错误响应:
{
    "error": {
        "message": "Invalid input text",
        "type": "invalid_request_error"
    }
}