Эмбеддинги и RAG: как подключить внешние знания
Retrieval-Augmented Generation соединяет генератор с внешней памятью. Приложение извлекает релевантные фрагменты, добавляет их к запросу и просит модель сформировать ответ.
Краткий ответ
Retrieval-Augmented Generation соединяет генератор с внешней памятью. Приложение извлекает релевантные фрагменты, добавляет их к запросу и просит модель сформировать ответ.
Retrieval-Augmented Generation соединяет генератор с внешней памятью. Приложение извлекает релевантные фрагменты, добавляет их к запросу и просит модель сформировать ответ. Знания можно обновлять без полного переобучения модели, а пользователю — показывать происхождение утверждений.
Эмбеддинги для поиска
Embedding-модель преобразует запрос и фрагменты в векторы одного пространства. По косинусной близости или другой метрике находят семантически похожие элементы. Векторный поиск полезен, когда слова различаются, но смысл близок.
Близость не равна доказательству релевантности. Модель эмбеддингов может путать отрицание, даты, имена и узкую терминологию. Поэтому часто объединяют lexical search и dense retrieval, применяют фильтры метаданных, а затем reranker более точно сортирует небольшой список кандидатов.
Индексация и chunking
Документы очищают, делят на фрагменты и снабжают метаданными: URL, версия, дата, раздел, права доступа. Слишком маленький chunk теряет контекст, слишком большой размывает релевантность и расходует окно. Перекрытие помогает сохранить границы, но создаёт дубли.
Заголовок и путь раздела полезно включать в текст фрагмента. Таблицы, код и сканы требуют специальных парсеров. Индекс должен знать версию документа: иначе ответ может смешать отменённое правило с актуальным.
Конвейер запроса
Типичная последовательность выглядит так:
1. Нормализовать вопрос и определить фильтры доступа. 2. Получить кандидатов несколькими методами. 3. Переранжировать и отбросить слабые совпадения. 4. Собрать контекст с устойчивыми идентификаторами источников. 5. Сгенерировать ответ только по доказательствам. 6. Проверить формат ссылок и вернуть пользователю цитаты.
На каждом этапе нужен telemetry: какие chunks найдены, с какими score, что попало в prompt, сколько токенов потрачено. Без этого «модель ответила неправильно» невозможно локализовать.
Параметрическая и непараметрическая память
В исходной работе RAG параметрическая память генератора объединялась с непараметрическим индексом. На практике эти термины полезны: веса дают языковые способности и общие закономерности, индекс предоставляет явные обновляемые документы.
Если retrieval ничего не нашёл, система должна уметь отказаться или переключиться на иной безопасный режим. Нельзя незаметно перейти от ответа «по корпоративной базе» к свободной догадке модели.
Упражнение: спроектируйте три chunks
Возьмите страницу правил с заголовком, общим условием, двумя исключениями и датой действия. Разделите её тремя способами: по 100 символов, по абзацам и по смысловым разделам с заголовком.
Составьте вопросы к исключению и дате. Для каждого разбиения отметьте, какой chunk содержит достаточно доказательств. Затем добавьте старую версию правил и придумайте фильтр, который не позволит смешать версии.
Частые вопросы
RAG и fine-tuning — одно и то же?
Нет. RAG меняет вход текущего запроса внешними фрагментами. Fine-tuning изменяет параметры модели и подходит для устойчивой адаптации поведения или доменных закономерностей.
Векторная база обязательна?
Нет. Для маленького точного каталога может быть лучше SQL, полнотекстовый поиск или граф. Векторный поиск — один механизм кандидатов, а не определение RAG.
Нужно ли показывать пользователю все найденные chunks?
Следует показывать источники, реально поддерживающие ответ, а не весь внутренний список кандидатов. При этом логи retrieval полезны разработчикам для диагностики с соблюдением доступа и конфиденциальности.
Что важно запомнить
- RAG добавляет к генерации явную обновляемую память и происхождение утверждений.
- Embedding similarity помогает искать по смыслу, но не доказывает релевантность.
- Chunking, metadata, hybrid retrieval и reranking влияют на качество не меньше генератора.
- Система должна отдельно тестировать retrieval, groundedness, ссылки и поведение при отсутствии источника.
https://yadro-code.ru/lessons/without-university/generative-ai-foundations/generative-ai-09