> ## Documentation Index
> Fetch the complete documentation index at: https://docs.crazyrouter.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Python Embeddings

> Python 调用文本嵌入 API

> 更新日期：2026-06-06

## 基础用法

```python theme={null}
from openai import OpenAI

client = OpenAI(api_key="sk-xxx", base_url="https://api.crazyrouter.com/v1")

response = client.embeddings.create(
    model="text-embedding-3-large",
    input="Crazyrouter 是一个 AI 模型网关"
)

embedding = response.data[0].embedding
print(f"维度: {len(embedding)}")
```

## 批量嵌入

```python theme={null}
texts = [
    "人工智能的发展历史",
    "机器学习与深度学习的区别",
    "自然语言处理的应用场景"
]

response = client.embeddings.create(
    model="text-embedding-3-large",
    input=texts
)

for i, item in enumerate(response.data):
    print(f"文本 {i}: 维度 {len(item.embedding)}")
```

## 指定维度

`text-embedding-3-*` 系列支持自定义输出维度：

```python theme={null}
response = client.embeddings.create(
    model="text-embedding-3-large",
    input="测试文本",
    dimensions=256  # 降维到 256
)

print(f"维度: {len(response.data[0].embedding)}")  # 256
```

## 计算相似度

```python theme={null}
import numpy as np

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-large",
    input=["猫是一种宠物", "狗也是常见的宠物", "量子力学是物理学分支"]
)

vectors = [item.embedding for item in response.data]

print(f"猫 vs 狗: {cosine_similarity(vectors[0], vectors[1]):.4f}")
print(f"猫 vs 量子力学: {cosine_similarity(vectors[0], vectors[2]):.4f}")
```

<Note>
  降维可以减少存储和计算成本，但会损失部分精度。建议根据实际场景测试选择合适的维度。
</Note>
