Эмбеддинги через API

Превращайте тексты в векторы и ищите по смыслу, а не по словам. Один ключ, формат OpenAI /v1/embeddings и оплата в рублях только за входные токены.

Что такое эмбеддинг

Эмбеддинг — это список чисел (вектор), который описывает смысл текста. Модель читает фразу, абзац или документ и возвращает вектор длиной от нескольких сотен до нескольких тысяч чисел.

Тексты с похожим смыслом получают похожие векторы, даже если в них нет общих слов. «Как вернуть товар?» и «Условия возврата и обмена» окажутся рядом, а «Как вернуть кредит?» — дальше. Близость считают косинусным сходством: чем ближе к 1, тем ближе смысл.

Векторы сохраняют один раз в базу (pgvector, Qdrant, Milvus, Elasticsearch, Redis), а потом за миллисекунды находят ближайшие к запросу пользователя.

Зачем нужны эмбеддинги

  • Поиск по смыслу

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

  • RAG для чат-ботов

    Находите подходящие фрагменты документов и передавайте их языковой модели, чтобы она отвечала по вашим данным.

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

    Похожие товары, статьи и вопросы по смыслу описания, без ручной разметки.

  • Кластеризация и аналитика

    Группируйте отзывы, обращения в поддержку и заявки по темам и находите повторяющиеся проблемы.

  • Классификация

    Определяйте тему, тональность или отдел для обращения по близости к примерам каждого класса.

  • Поиск дублей

    Находите повторяющиеся объявления, вопросы и документы, даже если они написаны разными словами.

Как подключить

  1. Зарегистрируйтесь и пополните баланс: эмбеддинги стоят доли копейки за запрос.
  2. Создайте API-ключ в профиле. Ключ показывается один раз — сохраните его.
  3. Укажите base URL и ключ в SDK OpenAI или в любой программе с поддержкой OpenAI API и отправьте тексты в /v1/embeddings.

Base URL: https://sujik.ru/v1

Примеры запроса
from openai import OpenAI

client = OpenAI(base_url="https://sujik.ru/v1", api_key="sk-sujik-...")

result = client.embeddings.create(
    model="text-embedding-3-small",
    input=["Как вернуть товар?", "Условия возврата и обмена"],
)
print(len(result.data[0].embedding), result.usage.total_tokens)
Пример ответа
{
  "object": "list",
  "data": [
    { "object": "embedding", "index": 0, "embedding": [0.0123, -0.0456, 0.0789, …] },
    { "object": "embedding", "index": 1, "embedding": [0.0098, -0.0411, 0.0802, …] }
  ],
  "model": "text-embedding-3-small",
  "usage": { "prompt_tokens": 14, "total_tokens": 14 }
}

Можно отправить до 2048 текстов за один запрос. Параметр dimensions укорачивает вектор у моделей, которые это умеют, а encoding_format: base64 уменьшает ответ.

Поиск по смыслу за 15 строк

Получите векторы документов один раз, затем сравнивайте с ними вектор запроса.

import numpy as np
from openai import OpenAI

client = OpenAI(base_url="https://sujik.ru/v1", api_key="sk-sujik-...")
docs = ["Условия возврата и обмена", "...", "..."]

def embed(texts):
    result = client.embeddings.create(model="text-embedding-3-small", input=texts)
    return np.array([item.embedding for item in result.data])

doc_vectors = embed(docs)
query = embed(["Как вернуть товар?"])[0]
scores = doc_vectors @ query  # unit vectors: dot product = cosine
best = int(scores.argmax())
print(docs[best], round(float(scores[best]), 3))

Модели и цены

Цена — за 1 млн входных токенов. Через API на 10% дешевле, чем в тесте на сайте.

Цены сейчас не загрузились. Актуальный список — на странице цен.

Все цены

Советы

  • Сравнивайте векторы только одной модели: у разных моделей разные пространства.
  • Длинные документы режьте на фрагменты по 200–800 токенов с небольшим перекрытием — так поиск точнее.
  • Храните рядом с вектором исходный текст и id модели, чтобы при смене модели пересчитать базу.
  • Короткий вектор (dimensions 256–1024) экономит место в базе почти без потери качества.

Частые вопросы

Сколько стоят эмбеддинги?

Оплата идёт только за входные токены по цене модели. Тысяча коротких фраз обычно стоит меньше рубля. Если модель вернула ошибку, заряды возвращаются на баланс.

Подойдёт ли мой код для OpenAI?

Да. Эндпоинт совместим с OpenAI /v1/embeddings: замените base URL и ключ, остальной код и официальные SDK работают без изменений.

Какую модель выбрать?

Text Embedding 3 Small — быстрая и дешёвая модель для большинства задач. Text Embedding 3 Large и Gemini Embedding точнее на сложных текстах и разных языках.

Работают ли эмбеддинги с русским языком?

Да, все модели многоязычные: русский, английский и другие языки можно смешивать в одной базе.

Расходуются ли бесплатные лимиты?

Нет. Эмбеддинги оплачиваются с баланса, бесплатные генерации и подписки на них не тратятся.

Эмбеддинги через API для поиска и RAG | SUJIK AI