CRAG, или Corrective Retrieval Augmented Generation, исходит из очень практичной мысли: проблема RAG часто не в генерации, а в том, что retrieval принёс мусор, полупопадания или неполные документы. Вместо слепого trust в top-k, CRAG сначала оценивает качество retrieval и только потом решает, как действовать дальше.

В 2026 это один из самых полезных production-паттернов вокруг RAG. Он хорошо отвечает на реальную боль: "мы уже сделали retrieval, но кто сказал, что он хороший?"

CRAG не считает retrieval священным. Если evidence слабый, система должна уметь его исправить, а не строить на нём ответ.

Коротко

CRAG полезен, когда:

  • retrieval quality нестабильна;
  • векторный поиск часто даёт шум;
  • нужна защита от garbage-in, garbage-out;
  • система может сделать fallback в web search или другой retriever.
ПромптClaude Sonnet 4.6
Оцени качество найденных документов перед ответом. Если они слабые, предложи corrective action: web search, rerank или отказ от уверенного ответа.
Ответ модели

Система увидела, что первые документы лишь частично отвечают на вопрос, отправила запрос в дополнительный search layer и уже после этого собрала более grounded answer.

CRAG особенно ценен там, где retrieval нельзя считать надёжным по умолчанию.

Чем CRAG отличается от обычного RAG

Обычный RAG действует так:

  • retrieved docs считаются приемлемыми;
  • генерация идёт сразу по ним.

CRAG добавляет corrective layer:

  • оценить overall quality retrieval;
  • если нужно, доискать знания;
  • локально очистить шум;
  • только потом генерировать ответ.

Это переводит систему из режима blind consumption в режим controlled grounding.

Обычный RAG
Система принимает top-k документы как данность и отвечает даже тогда, когда retrieval слабый или нерелевантный.
CRAG
Система сначала проверяет качество retrieval и при низкой уверенности запускает corrective actions.

Когда техника особенно полезна

CRAG хорошо подходит для:

  • enterprise search с шумным корпусом;
  • RAG по свежим или неполным данным;
  • многодоменных баз знаний;
  • систем, где vector retrieval часто приносит near-miss документы;
  • workflows с запасным web search.

Если retrieval уже очень сильный и узкий по домену, CRAG может быть избыточным.

Ограничения

CRAG требует метрики или модели, которая умеет различать хороший и плохой retrieval. Если evaluator слабый, система либо слишком часто делает corrective loops, либо пропускает плохие документы дальше.

Кроме того, у техники почти всегда выше latency, чем у plain RAG.

Почему техника актуальна в 2026

Большинство production-RAG систем уже поняли, что главная причина ошибок находится раньше генерации. CRAG важен потому, что делает retrieval quality first-class signal, а не скрытой предпосылкой.

Это особенно ценно для систем с heterogeneous corpora, где стабильность поиска не гарантирована.

Техническая реализация

const docs = await retrieve(query)
const quality = await model(scoreRetrievalQualityPrompt(query, docs))

const repairedDocs =
  quality.low ? await correctiveRetrieval(query, docs) : docs

const answer = await model(answerWithDocsPrompt(query, repairedDocs))

Практический совет: сохраняйте отдельно initial_docs и repaired_docs. Без этого невозможно понять, улучшает ли CRAG систему или просто добавляет cost.

Проверьте себя

1. Какую проблему решает CRAG?

2. Что делает система при низком качестве evidence в CRAG?

3. Главный компромисс CRAG?