Идея RAG: найти, подставить, ответить
Здесь — главная идея курса в одном предложении и почему она работает.
RAG (Retrieval-Augmented Generation) — приём, при котором перед ответом система находит релевантные фрагменты в вашей базе знаний и подставляет их в промпт, чтобы LLM отвечала с опорой на реальный контекст.
Три шага, которые всё меняют
RAG превращает «модель отвечает из головы» в «модель отвечает по источнику». Схема всегда одна:
- Retrieve (найти) — по вопросу пользователя достаём из базы несколько самых релевантных фрагментов.
- Augment (подставить) — вставляем эти фрагменты в промпт как контекст.
- 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 приносит факты, а не повышает интеллект модели.