Что такое 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 Flash | 0.35 ₽ | 3 490 ₽ |
| GPT-4o | 1 ₽ | 13 530 ₽ |
| Claude Sonnet 4.6 | 2 ₽ | 18 545 ₽ |
Оценка по текущим ценам каталога (пересчёт из USD-прайсов провайдеров по курсу ЦБ). Реальный расход зависит от структуры промптов; детализация — в кабинете по каждому ключу.
Полезные ссылки
- Каталог моделей VseLLM и цены в рублях
- Модели OpenAI на VseLLM (gpt-4o, gpt-4o-mini)
- OpenAI API в России: подключение и base_url
- DeepSeek API в России
Частые вопросы
Ранний доступ к RAG на VseLLM
Оставьте заявку — расскажем о подключении, ценах в рублях на модели генерации и договоре для юрлица, и первыми пригласим, когда откроется выпуск ключей.