Embeddings — векторизация текста
Преобразуйте текст в числовые векторы для семантического поиска, кластеризации, рекомендаций и RAG. Эндпоинт полностью совместим с OpenAI Embeddings — те же поля и формат ответа.
| Эндпоинт | POST https://megaapi.ru/v1/embeddings |
|---|---|
| Вход | Строка или массив строк (батч до 2048 элементов) |
| Выход | Массив векторов data[].embedding + usage |
Модели и цены
| Модель | Размерность | Назначение | Цена (с наценкой) |
|---|---|---|---|
text-embedding-3-small | 1536 | Лучшее соотношение цена/качество | $0.030 / 1M токенов |
text-embedding-3-large | 3072 | Высокая точность поиска | $0.195 / 1M токенов |
text-embedding-ada-002 | 1536 | Классическая, совместимость | $0.150 / 1M токенов |
text-embedding-v4 | многоязычная | Сильная на русском и азиатских языках | $0.105 / 1M токенов |
Цены финальные (уже с наценкой). Полный список и тарифы — в разделе Модели и цены.
Для большинства задач начните с text-embedding-3-small и переходите на -large
при высоких требованиях к точности.
Размерность вектора (параметр dimensions)
Модели text-embedding-3-small (до 1536) и text-embedding-3-large (до 3072)
позволяют усечь вектор параметром dimensions. Меньшая размерность
экономит память и ускоряет поиск в векторной БД при небольшой потере точности. В Студии
нужное значение выбирается в поле «Размерность вектора» (появляется только для моделей -3-*);
для ada-002 и v4 параметр не применяется.
{
"model": "text-embedding-3-large",
"input": "Искусственный интеллект меняет мир",
"dimensions": 1024
}
Запрос
POST https://megaapi.ru/v1/embeddings
Authorization: Bearer sk-...
Content-Type: application/json
{
"model": "text-embedding-3-small",
"input": "Искусственный интеллект меняет мир"
}
Батч (несколько текстов за раз)
Отправляйте до 2048 строк одним запросом — это снижает сетевые издержки:
{
"model": "text-embedding-3-small",
"input": ["первый текст", "второй текст", "третий текст"]
}
Ответ
{
"object": "list",
"data": [{ "object": "embedding", "index": 0,
"embedding": [-0.0069, 0.0240, -0.0140, ...] }],
"model": "text-embedding-3-small",
"usage": { "prompt_tokens": 5, "total_tokens": 5 }
}
Пример: семантический поиск
Векторизуйте запрос и документы, ранжируйте по косинусной близости:
import numpy as np from openai import OpenAI client = OpenAI(api_key="sk-...", base_url="https://megaapi.ru/v1") def cosine(a, b): return np.dot(a, b) / (np.linalg.norm(a) * np.linalg.norm(b)) documents = [ "Python — высокоуровневый язык программирования", "Машинное обучение требует много данных", "Глубокое обучение — важная ветвь ИИ", ] query = "искусственный интеллект и обучение" resp = client.embeddings.create(model="text-embedding-3-small", input=[query] + documents) vecs = [d.embedding for d in resp.data] scores = [cosine(vecs[0], v) for v in vecs[1:]] for doc, s in sorted(zip(documents, scores), key=lambda x: -x[1]): print(f"{s:.4f} {doc}")
Сценарии применения
- Семантический поиск: ищите по смыслу, а не по совпадению слов.
- RAG: найдите релевантные фрагменты и передайте их в чат-модель как контекст.
- Кластеризация и дедупликация: группируйте близкие по смыслу тексты.
- Рекомендации: подбирайте похожие товары/статьи по описаниям.
- Классификация: сравнивайте текст с эталонными векторами категорий.
Лучшие практики
- Чанкинг. Длинные документы режьте на куски (~500 токенов) с небольшим перекрытием.
- Кэширование. Храните векторы повторяющихся текстов, чтобы не пересчитывать.
- Косинусная близость. Для сравнения векторов используйте cosine similarity.
- Хранилище. Для продакшена подключайте векторную БД (Pinecone, Milvus, Weaviate, pgvector).
Важные лимиты
| Длина одного текста | до ~8191 токенов |
| Размер батча | до 2048 строк за запрос |