Skip to content

Openai 请求格式 文本向量化 API

基本概念

什么是Embedding?

Embedding(嵌入)是将离散数据(如单词、句子)映射到连续向量空间的技术。通过Embedding:

  • 语义相似的文本在向量空间中距离更近
  • 便于机器学习模型处理文本数据
  • 典型应用:搜索、推荐、分类等场景

常见Embedding模型

  1. text-embedding-3-small Openai主流emb模型
  2. text-embedding-3-large
  3. text-embedding-ada-002
  4. doubao-embedding-large-text

技术特点

特性说明
维度通常为数百到数千维(如1024维)
归一化多数Embedding会做L2归一化
距离度量常用余弦相似度计算向量距离
多语言支持现代模型通常支持多语言嵌入

请求地址

POST https://www.dmxapi.cn/v1/embeddings

认证方式

需要在请求头中添加 API Key:

python
headers = {
    "Authorization": "Bearer sk-******",  # 替换为你的DMXAPI令牌
    "Content-Type": "application/json"
}

请求参数

参数名类型必填说明
inputstring/array单条文本或文本列表
modelstring使用的模型名称
encoding_formatstring返回格式(float/base64)

请求示例

python
import openai

# 设置OpenAI API密钥和基础URL
openai.api_key = "sk-***********************************************"  # 替换为你的 DMXAPI key
openai.base_url = "https://www.dmxapi.com/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]}")

典型应用场景

  1. 语义搜索:通过向量相似度匹配查询和文档
  2. 聚类分析:将相似文本自动归类
  3. 推荐系统:寻找内容相似的物品
  4. 异常检测:识别语义异常的文本

性能优化建议

  1. 批量处理文本(最多支持2048 tokens/请求)
  2. 对静态内容缓存嵌入结果
  3. 使用近似最近邻(ANN)算法加速搜索

响应示例

成功响应(200):

json
{
    "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
    }
}

错误响应:

json
{
    "error": {
        "message": "Invalid input text",
        "type": "invalid_request_error"
    }
}

一个 Key 用全球大模型