Улучшение качества приложения RAG
В этой статье представлен обзор того, как можно уточнить каждый компонент, чтобы повысить качество приложения для получения дополненного поколения (RAG).
Существует множество "knobs" для настройки в каждой точке как в автономном конвейере данных, так и в сети сети RAG. Хотя есть множество других, статья сосредоточена на наиболее важных ручках, которые имеют наибольшее влияние на качество вашего приложения RAG. Databricks рекомендует начать с этих ножей.
Два типа рекомендаций по качеству
С концептуальной точки зрения полезно просматривать ручки качества RAG через объектив двух ключевых типов проблем качества:
Качество получения: вы извлеките наиболее релевантную информацию для заданного запроса на получение?
Трудно создать высококачественные выходные данные RAG, если контекст, предоставленный LLM, отсутствует важная информация или содержит лишние сведения.
Качество создания: учитывая полученные сведения и исходный запрос пользователя, создается ли LLM наиболее точным, последовательным и полезным ответом?
Здесь проблемы могут проявляться как галлюцинации, несогласованные выходные данные или сбой непосредственного обращения к запросу пользователя.
Приложения RAG имеют два компонента, которые можно итерировать для решения проблем качества: конвейера данных и цепочки. Это заманчиво предположить чистое разделение между проблемами извлечения (просто обновить конвейер данных) и проблемами создания (обновить цепочку RAG). Тем не менее, реальность более нюансов. Качество получения может влиять как на конвейер данных (например, стратегию анализа и блокирования, стратегию метаданных, модель внедрения), так и цепочку RAG (например, преобразование запросов пользователей, количество полученных фрагментов, повторное ранжирование). Аналогичным образом качество создания неизменно влияет на плохое получение (например, неуместные или отсутствующие сведения, влияющие на выходные данные модели).
Это перекрывает необходимость комплексного подхода к улучшению качества RAG. Понимая, какие компоненты следует изменять как в конвейере данных, так и в цепочке RAG, а также как эти изменения влияют на общее решение, можно вносить целевые обновления для улучшения качества выходных данных RAG.
Рекомендации по качеству конвейера данных
Основные аспекты конвейера данных:
- Состав корпуса входных данных.
- Как необработанные данные извлекаются и преобразуются в доступный формат (например, анализ PDF-документа).
- Разделение документов на небольшие блоки и форматирование этих блоков (например, стратегия блокирования и размер блока).
- Метаданные (например, название раздела или название документа), извлеченные о каждом документе и /или блоке. Как эти метаданные включены (или не включены) в каждый блок.
- Модель внедрения, используемая для преобразования текста в векторные представления для поиска сходства.
Цепочка RAG
- Выбор LLM и его параметров (например, температуры и максимальных маркеров).
- Параметры извлечения (например, количество фрагментов или документов, полученных).
- Подход получения (например, ключевое слово против гибридного и семантического поиска, перезапись запроса пользователя, преобразование запроса пользователя в фильтры или повторное ранжирование).
- Как отформатировать запрос с извлеченным контекстом, чтобы помочь LLM получить качество выходных данных.