RAG на LLM API: retrieval-augmented generation на VseLLM из России

RAG (retrieval-augmented generation) — это способ дать модели доступ к вашим документам без дообучения: перед генерацией вы находите в своей базе фрагменты, релевантные запросу, и подкладываете их в промпт как контекст. На VseLLM весь пайплайн собирается на одном OpenAI-совместимом endpoint — https://api.payclarus.com/v1: и эмбеддинги для индексации корпуса, и финальный chat.completions идут через тот же ключ и тот же ₽-баланс, а модель переключается только значением поля model. VPN для запросов не нужен — endpoint доступен из российских сетей как обычный HTTPS-сервис. Ниже — рабочий пайплайн по шагам с кодом на Python, честно с оговорками о том, чего мы не показываем.

Один endpoint на эмбеддинги и генерациюОплата в рублях, из России без VPNOpenAI-совместимый: меняется только base_urlЦены по курсу ЦБ · 4 июля 2026

Что такое RAG и зачем он нужен

RAG решает задачу, которую не закрывает голая модель: ответить по вашим внутренним данным — документации, базе знаний, договорам, тикетам — которых нет в обучающей выборке. Вместо дообучения модели вы храните корпус отдельно, на каждый вопрос пользователя находите в нём наиболее подходящие фрагменты (retrieval) и передаёте их модели как контекст (augmented generation). Плюсы для продакшена: базу можно обновлять без переобучения, ответы опираются на конкретные фрагменты (их можно показать как источники), а расход токенов предсказуем, потому что в промпт попадает не весь корпус, а только top-k релевантных кусков. На VseLLM это удобно тем, что обе половины пайплайна — построение эмбеддингов и генерация ответа — работают через один ключ и один рублёвый баланс: переключение между этапами и провайдерами — это только смена строки model.

Пайплайн RAG на VseLLM: шесть этапов

Полный контур выглядит так. (1) Корпус: собираете документы и режете их на чанки — фрагменты по несколько сотен токенов, чтобы каждый помещался в контекст и был семантически цельным. (2) Эмбеддинги: каждый чанк прогоняете через embeddings-endpoint VseLLM и получаете вектор — числовое представление смысла. (3) Векторный индекс: складываете векторы в векторное хранилище (например pgvector, FAISS или Qdrant — конкретную БД мы не навязываем, подойдёт любая с поиском по косинусной близости). (4) Поиск top-k: на входящий вопрос строите эмбеддинг тем же способом и достаёте k ближайших чанков. (5) Промпт с контекстом: найденные чанки вставляете в системный или пользовательский промпт с инструкцией отвечать только по ним. (6) Генерация: отправляете собранный промпт в chat.completions на модель-генератор (gpt-4o-mini, gpt-4o, claude-sonnet-4-6 или gemini-3-flash — выбор по цене и качеству). Ключевая деталь VseLLM: этапы 2 и 6 идут на один и тот же base_url с одним ключом — вам не нужно два провайдера, два аккаунта и две оплаты.

Индексация корпуса и эмбеддинги

Эмбеддинги в RAG строятся дважды: один раз офлайн — для всего корпуса при индексации, и затем на каждый запрос — для текста вопроса. И там, и там используется один и тот же endpoint эмбеддингов VseLLM (метод /v1/embeddings, совместимый с OpenAI SDK), чтобы векторы лежали в одном пространстве и косинусная близость была осмысленной. Важная честная оговорка: цены на эмбеддинги мы на этой странице не показываем — их нет в опубликованном каталоге VseLLM, а придумывать ₽-цифры мы не будем. Калькулятор ниже считает только модели генерации (chat). Стоимость эмбеддингов уточняйте отдельно при подключении. Практические заметки по индексации: держите размер чанка стабильным, сохраняйте рядом с вектором метаданные (id документа, заголовок, ссылку) для показа источников, и переиндексируйте только изменившиеся документы — эмбеддинги детерминированы для одинакового входа.

from openai import OpenAI

client = OpenAI(
    api_key="VSELLM_API_KEY",              # ключ из кабинета VseLLM
    base_url="https://api.payclarus.com/v1",  # тот же endpoint для эмбеддингов и chat
)

# 1) Корпус: документы, порезанные на чанки
corpus = [
    "VseLLM — OpenAI-совместимый шлюз к LLM с оплатой в рублях.",
    "Один ключ и один баланс работают со всеми провайдерами.",
    "Endpoint доступен из России без VPN.",
]

# 2) Эмбеддинги для каждого чанка через тот же endpoint
resp = client.embeddings.create(
    model="<embeddings-model>",  # slug эмбеддинг-модели уточните при подключении
    input=corpus,
)
vectors = [item.embedding for item in resp.data]

# 3) Векторный индекс: сложите vectors в pgvector / FAISS / Qdrant (например)
#    рядом с вектором храните метаданные чанка: id, заголовок, ссылку
for chunk, vec in zip(corpus, vectors):
    print(len(vec), "dims ->", chunk[:40])

Поиск и сборка промпта с контекстом

На этапе ответа вы строите эмбеддинг вопроса тем же вызовом, что и для корпуса, и запрашиваете у векторного хранилища k ближайших чанков (типичное k — от 3 до 8, подбирается под задачу и длину контекста модели). Найденные фрагменты склеиваются в блок контекста, который передаётся модели вместе с инструкцией: отвечать строго по приведённым фрагментам, а если ответа в них нет — сообщать об этом, а не выдумывать. Это стандартный приём против галлюцинаций: модель ограничена вашими данными. Собранный промпт уходит в chat.completions — методы, streaming, tool calling и JSON-режим на VseLLM совместимы с OpenAI SDK, так что уже написанный RAG-код переносится сменой base_url. Для показа источников вернитесь к метаданным чанков, которые сохранили при индексации, — сама модель ссылок не хранит.

Выбор модели-генератора и цены в рублях

Генератор в RAG отвечает за качество финального текста; retrieval при этом одинаков для любой модели. На VseLLM генератор — это просто значение model, и переключиться между провайдерами можно без смены ключа и кода: gpt-4o-mini — дешёвый вариант для больших объёмов и простых ответов, gpt-4o и claude-sonnet-4-6 — когда важнее качество рассуждения по контексту, gemini-3-flash — быстрый баланс. Цены на модели генерации отображаются в рублях из каталога VseLLM (живой курс ЦБ, force-dynamic) — мы не хардкодим рублёвые цифры. Калькулятор ниже оценивает месячную стоимость генерации по вашей нагрузке; ещё раз: он покрывает только chat-модели, эмбеддинги в нём не считаются. Полный каталог и карточки семейств — на /ai-tools/models/.

Калькулятор стоимости генерации

Задайте свою нагрузку — сколько токенов уходит на запрос и сколько запросов в месяц — и увидите месячную стоимость моделей-генераторов в рублях по текущему курсу. Калькулятор покрывает только chat-модели; эмбеддинги в нём не учитываются.

При такой нагрузке дешевле всего — GPT-4o mini: 825 ₽ в месяц.

МодельЗа 1 запросВ месяц
GPT-4o miniдешевле всего0.08 ₽825 ₽
Gemini 3 Flash0.35 ₽3 490 ₽
GPT-4o1 ₽13 530 ₽
Claude Sonnet 4.62 ₽18 545 ₽

Оценка по текущим ценам каталога (пересчёт из USD-прайсов провайдеров по курсу ЦБ). Реальный расход зависит от структуры промптов; детализация — в кабинете по каждому ключу.

Полезные ссылки

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

Ранний доступ к RAG на VseLLM

Оставьте заявку — расскажем о подключении, ценах в рублях на модели генерации и договоре для юрлица, и первыми пригласим, когда откроется выпуск ключей.