向量嵌入 (Embeddings)

将文本转换为高维向量,用于语义搜索、RAG、文本聚类和推荐系统。

提示: Embeddings API 是构建 RAG(检索增强生成)系统的核心组件。先用 Embeddings 将文档向量化存入向量数据库,查询时再检索最相关的文档片段。

API 端点

POST https://api2everything.xyz/v1/embeddings

请求参数

参数类型必填说明
modelstring模型名称,如 text-embedding-3-small
inputstring | array要嵌入的文本,可以是单个字符串或字符串数组(批量请求)
encoding_formatstring返回格式:"float"(默认)或 "base64"
dimensionsinteger输出向量维度(仅 text-embedding-3-* 支持缩减维度)

可用模型

模型维度说明
text-embedding-3-small1536推荐,性价比最高
text-embedding-3-large3072更高精度,适合对质量要求极高的场景
text-embedding-ada-0021536旧版模型,兼容已有项目

请求示例

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 最常见的应用。流程如下:

  1. 索引阶段 — 将文档切分为小段,调用 Embeddings API 获取向量,存入向量数据库(如 Pinecone、Milvus、Chroma)
  2. 查询阶段 — 用户提问时,将问题向量化,在向量数据库中检索最相似的文档片段
  3. 生成阶段 — 将检索到的文档片段作为上下文,传入 Chat Completions API,生成最终回复

语义搜索

传统关键词搜索依赖精确匹配,而基于 Embeddings 的语义搜索能理解"同义词"和"近义表达"。例如搜索"如何减肥"也能匹配到"健康瘦身方法"。

其他场景

维度缩减: text-embedding-3-* 模型支持 dimensions 参数。例如将 text-embedding-3-small 从 1536 维缩减到 512 维,可大幅节省存储和计算成本,同时保持较好的质量。