Продвинутые техники RAG не лучше. Они лучше лишь иногда.
Продвинутые техники RAG — это не бесплатные улучшения. Это инструменты, требующие компромиссов.
Я добавил пять техник поиска (retrieval) в RAG-конвейер, чтобы протестировать их. Самым важным результатом стала техника, которая не сработала.
Я ожидал, что HyDE улучшит поиск. Вместо этого на определенных запросах она дала обратный эффект. Полнота (Recall) упала с 0,80 до 0,17. Техника не просто не помогла — она активно подтягивала неверные данные в результаты.
Каждая протестированная мною продвинутая техника работает следующим образом:
- Гибридный поиск (BM25 + dense): отлично подходит для точных терминов. Используйте его, когда ваш запрос опирается на конкретные параметры.
- HyDE: отлично подходит для повседневных вопросов, которые не совпадают по лексике с документами. Она дает сбой, когда запрос уже хорошо соответствует корпусу текстов.
- Переранжирование (Reranking): отлично подходит, когда нужный фрагмент (chunk) есть в результатах, но находится слишком низко в списке.
- Контекстуальный поиск (Contextual retrieval): отлично подходит для коротких фрагментов, которым не хватает контекста. Это увеличивает стоимость, так как для каждого фрагмента приходится использовать LLM.
Я построил этот конвейер, используя документацию Anthropic. Я использовал Postgres с pgvector и индексом HNSW. Я подходил к этому как бэкенд-инженер. Я не спрашивал, является ли техника передовой (state of the art). Я спрашивал, оправдывает ли она свою сложность.
Каждый добавленный компонент — это то, чем вам придется управлять, что нужно отлаживать и за что придется платить.
Прежде чем добавлять сложные инструменты, я измерил базовый уровень (baseline), используя обычный плотный поиск (dense retrieval).
Результаты показали две разные метрики:
- Верность (Faithfulness): 0,96
- Точность контекста (Context precision): 0,60
Эти данные полностью изменили мой подход. Большинство техник нацелено на поиск. Моим слабым местом был именно поиск. Если бы низким был показатель верности (faithfulness), я бы настраивал промпты. Поскольку низким был показатель поиска, мне пришлось настраивать сам поиск.
Я также извлек урок из работы с инструментами оценки. Я пробовал использовать Ragas, но он работал слишком медленно. Он пытался повторно выполнить неудачные вызовы, и это занимало часы. Вместо этого я написал собственный асинхронный каркас (async harness). Я получил те же метрики за 221 секунду вместо 11 часов.
Вывод прост:
Не применяйте техники вслепую. Используйте маршрутизатор запросов (query router), чтобы выбирать правильный режим для правильного вопроса. Сначала измерьте свои данные. Затем выберите инструмент, который устраняет конкретный тип вашей ошибки.
Модель — новая. Инженерная дисциплина — нет.
Источник: https://dev.to/yogesh23012001/advanced-rag-techniques-arent-better-theyre-better-sometimes-4m2o
