Экспресс-курс · No. 12
RAG — это как ты вручаешь языковой модели факты, чтобы отвечать по ним, вместо того чтобы доверять её размытой памяти. Это самый важный паттерн в серьёзных LLM-приложениях — и когда он ломается, модель почти никогда не виновата. Работа и качество живут в извлечении: как ты режешь, индексируешь, ищешь и ранжируешь текст, что кладёшь перед моделью.
22 понятия · схема у каждого · шпаргалка в конце
Модель не знает твоих данных и ничего после своей даты обучения. RAG — это как ты даёшь ей факты, чтобы отвечать по ним, — так что пойми задачу, что он решает, до механики.
Карта: 22 понятия в семи группах
Карта метро: сначала видишь линии целиком, потом едешь по станциям.
Сначала три основы — почему памяти модели мало, что такое RAG и зачем нужно заземление. Дальше шесть групп, по одной на главу: чанкинг, эмбеддинги и поиск, качество извлечения, заземление, оценка и как строить хорошо.
У каждого понятия дальше одно и то же: английское название (запомни его — это термин), образ из жизни, схема и карточка с полями: что это или проблема, как работает или идея, пример, подвох или цена и связи.
Knowledge Cutoff — память модели заморожена
Блестящий выпускник, что прочёл всю библиотеку годы назад, — но не файлы твоей компании и ничего, напечатанного с его выпуска.
LLM знает только то, что было в её обучающих данных, замороженных на дате отсечки — knowledge cutoff. Она не знает твоих документов, твоего продукта, записи твоего клиента или вчерашних новостей. Спроси всё равно — и она ответит из размытой памяти или выдумает что-то правдоподобное. RAG существует, чтобы починить ровно это: перестань полагаться на то, что модель запомнила, и вручи ей нужные факты в момент вопроса.
- Что это
Модель знает только свои обучающие данные, замороженные на одной дате.
- Пример
- Она не знает твою документацию, запись клиента и вчерашние новости.
- Подвох
Модель не молчит, когда не знает, — она отвечает из размытой памяти или выдумывает.
- Связи
- Эту дыру закрывает RAG: факты приходят в момент вопроса.
RAG — сначала извлеки, потом отвечай
Экзамен с открытой книгой — вместо того чтобы доверять памяти, ты сначала смотришь нужные страницы, а потом пишешь ответ по тому, что перед тобой.
Это паттерн Retrieval-Augmented Generation (RAG) — генерация, дополненная извлечением. Три шага: retrieve — по вопросу пользователя достать самые релевантные чанки твоих документов; augment — положить их в контекст; generate — попросить модель ответить по ним. Теперь ответ идёт из твоих настоящих данных, а не из воспоминаний модели. Так ассистент отвечает про твою документацию, твои политики, твою базу знаний — точно и актуально.
- Проблема
- Модель не знает твоих данных и всего, что после её отсечки.
- Идея
- Найти нужные куски документов и дать модели ответить по ним.
- Пример
Ассистент поддержки отвечает про политику возврата по свежей статье из базы знаний.
- Цена
- Целая система поиска: чанкинг, индекс, свежесть, оценка.
- Когда брать
- Знаний много, они часто меняются или зависят от пользователя.
- Связи
Ради grounding; держится на chunking, embedding и vector search.
Grounding — вот настоящий приз
Журналист, что обязан цитировать источник на каждое утверждение, выдумывает куда меньше, чем тот, кто пишет по памяти.
Глубокая причина, почему RAG важен, — заземление (grounding): поскольку ответ взят из извлечённого текста, ты можешь требовать цитаты и проверять, что каждое утверждение реально подкреплено источником. Это не стирает галлюцинацию целиком, но режет её и делает то, что проскользнуло, ловимым. Ответ, что ты можешь проследить до документа, — это ответ, которому можно доверять и который можно защитить.
- Что это
- Ответ опирается на извлечённый текст, а не на память модели.
- Как работает
Каждое утверждение можно проследить до конкретного чанка и проверить.
- Пример
- «Возврат — 14 дней [1]», где [1] — абзац из политики возврата.
- Подвох
- Режет галлюцинации, но не убирает их до нуля.
- Связи
Делается через context-only answering, citations и refusal; меряется faithfulness.
Retrieval-first — это система поиска с моделью на конце
Научный ассистент хорош ровно настолько, насколько картотека, в которой он ищет, — дай ему отличную библиотеку и плохой индекс, и он всё равно вручит не ту папку.
Ментальная модель, что сэкономит тебе месяцы: RAG — это в основном задача поиска (search problem), с языковой моделью на конце, чтобы сформулировать ответ. Модель — лёгкая, в основном решённая часть. Тяжёлая, определяющая качество часть — всё, что решает, какой текст доходит до модели, — и это остаток курса.
Не спрашивай модель, что она знает. Извлеки нужные факты и попроси ответить по ним — заземлённо, актуально и с цитатами.
Прежде чем извлекать, ты режешь документы на куски. Как ты их режешь, тихо решает качество извлечения — это наименее гламурный шаг и один из самых важных.
Chunk — единица качества
Справочник полезен, только разрезанный на находимые статьи, — один гигантский неиндексированный свиток или тысяча рваных клочков одинаково бесполезны для поиска.
Ты извлекаешь не целые документы, а чанки (chunks) — пассажи в несколько сотен слов. Процесс нарезки называется chunking. Чанк — это единица, что видит поиск и читает модель, так что его границы важны колоссально. Хорошие чанки самодостаточны и на одну тему. Сделай чанкинг неверно — и никакой хитрый поиск или умная модель этого не спасут.
- Что это
- Пассаж в несколько сотен слов — единица поиска и чтения.
- Как работает
Документы режутся заранее; поиск возвращает чанки, модель отвечает по ним.
- Размер
Слишком большой хоронит ответ, слишком маленький теряет контекст. Число подбирают измерением.
- Подвох
- Плохой чанкинг не спасёт ни поиск, ни модель.
- Связи
Режь через structure-aware chunking, помечай metadata, превращай в embedding.
Chunk Size — слишком большой хоронит ответ, слишком маленький теряет контекст
Вручи кому-то целую главу, чтобы ответить на однострочный вопрос, и он бредёт сквозь шум; вручи одно предложение без окружения, и он не поймёт, что оно значит.
Режь слишком крупно — и каждый чанк мешает нужный факт с абзацами не относящегося текста: поиск становится размытым, а внимание модели разбавляется. Режь слишком мелко — и ты обрубаешь контекст, что делал факт осмысленным. Золотая середина держит одну связную идею с достаточным окружением, чтобы стоять самой по себе. Универсального размера чанка (chunk size) нет; он зависит от твоих документов, и ты его настраиваешь измерением.
Structure-Aware Chunking — режь по смыслу, а не по числу символов
Деление книги подсчётом символов может разрезать предложение — или рецепт — ровно пополам. Деление по главам и разделам держит каждый кусок целым.
Наивный подход — fixed-size chunking — рубит каждые N символов и разрезает предложения, таблицы и идеи. Лучше резать по естественной структуре документа — заголовкам, разделам, абзацам, — чтобы каждый чанк был законченной мыслью. Немного перекрытия (overlap) между соседними чанками не даёт факту провалиться в щель между двумя. Уважай форму документа — и извлечение становится легче само собой.
- Проблема
- Нарезка по числу символов режет предложения и таблицы пополам.
- Идея
- Резать по заголовкам, разделам и абзацам, с небольшим перекрытием.
- Пример
- Раздел «Сроки возврата» целиком становится одним чанком.
- Цена
- Нужно разбирать формат документа: Markdown, HTML, PDF.
- Связи
- Улучшает каждый chunk и всё ниже по течению.
Metadata — прикрепляй ярлыки к каждому чанку
Библиотечная карточка держит не только текст — она записывает автора, дату и раздел, чтобы ты мог отфильтровать ровно нужную полку ещё до поиска.
Храни каждый чанк с метаданными (metadata): исходный документ, заголовок, дата, раздел, права. Это позволяет фильтровать до или вместе с семантическим поиском — только документы этого продукта, только текущие политики, только то, что этому пользователю позволено видеть, — и даёт источник для цитат. Метаданные дёшево хранить, и они превращают плоскую груду текста в то, что можно нацеливать.
- Проблема
- Плоская груда текста: нельзя сузить поиск и нечего цитировать.
- Идея
- Хранить с чанком источник, заголовок, дату, раздел и права.
- Пример
Искать только в текущих политиках, которые этому пользователю можно видеть.
- Цена
- Почти ничего — несколько полей на чанк.
- Связи
- Даёт фильтр для vector search и источник для citations.
Ты извлекаешь чанки, а не документы. Режь по смыслу, держи каждый самодостаточным и тегируй — качество чанкинга ограничивает всё ниже по течению.
Чтобы найти чанки, что совпадают с вопросом, ты ищешь по смыслу, а не по совпадению слов. Эмбеддинги — это трюк, что делает «найди мне похожее на это» возможным.
Embedding — смысл превращается в координаты
Карта, где у каждой идеи есть место, и вещи, что значат схожее, сидят рядом, — «собака» близко к «щенку», обе далеко от «налоговой декларации».
Эмбеддинг (embedding) — это список чисел, вектор, что представляет смысл куска текста, помещённый в многомерное пространство так, что схожие смыслы оказываются рядом. Ты эмбеддишь каждый чанк один раз и хранишь векторы. Теперь у «смысла» есть координаты, и «найди связанный текст» становится «найди ближайшие точки» — задача, что компьютер решает быстро.
- Что это
- Список чисел, который представляет смысл текста.
- Как работает
Модель эмбеддингов выдаёт координаты; похожий смысл — близкие точки.
- Пример
- «Собака» и «щенок» рядом, обе далеко от «налоговой декларации».
- Связи
Делает возможным vector search; векторы живут в vector database.
Vector Search — поиск по сходству, а не по ключевым словам
Библиотекарь, что находит книги по тому, о чём они, — «похожее на это», — а не только по точному совпадению названия, что ты сказал.
В момент вопроса ты эмбеддишь вопрос тем же способом, потом ищешь в хранилище чанки, чьи векторы ближе всего к нему. Это векторный поиск (vector search), он же семантический поиск (semantic search): он находит чанк про «политику возврата», даже когда пользователь спросил про «вернуть свои деньги», потому что смыслы сидят рядом. Поиск по ключевым словам это упустил бы; векторный поиск для этого и создан.
- Что это
- Поиск чанков, чьи векторы ближе всего к вектору вопроса.
- Как работает
- Вопрос эмбеддится той же моделью, затем ищутся ближайшие точки.
- Пример
- «Вернуть деньги» находит раздел «Политика возврата».
- Подвох
- Промахивается по точным кодам и именам; близко — не всегда полезно.
- Связи
Работает на vector database; дополняется hybrid search и reranking.
Vector Database — движок извлечения
Склад, устроенный так, что по любому предмету он мгновенно вручит тебе сотню самых похожих, — не читая каждую полку, а благодаря тому, как он организован.
Векторная база данных (vector database) хранит твои эмбеддинги и отвечает на запросы «ближайшее к этому» за миллисекунды, даже по миллионам чанков, используя приближённый индекс (ANN, approximate nearest neighbour) вместо сканирования всего. Это движок извлечения под RAG. Строить его не надо — но надо знать, что именно там живут твои чанки и насколько быстр и точен его поиск.
- Что это
- Хранилище векторов с быстрым поиском ближайших.
- Как работает
- Приближённый индекс (ANN) вместо полного перебора.
- Пример
- Миллионы чанков — и ближайшие к вопросу за миллисекунды.
- Подвох
- Строить не нужно, но нужно знать, насколько быстр и точен поиск.
- Связи
- Хранит embeddings; на нём работает vector search.
Similar ≠ Relevant — сходство не то же, что релевантность
Два пассажа могут быть на одну тему и при этом отвечать на разные вопросы — «как отменить» и «почему отменяют» сидят рядом, но только один — то, что спросили.
Векторный поиск возвращает то, что семантически близко (similar), что обычно релевантно (relevant), но не всегда. Чанк может быть про нужный предмет и при этом не содержать ответа. Этот разрыв — близко по смыслу против реально полезно — вот почему сырой векторный поиск это сильный первый проход, но не финальное слово, и почему существует следующий раздел.
- Что это
- Близкий по смыслу чанк не обязательно содержит ответ.
- Пример
- «Как отменить» и «почему отменяют» — рядом, но ответ только в первом.
- Подвох
- Сырой векторный поиск принимает близость за полезность.
- Связи
- Лечится reranking; меряется retrieval eval.
Эмбеддинги дают смыслу координаты; векторный поиск находит чанки по сходству. Это мощно — и «близко по смыслу» это не совсем «отвечает на вопрос».
Вот урок, что чинит большинство сломанных RAG-систем: когда ответы плохи, причина обычно в извлечении. Заведи нужные чанки внутрь — и приличная модель сделает остальное.
Garbage In, Confident Garbage Out — мусор на входе, уверенный мусор на выходе
Вручи кому-то не тот файл и попроси его суммировать — он даст безупречную сводку совершенно не той вещи, звуча полностью уверенно.
RAG-ответ хорош ровно настолько, насколько чанки, что ему дали. Извлеки не те пассажи — и модель добросовестно ответит из неверного контекста, со всей своей обычной уверенностью. Баг выглядит как «модель неправа», но настоящий сбой случился выше по течению, в извлечении. Так что когда ответы плохи, осмотри, что извлеклось, прежде чем трогать промпт или модель.
Hybrid Search — сочетай ключевые слова и смысл
Один искатель, что точно знает, что слова значат, и другой, что совпадает по точным именам и кодам, — вместе они ловят то, что каждый по отдельности упустил бы.
Векторный поиск понимает смысл, но может промахиваться по точным терминам — кодам продуктов, именам, редкому жаргону. Поиск по ключевым словам (keyword search) бьёт по ним, но упускает перефразировки. Гибридный поиск (hybrid search) гоняет оба и сливает результаты, прикрывая слепые зоны друг друга. Для большинства реальных корпусов гибрид бьёт любой по отдельности, потому что реальные вопросы мешают понятия с конкретными именами.
- Проблема
Векторный поиск путает точные коды и имена; поиск по словам не видит перефразировок.
- Идея
- Запустить оба поиска и слить результаты.
- Пример
«Ошибка SKU-4471 при возврате» — код находит поиск по словам, смысл — векторный.
- Цена
- Два индекса и логика слияния.
- Когда брать
- Почти всегда для реальных корпусов.
- Связи
- Широкий первый проход перед reranking.
Reranking — переранжируй короткий список
Процесс найма: дешёвый первый проход вытягивает пятьдесят правдоподобных резюме, потом внимательный ревьюер читает их вблизи и ранжирует настоящую топ-пятёрку.
Поиск первого прохода быстр, но груб. Реранкер (reranker) берёт топ, скажем, пятьдесят кандидатов и оценивает каждого против вопроса аккуратнее, выталкивая по-настоящему релевантные чанки наверх. Извлекай широко, потом переранжируй до точных немногих. Эта двухэтапная форма — широкий дешёвый отзыв, потом острое ранжирование — один из самых рычажных апгрейдов посредственной RAG-системы.
- Проблема
- Первый проход быстр, но груб: нужное может стоять на 30-м месте.
- Идея
- Взять топ-50 и аккуратно оценить каждого кандидата против вопроса.
- Пример
- Из 50 найденных чанков реранкер оставляет 5 самых полезных.
- Цена
- Лишний шаг — немного задержки и денег на каждый вопрос.
- Когда брать
- Когда RAG посредственный — один из самых сильных апгрейдов.
- Связи
- Лечит similar ≠ relevant; стоит после hybrid search.
Precision и Recall — точность и полнота тянут друг против друга
Сеть с широкими ячейками ловит только крупную рыбу, но многое пропускает; мелкая сеть ловит всё, включая водоросли. Ты настраиваешь ячею под нужный улов.
Извлеки слишком мало чанков — и можешь упустить тот, что с ответом (низкая полнота, recall); извлеки слишком много — и хоронишь ответ в нерелевантном тексте, что разбавляет модель и стоит токенов (низкая точность, precision). Верное число чанков (его часто зовут k) балансирует эти двое, и оно специфично для твоих данных и типа вопроса. Ты его не угадываешь — ты его меряешь, а это следующий раздел.
- Что это
Recall — нашёлся ли нужный чанк; precision — сколько мусора пришло вместе с ним.
- Как работает
- Больше k — выше полнота, ниже точность, и наоборот.
- Пример
- k = 2 упускает ответ; k = 40 хоронит его и жжёт токены.
- Подвох
- Нужное k не угадать — его меряют на своих данных.
- Связи
- Меряется retrieval eval; влияет на cost & latency.
Большинство плохих RAG-ответов — это плохое извлечение. Сочетай ключевые слова и семантику, переранжируй короткий список и проверь чанки, прежде чем винить модель.
Как только нужные чанки в контексте, работа — заставить модель отвечать строго по ним и доказать, что она это сделала. Это и превращает извлечение в ответ, которому можно доверять.
Context-Only Answering — отвечай только из извлечённого текста
Свидетель, которому велено показывать только то, что он лично видел, — не то, что предполагает, смутно помнит или слышал из вторых рук.
Укажи модели отвечать только из предоставленных чанков и говорить, что не знает, когда ответа там нет. Это ядро заземления: извлечённый текст — это разрешённый источник истины (source of truth), а собственная память модели снята со стола. Идеально не будет — модель всё ещё может дрейфовать, — но инструкция плюс нужный контекст делают бо́льшую часть работы.
- Проблема
- Модель смешивает извлечённые факты со своей памятью.
- Идея
Инструкция: отвечать только из предоставленных чанков, иначе — «не знаю».
- Пример
«Отвечай только по фрагментам ниже. Если ответа там нет — так и скажи».
- Цена
- Не идеально: модель всё ещё может дрейфовать.
- Связи
- Ядро grounding; проверяется citations и faithfulness.
Citations — цитаты делают утверждения проверяемыми
Научная статья со сносками позволяет любому читателю проследить утверждение до источника и проверить его — или поймать, где оно не держится.
Пусть модель цитирует, из какого чанка пришла каждая часть её ответа. Цитаты (citations) делают две вещи: позволяют пользователю (и тебе) сверить утверждение с источником, и сам акт заземления каждого высказывания в извлечённом пассаже отбивает у модели охоту уходить от фактов. Ответ с прослеживаемыми источниками можно проаудитировать; ответ без источников — лишь уверенная догадка.
- Проблема
- Ответ без источников нельзя проверить — это уверенная догадка.
- Идея
- Модель указывает, из какого чанка взято каждое утверждение.
- Пример
- «Возврат — 14 дней [1]», где [1] — refund-policy.md, раздел «Сроки».
- Цена
- Нужны метаданные с источником у каждого чанка.
- Связи
- Опираются на metadata; делают grounding проверяемым.
Refusal — научи её говорить «я не знаю»
Эксперт, которому ты доверяешь больше всего, — тот, кто говорит «этого нет в том, что у меня есть», вместо того чтобы уверенно заполнить пробел догадкой.
Самый опасный сбой RAG — отвечать всё равно, когда извлечение вернулось пустым или мимо. Так что сделай отказ (refusal) валидным, ожидаемым выводом: если чанки не содержат ответа, модель должна так и сказать, а не импровизировать из памяти. Система, что признаёт пробел, куда надёжнее той, что его замазывает, — и она вскрывает, где твоё извлечение нуждается в работе.
- Проблема
- Извлечение вернулось мимо, а модель всё равно отвечает.
- Идея
- «Этого нет в моих источниках» — нормальный, ожидаемый ответ.
- Пример
- Вопрос вне базы знаний → «В документации этого нет».
- Цена
- Пользователь иногда не получает ответа — зато не получает и выдумки.
- Связи
- Часть grounding; отказы показывают дыры в извлечении.
Grounding снижает галлюцинацию — но не кончает её
Ремни безопасности резко снижают смертность, но ты всё равно едешь осторожно. Сильная мера защиты — не повод перестать смотреть на дорогу.
Даже с идеальными чанками модель может неверно прочесть, переобобщить или смешать извлечённый факт с собственной памятью. Заземление режет галлюцинацию (hallucination) и делает её ловимой; оно её не убирает. Так что ты всё равно проверяешь — цитатами, что пользователь может сверить, и эвалами, что меряют верность. Относись к заземлению как к мощному контролю, а не как к гарантии.
Заземление значит, что ответ идёт только из извлечённого текста, с цитатами в доказательство, — и честным «я не знаю», когда фактов там нет.
У RAG два этапа, что сбоят по-разному, так что ты меряешь их отдельно. Свали их вместе — и будешь неделями настраивать не ту половину. (Курс об эвалах копает глубже; здесь — RAG-специфичная форма.)
Два этапа — меряй извлечение и генерацию по отдельности
У ресторана с плохим блюдом два возможных виновника — доставленные ингредиенты или повар. Сначала пробуешь ингредиенты, иначе переучишь не того.
RAG-ответ может сбоить, потому что извлечение (retrieval) принесло не те чанки, или потому что генерация (generation) плохо ответила из верных чанков. Им нужны разные починки, так что меряй их отдельно: вернулись ли нужные чанки? и, при этих чанках, был ли ответ верным и полным? Большинство команд, что «не могут улучшить свой RAG», оценивают только финальный ответ и гадают, какую половину винить.
Retrieval Eval — вернулись ли нужные чанки?
Прежде чем судить эссе, проверь, что студенту вообще вручили нужные справочные страницы, — если нет, ничто из написанного не могло быть верным.
Оценивай извлечение само по себе — это retrieval eval: для набора вопросов с известными релевантными документами вернул ли поиск их в топе результатов? Долю таких попаданий часто называют recall@k. Это ловит плохой чанкинг, слабый поиск и отсутствие реранкинга напрямую — выше-по-течению причины большинства плохих ответов. Чини извлечение первым, потому что никакое улучшение промпта или модели не спасёт ответ, построенный из неверных чанков.
- Проблема
- По финальному ответу не видно, виноват ли поиск.
- Идея
- Вопросы с известными нужными документами: вернулись ли они в топ-k?
- Пример
- Из 50 реальных вопросов нужный документ в топ-5 у 41.
- Что ловит
- Плохой чанкинг, слабый поиск, отсутствие реранкинга.
- Связи
- Меряет precision & recall; чинится до faithfulness.
Faithfulness — был ли ответ верен чанкам?
Фактчекер читает ответ против цитируемых источников и помечает любое предложение, что источники на деле не подкрепляют.
Когда извлечение хорошо, оценивай ответ на верность (faithfulness): подкреплено ли каждое утверждение извлечёнными чанками, без выдумок и без противоречий? Также проверь, что он реально использовал извлечённое и ответил на вопрос. Здесь ты ловишь дрейф модели прочь от твёрдого контекста — и это измеримо, часто с другой моделью в роли оценщика (LLM-as-judge).
- Что это
- Каждое утверждение ответа подкреплено извлечёнными чанками.
- Как работает
- Оценщик — часто другая модель — сверяет предложения с чанками.
- Пример
- Два предложения подкреплены, третье — нет: оно помечается.
- Подвох
- Верный чанкам ответ всё равно должен отвечать на вопрос.
- Связи
- Меряет grounding; имеет смысл после хорошего retrieval eval.
Golden Set — строй эвал из реальных вопросов
Ты тестируешь мост грузовиками, что реально по нему поедут, а не весами, что нашёл удобными.
Твой эвал-набор — его часто зовут golden set — должен быть реальными вопросами, что задают пользователи, включая грязные и вне-области, каждый в паре с чанками, что должны извлечься, и известным хорошим ответом. Гоняй его на каждом изменении, чтобы видеть, реально ли новая стратегия чанкинга или реранкер помогли. Без этого ты настраиваешь RAG по анекдотам — а анекдоты врут.
- Проблема
- Настройка по анекдотам: «вроде стало лучше».
- Идея
- Реальные вопросы + чанки, что должны найтись, + известный хороший ответ.
- Пример
Грязный вопрос, перефразированный вопрос и вопрос вне области с ожидаемым «не знаю».
- Цена
- Время собрать и поддерживать набор.
- Связи
- Кормит и retrieval eval, и faithfulness.
RAG сбоит в двух местах. Меряй извлечение и генерацию отдельно, чини извлечение первым и строй эвал из реальных вопросов.
RAG мощен и к нему часто тянутся зря. Навык — применять его, когда он отрабатывает своё место, держать данные свежими и не платить за машинерию, что более простой подход пропустил бы.
Paste First — не RAG-ай то, что мог бы просто вставить
Ты не строишь библиотечный каталог для трёх книг на своём столе — ты просто их открываешь.
Если нужные факты малы и фиксированы — пара документов, короткая политика, — просто положи их в промпт. RAG отрабатывает свою сложность, когда знание слишком велико для контекста, часто меняется или должно фильтроваться по пользователю. Строить конвейер извлечения над тремя страницами — это эквивалент перебора в виде цикла агента ради одного вызова. Тянись к нему, когда данные вынуждают.
- Проблема
- Конвейер извлечения строят там, где он не нужен.
- Идея
- Малые стабильные факты кладут прямо в промпт.
- Пример
- Короткая политика на две страницы — в промпт, без индекса.
- Когда брать RAG
Знание не влезает в контекст, часто меняется или фильтруется по пользователю.
- Связи
- Нижняя ступень лестницы; RAG — следующая.
Index Freshness — устаревшие данные это неверные данные
Телефонная книга полезна, только если её переиздают, — номера прошлого десятилетия уверенно и бесполезно неверны.
Обещание RAG — актуальные факты, а значит, твой индекс обязан оставаться актуальным. Когда исходные документы меняются, чанки и эмбеддинги надо обновить — переиндексация (reindexing), — иначе модель заземлит свои ответы в уверенном, устаревшем тексте. Планируй переиндексацию как часть системы, а не как мысль вдогонку, — свежесть это фича, что надо поддерживать, а не свойство, что получаешь раз.
- Проблема
- Документы поменялись, а индекс нет — ответы уверенно устарели.
- Идея
- Пере-чанкать и пере-эмбеддить изменённые документы по плану.
- Пример
- Политику обновили — её чанки пересобраны в тот же день.
- Цена
- Конвейер переиндексации, который надо поддерживать.
- Связи
- Держит grounding актуальным; трогает chunk и embedding.
Cost & Latency — следи за стоимостью и задержкой
Каждый лишний шаг в конвейере — эмбеддинг, поиск, реранк, набивка контекста, генерация — добавляет немного времени и немного денег к каждому вопросу.
RAG добавляет этапы, и каждый стоит задержки (latency) и токенов. Извлечение большего числа чанков, реранкинг, больший контекст — всё улучшает качество до некоторого предела и поднимает счёт всю дорогу. Так что настраивай на наименьшее число чанков, что отвечает хорошо, кэшируй где можешь и помни, что отличный ответ, что слишком медленный или дорогой, — не отличный ответ в проде.
- Что это
- Каждый этап RAG добавляет время и токены к каждому вопросу.
- Как работает
Больше чанков, реранк, больший контекст — лучше качество до предела, дороже всегда.
- Пример
- Сократить k с 20 до 5 после реранка — ответ тот же, счёт меньше.
- Подвох
- Отличный, но медленный или дорогой ответ — не отличный в проде.
- Связи
- Тянет против precision & recall и reranking.
RAG — одна ступень; модель остаётся компонентом
У хорошей кухни есть кладовая, но кладовая — не повар: это один хорошо организованный вход для того, кто всё ещё должен приготовить блюдо.
RAG сидит на лестнице выше обычного промпта и ниже инструментов и агентов: тянись к нему, когда модели нужны твои факты, и держи его за чистым интерфейсом, как любую зависимость. Извлечение кормит модель; оно не заменяет суждение вокруг модели. Та же дисциплина, что везде, — используй простейшую ступень, что работает, и держи модель заменяемой.
Как понятия связаны
Две смены одной кухни: ночью заготовка — нарезать и разложить по полкам; днём готовка — найти, выбрать и подать.
Всё в курсе — одна цепочка в два этапа. Офлайн (indexing): документы режутся на чанки с метаданными, превращаются в эмбеддинги и ложатся в векторную базу — и пересобираются, когда документы меняются (index freshness). В момент вопроса (query time): hybrid search находит кандидатов, reranking оставляет лучших, precision и recall решают, сколько их взять. Дальше grounding: модель отвечает только по контексту, с цитатами или честным отказом. Сбоку — paste first: если фактов мало, вся цепочка не нужна. А эвалы — retrieval eval, faithfulness, golden set — меряют каждое звено.
- Нужен ли RAG вообще — или факты малы и стабильны достаточно, чтобы вставить в промпт?
- Как чанкятся документы — по смыслу, самодостаточно, с метаданными и небольшим перекрытием?
- Гибридное ли извлечение и переранжировано, или сырой векторный поиск, что ты не мерил?
- Отвечает ли модель только из извлечённого текста, цитирует источники и говорит «я не знаю»?
- Какой эвал для извлечения, отдельный от генерации?
- Как индекс остаётся свежим, и сколько запрос стоит во времени и токенах?
- Ответы уверенно неверны, а ты ни разу не посмотрел на извлечённые чанки.
- Только сырой векторный поиск — без запасного по ключевым словам, без реранкинга.
- Чанки нарезаны по числу символов, разрезая предложения и таблицы.
- Ты крутишь промпт и модель, чтобы починить то, что на деле промах извлечения.
- Индекс не пересобирали с тех пор, как исходные документы изменились.
- Чанки семантичны и самодостаточны, помечены метаданными для фильтрации и цитат.
- Извлечение гибридное + переранжировано, настроено на наименьшее число чанков, что отвечает хорошо.
- Ответы заземлены и процитированы, с честным отказом, когда факты не извлеклись.
- Ты меряешь извлечение и генерацию отдельно и починил извлечение первым.
- У индекса есть план свежести, а RAG сидит за интерфейсом, что можно заменить.
Шпаргалка: все 22 понятия
Основы
- Knowledge Cutoffдата отсечки
Модель знает только обучающие данные до одной даты — не твои документы.
- RAGRetrieval-Augmented Generation
Извлечь нужные чанки, положить в контекст, ответить по ним.
- Groundingзаземление
Ответ опирается на извлечённый текст, и это можно проверить.
Чанкинг
- Chunkчанк
Пассаж в несколько сотен слов — единица поиска; размер подбирают измерением.
- Structure-Aware Chunkingнарезка по структуре
Резать по заголовкам и абзацам, с небольшим перекрытием.
- Metadataметаданные
Источник, дата, раздел, права — для фильтра и цитат.
Эмбеддинги и поиск
- Embeddingэмбеддинг
Вектор — координаты смысла текста.
- Vector Searchсемантический поиск
Найти чанки, ближайшие к вопросу по смыслу.
- Vector Databaseвекторная база, ANN
Хранит векторы и находит ближайшие за миллисекунды.
- Similar ≠ Relevantсходство ≠ релевантность
Близкий по смыслу чанк не обязательно содержит ответ.
Качество извлечения
- Hybrid Searchkeyword + vector
Поиск по словам и по смыслу вместе, результаты сливаются.
- Rerankingпереранжирование
Широко набрать кандидатов, аккуратно выбрать лучшие немногие.
- Precision & Recallточность и полнота
Мало чанков — ответ упущен, много — утонул; k меряют.
Заземление
- Context-Only Answeringтолько по контексту
Отвечать только из извлечённых чанков, память модели — нет.
- Citationsцитаты
Каждое утверждение ссылается на свой чанк и проверяемо.
- Refusal«я не знаю»
Нет ответа в чанках — честно сказать, а не выдумывать.
Оценка
- Retrieval Evalrecall@k
Вернулись ли нужные чанки в топ-k? Чинить первым.
- Faithfulnessверность источникам
Каждое утверждение ответа подкреплено чанками.
- Golden Setэталонный набор
Реальные вопросы с ожидаемыми чанками и ответами — на каждом изменении.
Строить хорошо
- Paste Firstсначала вставь в промпт
Мало стабильных фактов — промпт, а не RAG.
- Index Freshnessсвежесть индекса
Документы поменялись — переиндексируй, иначе ответы устарели.
- Cost & Latencyстоимость и задержка
Каждый этап стоит времени и токенов; бери наименьшее k, что отвечает хорошо.
RAG — это система поиска с моделью на конце. Сделай чанки правильно — и ответ последует; модель редко была проблемой.