Модуль 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, вычисления занимают секунды.
Что содержится внутри:
- Семантический поиск скалярным произведением и его слепое пятно на точном слове. Гибрид с лексикой закрывает и то, и другое: полнота гибрида не ниже каждого по отдельности.
- Реранкер: дешёвый поиск обеспечивает полноту, переупорядочивание верха списка даёт точность. Precision@k растёт.
- Проверка цитат: сверяем каждое утверждение ответа с источником и ловим выдуманное. Беглость не спасает от проверки.
Часть 2. Собственный поиск¶
Возьмите набор документов, по которым вы обычно отвечаете на вопросы: рабочая вики, база знаний, папка заметок.
- Какой запрос семантика найдёт, а поиск по точному слову потеряет, — и наоборот?
- Где нужен реранкер, а где хватит дешёвого поиска?
- Возьмите любой ответ модели по этим документам и проверьте каждое утверждение по источнику. Сколько утверждений подтвердилось?
- Какое утверждение звучало убедительнее всего — и подтвердилось ли оно?
Задание¶
- Реализуйте семантический поиск на косинусе эмбеддингов и найдите запрос, где он проигрывает поиску по ключевому слову.
- Соберите гибрид: сложите нормированные семантический и лексический баллы. Покажите, что полнота гибрида не ниже, чем у каждого из них по отдельности.
- Добавьте реранкер: дешёвый поиск на топ-20, точная переоценка верхней части списка. Постройте precision@k до и после.
- Реализуйте проверку цитат: утверждение подтверждено, если его опора обнаруживается в источнике. Прогоните на ответе с одной подставленной выдумкой и поймайте её.
- Постройте ответ, где выдуманное утверждение звучит убедительнее подтверждённых. Покажите, что проверка не ведётся на убедительность.
Проверка усвоения¶
- Что такое RAG и какие две проблемы модели он решает?
- Как вычисляется семантический поиск и где у него слепое пятно?
- Зачем нужен гибридный поиск и что закрывает лексическая составляющая?
- Что делает реранкер и с каким модулем курса это рифмуется?
- Почему RAG сам по себе не гарантирует правдивость ответа?
- Что означает «привязать утверждение к источнику» и как это проверить?
- Где ещё в курсе встречалось то же скалярное произведение, что стоит в основе поиска?
Что дальше¶
В модуле 23 проверка одного ответа вырастает в систематическую оценку агента: eval как тест, golden set как эталон, регрессия как разница между прогонами. Проверка цитат отсюда станет одним из автоматических тестов, а трейс из модуля 21 — тем, что этот тест читает.
RAG строит ответ на найденных документах, а не на памяти модели; гибридный поиск ловит и смысл, и точное слово; реранкер поднимает нужное наверх. Но правдой ответ делает только проверка цитат — привязка каждого утверждения к конкретному источнику.
Принцип
Беглость и правда звучат одинаково, поэтому доверять можно не тону ответа, а его сцепке с источником. Ответ, который нельзя выдумать, — это ответ, где каждое утверждение указывает на строку, и эту строку можно открыть.