向量嵌入 (Embeddings)
将文本转换为高维向量,用于语义搜索、RAG、文本聚类和推荐系统。
提示: Embeddings API 是构建 RAG(检索增强生成)系统的核心组件。先用 Embeddings 将文档向量化存入向量数据库,查询时再检索最相关的文档片段。
API 端点
POST https://api2everything.xyz/v1/embeddings
请求参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
model | string | 是 | 模型名称,如 text-embedding-3-small |
input | string | array | 是 | 要嵌入的文本,可以是单个字符串或字符串数组(批量请求) |
encoding_format | string | 否 | 返回格式:"float"(默认)或 "base64" |
dimensions | integer | 否 | 输出向量维度(仅 text-embedding-3-* 支持缩减维度) |
可用模型
| 模型 | 维度 | 说明 |
|---|---|---|
text-embedding-3-small | 1536 | 推荐,性价比最高 |
text-embedding-3-large | 3072 | 更高精度,适合对质量要求极高的场景 |
text-embedding-ada-002 | 1536 | 旧版模型,兼容已有项目 |
请求示例
curl -X POST https://api2everything.xyz/v1/embeddings \
-H "Authorization: Bearer sk-your-api-key" \
-H "Content-Type: application/json" \
-d '{
"model": "text-embedding-3-small",
"input": "WLON API 是一站式 AI 大模型中转服务"
}'
响应格式
{
"object": "list",
"data": [
{
"object": "embedding",
"index": 0,
"embedding": [0.0023064255, -0.009327292, 0.015797347, ...]
}
],
"model": "text-embedding-3-small",
"usage": {
"prompt_tokens": 15,
"total_tokens": 15
}
}
说明:
embedding 是一个浮点数数组,长度等于模型的输出维度。批量请求时 data 数组会包含多个结果,index 与输入顺序对应。完整 Python 示例
基础用法
from openai import OpenAI
client = OpenAI(
api_key="sk-your-api-key",
base_url="https://api2everything.xyz/v1"
)
response = client.embeddings.create(
model="text-embedding-3-small",
input="WLON API 是一站式 AI 大模型中转服务"
)
embedding = response.data[0].embedding
print(f"向量维度: {len(embedding)}")
print(f"前 5 个值: {embedding[:5]}")
批量嵌入
texts = [
"如何使用 WLON API?",
"WLON API 支持哪些模型?",
"如何查看 API 用量?"
]
response = client.embeddings.create(
model="text-embedding-3-small",
input=texts
)
for item in response.data:
print(f"文本 {item.index}: 向量维度 = {len(item.embedding)}")
计算文本相似度
import numpy as np
from openai import OpenAI
client = OpenAI(
api_key="sk-your-api-key",
base_url="https://api2everything.xyz/v1"
)
def cosine_similarity(a, b):
return np.dot(a, b) / (np.linalg.norm(a) * np.linalg.norm(b))
# 获取两段文本的向量
response = client.embeddings.create(
model="text-embedding-3-small",
input=["今天天气真好", "今天阳光明媚"]
)
vec_a = response.data[0].embedding
vec_b = response.data[1].embedding
similarity = cosine_similarity(vec_a, vec_b)
print(f"相似度: {similarity:.4f}") # 输出接近 1.0,说明语义相近
典型应用场景
RAG(检索增强生成)
RAG 是 Embeddings 最常见的应用。流程如下:
- 索引阶段 — 将文档切分为小段,调用 Embeddings API 获取向量,存入向量数据库(如 Pinecone、Milvus、Chroma)
- 查询阶段 — 用户提问时,将问题向量化,在向量数据库中检索最相似的文档片段
- 生成阶段 — 将检索到的文档片段作为上下文,传入 Chat Completions API,生成最终回复
语义搜索
传统关键词搜索依赖精确匹配,而基于 Embeddings 的语义搜索能理解"同义词"和"近义表达"。例如搜索"如何减肥"也能匹配到"健康瘦身方法"。
其他场景
- 文本聚类 — 将大量文本向量化后,使用 K-Means 等算法自动分组
- 推荐系统 — 计算用户兴趣向量与内容向量的相似度,进行个性化推荐
- 去重与查重 — 通过向量相似度检测近似重复的文本
维度缩减:
text-embedding-3-* 模型支持 dimensions 参数。例如将 text-embedding-3-small 从 1536 维缩减到 512 维,可大幅节省存储和计算成本,同时保持较好的质量。