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://www.dmxapi.cn/v1/embeddings
认证方式
需要在请求头中添加 API Key:
python
headers = {
"Authorization": "Bearer sk-******", # 替换为你的DMXAPI令牌
"Content-Type": "application/json"
}
请求参数
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
input | string/array | 是 | 单条文本或文本列表 |
model | string | 是 | 使用的模型名称 |
encoding_format | string | 否 | 返回格式(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]}")
典型应用场景
- 语义搜索:通过向量相似度匹配查询和文档
- 聚类分析:将相似文本自动归类
- 推荐系统:寻找内容相似的物品
- 异常检测:识别语义异常的文本
性能优化建议
- 批量处理文本(最多支持2048 tokens/请求)
- 对静态内容缓存嵌入结果
- 使用近似最近邻(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"
}
}