Идея RAG: найти, подставить, ответить

Здесь — главная идея курса в одном предложении и почему она работает.

RAG (Retrieval-Augmented Generation) — приём, при котором перед ответом система находит релевантные фрагменты в вашей базе знаний и подставляет их в промпт, чтобы LLM отвечала с опорой на реальный контекст.

Три шага, которые всё меняют

RAG превращает «модель отвечает из головы» в «модель отвечает по источнику». Схема всегда одна:

  1. Retrieve (найти) — по вопросу пользователя достаём из базы несколько самых релевантных фрагментов.
  2. Augment (подставить) — вставляем эти фрагменты в промпт как контекст.
  3. Generate (ответить) — LLM пишет ответ, опираясь на поданный контекст, а не только на память.

Почему это лечит проблемы из прошлого урока

Проблема LLMКак помогает RAG
Устаревшие знанияБаза обновляется отдельно от модели — добавили документ, и он сразу доступен
ГаллюцинацииМодель отвечает по поданным фактам; можно требовать цитировать источник
Приватные данныеВ базу кладём свои документы — модель «видит» их через контекст
Лимит контекстаПодаём не всё, а только top-k релевантных фрагментов

Игрушечный RAG в десять строк

Чтобы идея стала осязаемой, соберём крошечный RAG без всяких библиотек. «Поиск» — по совпадению слов, «генерация» — шаблон. Главное — увидеть поток: вопрос ищет контекст, контекст идёт в ответ.

knowledge = [
    "Возврат товара возможен в течение 14 дней.",
    "Доставка по городу занимает один рабочий день.",
    "Гарантия на технику составляет 24 месяца.",
]

def retrieve(question, k=1):
    qwords = set(question.lower().split())
    scored = []
    for doc in knowledge:
        overlap = len(qwords & set(doc.lower().split()))
        scored.append((overlap, doc))
    scored.sort(reverse=True)
    return [doc for _, doc in scored[:k]]

def answer(question):
    context = retrieve(question, k=1)[0]
    return "На основе документа: " + context

print(answer("какая гарантия на технику?"))

Вывод:

На основе документа: Гарантия на технику составляет 24 месяца.

Ответ опирается на конкретный документ из базы, а не на «память модели». Весь курс — про то, как сделать шаг retrieve по-настоящему умным (через эмбеддинги и векторный поиск), а шаг генерации — надёжным и со ссылками на источники.

Что RAG не делает

RAG не делает модель «умнее» в рассуждениях и не учит её новым навыкам — он лишь приносит ей нужные факты. Если ответа нет ни в одном документе базы, хороший RAG-пайплайн честно скажет «не знаю», а не выдумает.

Итог

  • RAG = retrieve + augment + generate.
  • Он лечит устаревшие знания, галлюцинации, доступ к приватным данным и лимит контекста.
  • RAG приносит факты, а не повышает интеллект модели.
Проверьте себя
1. Что означают три буквы в аббревиатуре RAG по смыслу пайплайна?
ARandom Access Generation
BRetrieve, Augment, Generate
CRank, Aggregate, Group
DRead, Apply, Guess
2. Что именно RAG добавляет к работе LLM?
AНовые способности к рассуждению
BРелевантные факты из внешней базы в контекст промпта
CУскорение генерации токенов
DСжатие модели
3. Почему RAG помогает с устаревшими знаниями?
AОн переобучает модель на лету
BБаза знаний обновляется отдельно от модели и сразу доступна для поиска
CОн увеличивает контекстное окно
DОн отключает галлюцинации в модели
Поддержать проект