Перейти к содержанию

Модуль 22. Поиск и проверяемость

Чему вы научитесь в этом модуле

  • Объяснять RAG: почему ответ строится на найденных документах, а не на памяти модели.
  • Вычислять семантический поиск через скалярное произведение эмбеддингов и объяснять, где он проигрывает точному совпадению слов.
  • Объяснять, зачем нужен гибридный поиск и что даёт реранкер поверх дешёвого поиска.
  • Проверять цитаты: сверять каждое утверждение ответа с его источником и ловить выдумку.
  • Объяснять, почему проверяемость превращает беглый текст в ответ, которому можно доверять.

Время: около двух недель. Пререквизиты: модуль 21 и модуль 11. Ноутбук: открыть в Colab · notebooks/22-retrieval-and-verifiability.ipynb

Зачем нужен этот модуль

Языковая модель из модуля 11 знает только то, что было в обучающих данных: она не видит свежей информации, путает детали и уверенно выдумывает недостающее. Инструмент «поиск» из модуля 21 начинает это чинить, но по-настоящему — только если превратить его в полноценную подсистему и привязать каждое слово ответа к конкретному источнику.

RAG (retrieval-augmented generation) — это генерация, опирающаяся на найденное. Схема простая: по вопросу пользователя находим релевантные документы, кладём их в контекст модели, и модель отвечает по ним, а не по памяти.

запрос поиск документы модель ответ + ссылки кладём в контекст

RAG решает сразу две проблемы модели: свежесть (документы можно обновлять без переобучения модели) и выдумку (ответ обязан опираться на текст, который лежит рядом в контексте).

Как устроен поиск

Семантический поиск. Запрос и документы превращаются в эмбеддинги — векторы из модуля 17, — а близость между ними измеряется скалярным произведением из модуля 3. Семантический поиск находит по смыслу: запрос «как уменьшить модель» подтянет документ про квантизацию, даже если слова «уменьшить» в нём нет.

Но у семантики есть слепое пятно — точное слово. Код товара, имя функции, редкий специальный термин эмбеддинг размывает, и точное совпадение теряется. Именно здесь выигрывает старый добрый лексический поиск по ключевым словам.

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

Реранкер идёт следом. Дешёвый поиск извлекает полсотни кандидатов с высокой полнотой; затем медленная, но более точная модель переупорядочивает верхнюю часть списка. Это ровно ранжирование из модуля 18: важно не только «нашлось ли вообще», но и «наверху ли нужное».

Проверка цитат

Теперь самое главное, ради чего всё выше написано. RAG кладёт документы в контекст, но модель всё ещё может выдумать — вставить в беглый ответ утверждение, которого в источниках нет. Беглость это маскирует: неправда звучит так же гладко, как правда.

Лечение — привязать каждое утверждение к источнику и сверить. Ответ, которому можно верить, — это не ответ, произнесённый уверенным тоном, а ответ, где каждое утверждение указывает на строку в документе, и эту строку можно открыть и прочитать.

Жмите «проверить цитаты». Три утверждения подтверждаются своими источниками, одно — нет: модель написала «98%», а источник говорит «91%». Без проверки это утверждение прошло бы как часть гладкого текста; с проверкой оно краснеет. Проверяемость — не украшение ответа, а разница между «звучит правдоподобно» и «подтверждается источником».

Проверка утверждений — снова модуль 1. В модуле 1 вы проверяли число из статьи: с чем сравнивают, сколько раз запускали. Здесь то же самое, но для ответа агента: подтверждается ли каждое утверждение конкретным источником. А скалярное произведение, на котором стоит весь поиск, — то же, что в модуле 3, модуле 17 и внимании модуля 10. Один и тот же приём измеряет похожесть везде — от регрессии до цитаты.

Практическая часть

Часть 1. Работа с ноутбуком

Откройте notebooks/22-retrieval-and-verifiability.ipynb. Только numpy и matplotlib, вычисления занимают секунды.

Что содержится внутри:

  1. Семантический поиск скалярным произведением и его слепое пятно на точном слове. Гибрид с лексикой закрывает и то, и другое: полнота гибрида не ниже каждого по отдельности.
  2. Реранкер: дешёвый поиск обеспечивает полноту, переупорядочивание верха списка даёт точность. Precision@k растёт.
  3. Проверка цитат: сверяем каждое утверждение ответа с источником и ловим выдуманное. Беглость не спасает от проверки.

Часть 2. Собственный поиск

Возьмите набор документов, по которым вы обычно отвечаете на вопросы: рабочая вики, база знаний, папка заметок.

  1. Какой запрос семантика найдёт, а поиск по точному слову потеряет, — и наоборот?
  2. Где нужен реранкер, а где хватит дешёвого поиска?
  3. Возьмите любой ответ модели по этим документам и проверьте каждое утверждение по источнику. Сколько утверждений подтвердилось?
  4. Какое утверждение звучало убедительнее всего — и подтвердилось ли оно?

Задание

  1. Реализуйте семантический поиск на косинусе эмбеддингов и найдите запрос, где он проигрывает поиску по ключевому слову.
  2. Соберите гибрид: сложите нормированные семантический и лексический баллы. Покажите, что полнота гибрида не ниже, чем у каждого из них по отдельности.
  3. Добавьте реранкер: дешёвый поиск на топ-20, точная переоценка верхней части списка. Постройте precision@k до и после.
  4. Реализуйте проверку цитат: утверждение подтверждено, если его опора обнаруживается в источнике. Прогоните на ответе с одной подставленной выдумкой и поймайте её.
  5. Постройте ответ, где выдуманное утверждение звучит убедительнее подтверждённых. Покажите, что проверка не ведётся на убедительность.

Проверка усвоения

  1. Что такое RAG и какие две проблемы модели он решает?
  2. Как вычисляется семантический поиск и где у него слепое пятно?
  3. Зачем нужен гибридный поиск и что закрывает лексическая составляющая?
  4. Что делает реранкер и с каким модулем курса это рифмуется?
  5. Почему RAG сам по себе не гарантирует правдивость ответа?
  6. Что означает «привязать утверждение к источнику» и как это проверить?
  7. Где ещё в курсе встречалось то же скалярное произведение, что стоит в основе поиска?

Что дальше

В модуле 23 проверка одного ответа вырастает в систематическую оценку агента: eval как тест, golden set как эталон, регрессия как разница между прогонами. Проверка цитат отсюда станет одним из автоматических тестов, а трейс из модуля 21 — тем, что этот тест читает.

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


Принцип

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