Перейти к основному содержимому

Embeddings

Создание векторных представлений текста.

POST /v1/embeddings

Описание

Преобразует текст в числовой вектор (embedding), который можно использовать для семантического поиска, кластеризации и классификации.

Заголовки

ЗаголовокОбязательныйОписание
AuthorizationДаBearer YOUR_API_KEY
Content-TypeДаapplication/json

Тело запроса

{
"model": "text-embedding-3-small",
"input": "Текст для векторизации"
}

Параметры

ПараметрТипОбязательныйОписание
modelstringДаID модели embeddings
inputstring/arrayДаТекст(ы) для векторизации
encoding_formatstringНетfloat (default) или base64
dimensionsintegerНетРазмерность вектора (для поддерживающих моделей)

Ответ

{
"object": "list",
"data": [
{
"object": "embedding",
"index": 0,
"embedding": [0.0023, -0.0089, 0.0156, ..., -0.0034]
}
],
"model": "text-embedding-3-small",
"usage": {
"prompt_tokens": 5,
"total_tokens": 5
}
}

Поля ответа

ПолеТипОписание
embeddingarrayВектор чисел (float)
indexintegerИндекс в batch запросе

Модели Embeddings

OpenAI

МодельРазмерностьЦенаОписание
text-embedding-3-small1536$0.02/1MБыстрая, экономичная
text-embedding-3-large3072$0.13/1MВысокое качество

GigaChat

МодельРазмерностьЦена
gigachat/EmbeddingsGigaR1024$0.10/1M

YandexGPT

МодельРазмерностьЦена
yandexgpt/text-search-doc256$0.10/1M

Примеры

cURL

curl https://api.aipomogator.ru/v1/embeddings \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $API_KEY" \
-d '{
"model": "text-embedding-3-small",
"input": "Машинное обучение - это раздел искусственного интеллекта"
}'

Python

from openai import OpenAI

client = OpenAI(
api_key="YOUR_API_KEY",
base_url="https://api.aipomogator.ru/v1"
)

response = client.embeddings.create(
model="text-embedding-3-small",
input="Машинное обучение - это раздел искусственного интеллекта"
)

embedding = response.data[0].embedding
print(f"Размерность: {len(embedding)}")
print(f"Первые 5 значений: {embedding[:5]}")

Batch запрос

response = client.embeddings.create(
model="text-embedding-3-small",
input=[
"Первый текст для векторизации",
"Второй текст для векторизации",
"Третий текст для векторизации"
]
)

for item in response.data:
print(f"Index {item.index}: {len(item.embedding)} dimensions")

JavaScript

import OpenAI from 'openai';

const client = new OpenAI({
apiKey: 'YOUR_API_KEY',
baseURL: 'https://api.aipomogator.ru/v1',
});

const response = await client.embeddings.create({
model: 'text-embedding-3-small',
input: 'Машинное обучение - это раздел искусственного интеллекта',
});

const embedding = response.data[0].embedding;
console.log(`Размерность: ${embedding.length}`);

Применение

Семантический поиск

import numpy as np

def cosine_similarity(a, b):
return np.dot(a, b) / (np.linalg.norm(a) * np.linalg.norm(b))

# Создаём embeddings для базы знаний
documents = [
"Python — язык программирования",
"JavaScript используется для веб-разработки",
"Машинное обучение анализирует данные"
]

doc_embeddings = client.embeddings.create(
model="text-embedding-3-small",
input=documents
).data

# Поиск по запросу
query = "программирование на питоне"
query_embedding = client.embeddings.create(
model="text-embedding-3-small",
input=query
).data[0].embedding

# Находим наиболее похожий документ
similarities = [
cosine_similarity(query_embedding, doc.embedding)
for doc in doc_embeddings
]

best_match = documents[np.argmax(similarities)]
print(f"Наиболее релевантный: {best_match}")

RAG (Retrieval-Augmented Generation)

# 1. Индексируем документы
chunks = split_into_chunks(document)
embeddings = client.embeddings.create(
model="text-embedding-3-small",
input=chunks
)
store_in_vector_db(chunks, embeddings)

# 2. Поиск релевантного контекста
query_embedding = client.embeddings.create(
model="text-embedding-3-small",
input=user_question
)
relevant_chunks = vector_db.search(query_embedding, top_k=3)

# 3. Генерация ответа с контекстом
context = "\n".join(relevant_chunks)
response = client.chat.completions.create(
model="anthropic/claude-sonnet-4-5-20250929",
messages=[
{"role": "system", "content": f"Контекст:\n{context}"},
{"role": "user", "content": user_question}
]
)

Рекомендации

  • text-embedding-3-small — для большинства задач
  • text-embedding-3-large — когда нужна максимальная точность
  • Используйте batch запросы для эффективности
  • Храните embeddings в векторных БД (Pinecone, Milvus, pgvector)

Ошибки

400 Bad Request

{
"error": {
"message": "Input too long",
"type": "invalid_request_error"
}
}

Максимальная длина input зависит от модели (обычно 8191 токенов).