Проектирование RAG-системы
Abstract
RAG — архитектура, в которой система извлекает внешние данные и добавляет выбранные фрагменты в контекст генерации. Она даёт модели доступ к корпусу во время inference, не изменяя её веса.
Базовый контур
документы → parse → chunks → index
↓
запрос → query rewrite → retrieve → rerank → context → generate → citations/checksРеальная система не обязана содержать каждый этап. Начни с простого поиска и добавляй сложность только после измеримого провала.
Что RAG может улучшить
- доступ к приватным или изменившимся знаниям;
- проверяемость через координаты источника;
- работу с корпусом больше context window;
- обновление знаний без fine-tuning.
RAG не гарантирует фактическую точность. Retrieval может не найти нужный документ, выбрать неверный фрагмент или передать противоречивые данные; модель может проигнорировать контекст или неверно его пересказать.
Основные решения
| Слой | Вопрос |
|---|---|
| Ingestion | что считать документом и как обрабатывать версии |
| Chunking | где проходят смысловые границы и какие метаданные сохранять |
| Index | keyword, dense, graph или их комбинация |
| Retrieval | как формировать запрос и фильтровать область поиска |
| Reranking | нужен ли второй, более дорогой этап отбора |
| Context assembly | сколько фрагментов передать и как удалить дубли |
| Generation | как цитировать, выражать неопределённость и отказываться без evidence |
| Evaluation | нашли ли evidence и использовал ли его ответ корректно |
RAG и long context
Это не взаимоисключающие подходы. Retrieval выбирает кандидатов из большого корпуса, а context window определяет, сколько выбранного материала модель может обработать за один вызов.
| Выбирай сначала | Когда |
|---|---|
| Long context | небольшой стабильный набор документов, важен полный обзор |
| RAG | большой или часто обновляемый корпус, нужен точечный поиск |
| RAG + long context | нужно собрать несколько крупных первичных источников |
Сравнивай варианты на одинаковом eval set по качеству, latency и полной стоимости. Утверждения «RAG всегда дешевле» и «длинный контекст всегда точнее» неверны.
Минимальные evals
Разделяй ошибки:
- Retrieval: нужный evidence попал в top-k.
- Context: evidence не потерян при обрезке и дедупликации.
- Answer: утверждения поддерживаются переданными источниками.
- Citation: ссылка указывает на правильный фрагмент.
- Freshness: индекс отражает актуальную версию документа.
Добавь негативные вопросы, для которых в корпусе нет ответа. Хорошая система должна признать недостаток evidence.
Безопасность
Retrieved content — недоверенные данные. Он может содержать prompt injection, секреты и устаревшие разрешения. Изоляция инструкций в разметке полезна для модели, но policy enforcement должен находиться в коде и правах tools.
Источники
- Lewis et al. — Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks
- Indirect Prompt Injection — риски внешнего контекста.