RAG в ИИ: что это такое, как работает и как собрать систему на API
RAG или retrieval augmented generation это схема, где модель отвечает не по памяти, а по документам, найденным в вашей базе. Сначала система ищет релевантные фрагменты, затем подставляет их в контекст запроса. Так модель отвечает по актуальным данным и ссылается на источник, а объём базы не ограничен окном контекста.
Содержание
Что такое RAG
RAG расшифровывается как retrieval augmented generation, генерация с дополнением из поиска. Идея простая: перед вопросом к модели система находит в базе знаний фрагменты, близкие к вопросу, и передаёт их вместе с вопросом. Модель отвечает, опираясь на этот текст, а не на память.
Отсюда два следствия. Первое: ответ можно проверить по источнику, потому что видно, какие фрагменты попали в запрос. Второе: база может быть сколь угодно большой, ведь в контекст уходит только десяток найденных кусков.
Из чего состоит система
Компонентов четыре. Хранилище документов: файлы, страницы, база тикетов. Индекс: векторы, построенные моделью эмбеддингов. Поиск: сравнение вектора вопроса с индексом. Генерация: запрос к модели с найденными фрагментами.
Ключевое требование: индекс и поиск должны использовать одну модель эмбеддингов. Иначе векторы окажутся в разных системах координат, и близость перестанет что-либо значить.
Нарезка
Разбейте документы на куски по 300-800 токенов, чтобы фрагмент был самодостаточным.
Индекс
Постройте векторы для каждого куска моделью эмбеддингов и сохраните их в хранилище векторов.
Вопрос
Векторизуйте запрос пользователя той же моделью и найдите ближайшие фрагменты.
Ответ
Отправьте найденные куски и вопрос модели генерации, попросив ссылаться на источник.
Зачем нужны эмбеддинги
Эмбеддинг это вектор чисел, которым модель описывает смысл текста. Поиск по векторам находит нужный фрагмент, даже если пользователь сформулировал вопрос другими словами. Обычный поиск по словам в такой ситуации промахивается.
Модели эмбеддингов дешевле генерации, а считаются только по входным токенам. Для базы в миллион слов разовая индексация обходится в копейки по сравнению со стоимостью одного длинного диалога с флагманской моделью.
| Модель | Контекст | Ввод / 1M |
|---|---|---|
| Cohere Embed 5 Fast | 128K | 9,34 ₽ |
| Qwen3 Embedding 0.6B | 33K | 1,85 ₽ |
| Giga Embeddings Instruct 3B | 8K | 26,41 ₽ |
Как собрать на API
Индекс строится один раз и обновляется по мере изменений. В запросе работают два вызова: эмбеддинги для вопроса и генерация с найденными фрагментами. Оба идут через https://llmmart.ru/api/v1 с тем же ключом.
from openai import OpenAI
client = OpenAI(
api_key=os.environ["LLM_MART_API_KEY"],
base_url="https://llmmart.ru/api/v1",
)
question = "Как оформить возврат товара?"
vector = client.embeddings.create(
model="cohere/embed-5-fast",
input=[question],
).data[0].embedding
# здесь поиск по своему хранилищу векторов → фрагменты
context = "…"
answer = client.chat.completions.create(
model="openai/gpt-5.6-luna",
messages=[
{"role": "system", "content": "Отвечай только по фрагментам ниже и указывай источник."},
{"role": "user", "content": f"Фрагменты:\n{context}\n\nВопрос: {question}"},
],
)
print(answer.choices[0].message.content)Где чаще всего ломается
Первая ошибка: слишком крупные куски. Модель получает много шума и отвечает общими словами. Вторая: слишком мелкие, в которых нет контекста. Третья: нет инструкции отвечать только по фрагментам, и модель добавляет то, что помнит.
Четвёртая: индекс не обновляется. Документы меняются, а векторы остаются старыми, и система отвечает по устаревшим данным. Пятая: нет проверки на «в базе этого нет», и модель придумывает ответ вместо честного признания.
Про маршруты API написано в документации по эмбеддингам, а модели с ценами собраны в каталоге.
Частые вопросы
RAG простыми словами это что?
Это схема, где модель сначала ищет нужные фрагменты в вашей базе, а потом отвечает по ним. Получается ответ по актуальным документам, а не по памяти модели. В каталоге LLM Mart для этого нужны две вещи: модель эмбеддингов для поиска и любая текстовая модель для генерации ответа, оба вызова идут одним ключом.
Чем RAG лучше дообучения модели?
RAG обновляется за минуты: добавили документ, пересчитали векторы, и модель уже отвечает по новым данным. Дообучение требует датасета, инфраструктуры и повторного обучения при каждом изменении. Для базы знаний RAG почти всегда выгоднее. Дообучение оставляют для стиля и узких форматов, где важен сам навык, а не факты.
Сколько стоит собрать RAG?
Основные расходы это индексация базы и генерация ответов. Эмбеддинги считаются только по входным токенам и стоят копейки, цены видны в каталоге LLM Mart. Генерация дороже, но в контекст уходит десяток фрагментов вместо всей базы, поэтому счёт за запрос остаётся небольшим даже на массовой нагрузке.
Какие документы подходят для RAG?
Любые текстовые: документация, регламенты, статьи, тикеты поддержки, расшифровки встреч. Главное, чтобы документ можно было нарезать на самодостаточные куски. Таблицы и сканы требуют отдельной обработки: картинки нужно распознать, а таблицы привести к тексту, иначе поиск по ним не работает.
Что делать, если модель отвечает не по документам?
Проверьте три вещи: нарезку, инструкцию и поиск. Куски должны быть самодостаточными, в системном промпте нужно прямо запретить ответы вне фрагментов, а поиск обязан возвращать действительно релевантные результаты. В каталоге LLM Mart удобно сравнить модели на одном наборе документов, меняя только идентификатор.
Комментарии 0