Retrieval-Augmented Generation (RAG): Последние Исследования и Вызовы

В современном мире AI-технологий Retrieval-Augmented Generation (RAG) становится все более значимым подходом, сочетающим возможности информационного поиска с генеративными способностями больших языковых моделей (LLM). Это позволяет преодолеть ряд ограничений, с которыми сталкиваются традиционные LLM, и обеспечить более точные и основанные на фактах ответы.

Что такое RAG?

RAG — это не отдельная технология, а целый «зонтик» различных компонентов, дизайнерских решений и адаптаций для конкретных доменов. Типичная RAG-система включает:

  1. Компонент приема данных: где данные обрабатываются, встраиваются и сохраняются как контекстные документы в векторной базе данных
  2. Компонент извлечения: где контекстные документы извлекаются и ранжируются по релевантности запросу
  3. Компонент запроса: где промпт с запросом комбинируется с результатами поиска и отправляется в LLM

Методология оценки RAG-систем

Недавние исследования, включая работу Саймона и коллег из Лейпцигского университета, предлагают методологическую основу для оценки RAG-систем. Их подход включает:

  • Независимые переменные: архитектура RAG (модели встраивания, методы поиска, фильтры) и источники контекста
  • Зависимые переменные: метрики эффективности RAG
  • Оценка: сравнение с базовой моделью (обычно ванильной LLM) и использование бенчмарков
  • Улучшения: анализ ошибок и систематические улучшения

Одним из важнейших аспектов разработки успешной системы Retrieval-Augmented Generation (RAG) является её оценка с использованием объективных метрик. Без надлежащего измерения производительности невозможно определить, действительно ли система работает как задумано и где требуются улучшения.

Четыре ключевые метрики для оценки RAG-систем

Существует четыре основные метрики, которые следует использовать для всесторонней оценки вашего RAG-пайплайна:

  1. Точность информации (Faithfulness)

Метрика точности информации измеряет, насколько сгенерированный ответ фактически соответствует предоставленному контексту. По сути, эта метрика показывает, не придумывает ли модель факты, которых нет в извлеченных документах.

  • Оценивается по шкале от 0 до 1
  • Более высокие значения указывают на лучшую фактическую точность
  • Низкий показатель может сигнализировать о проблеме «галлюцинаций» модели
  1. Релевантность ответа (Answer Relevance)

Эта метрика оценивает, насколько прямо и адекватно сгенерированный ответ отвечает на исходный вопрос пользователя. Даже если ответ фактически точен, он может быть бесполезен, если не отвечает именно на тот вопрос, который был задан.

  • Использует среднее косинусное сходство между исходным вопросом и вопросами, сгенерированными на основе ответа
  • Высокие показатели указывают на лучшую релевантность
  • Помогает выявить случаи, когда система отклоняется от темы вопроса
  1. Точность контекста (Context Precision)

Данная метрика оценивает, насколько эффективно компонент извлечения информации ранжирует релевантные документы выше, чем нерелевантные. Высокая точность контекста означает, что система извлекает именно те документы, которые необходимы для ответа.

  • Диапазон значений от 0 до 1
  • Более высокие значения указывают на лучшую точность
  • Критически важна для эффективного использования ограниченного контекстного окна модели
  1. Полнота контекста (Context Recall)

Метрика полноты измеряет, насколько хорошо извлеченный контекст соответствует эталонному ответу. То есть, содержит ли найденный контекст всю необходимую информацию для составления полного и правильного ответа.

  • Оценивается от 0 до 1
  • Высокие значения указывают на лучшее соответствие эталонной истине
  • Помогает выявить случаи, когда система упускает критически важную информацию

Автоматизация оценки с библиотекой Ragas

Библиотека Ragas значительно упрощает процесс оценки RAG-систем по вышеперечисленным метрикам. С её помощью разработчики могут создать набор данных, содержащий вопросы, ответы и соответствующие контексты, а затем оценить их по нескольким метрикам одновременно.

Такой подход к оценке позволяет не только выявить текущие недостатки RAG-системы, но и отслеживать прогресс при внесении улучшений в различные компоненты пайплайна — от векторного поиска до промптов для генеративной модели.

Регулярная оценка по этим метрикам должна стать неотъемлемой частью цикла разработки любой RAG-системы, особенно при внедрении в критически важные домены, где точность и надежность информации имеют первостепенное значение.

Пример кода:

from ragas import SingleTurnSample
from ragas.metrics import AspectCritic

test_data = {
    "user_input": "summarise given text\nThe company reported an 8% rise in Q3 2024, driven by strong performance in the Asian market. Sales in this region have significantly contributed to the overall growth. Analysts attribute this success to strategic marketing and product localization. The positive trend in the Asian market is expected to continue into the next quarter.",
    "response": "The company experienced an 8% increase in Q3 2024, largely due to effective marketing strategies and product adaptation, with expectations of continued growth in the coming quarter.",
}
evaluator_llm = LangchainLLMWrapper(ChatOpenAI(model="gpt-4o"))
metric = AspectCritic(name="summary_accuracy",llm=evaluator_llm, definition="Verify if the summary is accurate.")
await metric.single_turn_ascore(SingleTurnSample(**test_data))

Репозиторий

Основные вызовы RAG

Современные RAG-системы сталкиваются с несколькими ключевыми вызовами:

  1. Релевантность поиска: Обеспечение того, чтобы извлеченная информация была действительно релевантна запросу
  2. Интеграция информации: Эффективное объединение найденной информации из разных источников
  3. Качество источников: Определение и использование надежных источников данных
  4. Эффективное промптирование: Разработка оптимальных промптов для LLM с использованием извлеченного контекста

Последние исследования

Контекстуальное извлечение: революционное улучшение в RAG

Для эффективной работы с пользователями AI-модели часто нуждаются в доступе к специфическим знаниям. Например, чат-боты поддержки должны знать о продуктах компании, а юридические ассистенты — о множестве прецедентов. Традиционный подход к расширению знаний модели — это Retrieval-Augmented Generation (RAG), который извлекает релевантную информацию из базы знаний и добавляет её в запрос пользователя.

Однако у традиционного RAG есть существенный недостаток: при обработке информации часто теряется контекст, что приводит к неудачам при извлечении нужных данных.

Anthropic представила метод, значительно улучшающий этап извлечения в RAG-системах. Метод называется «Контекстуальное извлечение» (Contextual Retrieval) и использует две подтехники:

  1. Контекстуальные эмбеддинги (Contextual Embeddings)
  2. Контекстуальный BM25 (Contextual BM25)

Эти техники помогают сохранить контекст при обработке фрагментов документов, что критически важно для точного извлечения информации.

Contextual Retrieval

Как работает контекстуальное извлечение?

В традиционном RAG документы разбиваются на маленькие фрагменты, которые затем преобразуются в векторные эмбеддинги или индексируются для поиска по ключевым словам. Проблема возникает, когда отдельные фрагменты не содержат достаточного контекста.

Например, если у вас есть финансовый отчет с фразой: «Выручка компании выросла на 3% по сравнению с предыдущим кварталом», то без дополнительного контекста непонятно, о какой компании идет речь и за какой период.

Контекстуальное извлечение решает эту проблему, добавляя к каждому фрагменту специфический поясняющий контекст перед созданием эмбеддингов или BM25-индекса:



Оригинальный фрагмент = "Выручка компании выросла на 3% по сравнению с предыдущим кварталом."

Контекстуализированный фрагмент = "Этот фрагмент из отчета SEC о показателях компании ACME за 2 квартал 2023; выручка за предыдущий квартал составила $314 миллионов. Выручка компании выросла на 3% по сравнению с предыдущим кварталом."

Эксперименты показали, что:

  • Контекстуальные эмбеддинги снизили частоту неудачных извлечений топ-20 фрагментов на 35% (с 5.7% до 3.7%)
  • Комбинация контекстуальных эмбеддингов и контекстуального BM25 снизила частоту неудач на 49% (с 5.7% до 2.9%)
  • При добавлении этапа ре-ранжирования результатов, частота неудач снизилась на 67% (с 5.7% до 1.9%)

Для автоматизации процесса добавления контекста Anthropic использует Claude. Специальный промпт инструктирует модель предоставлять краткий, специфический для фрагмента контекст, объясняющий его место в общем документе. Результат — короткий контекстуальный текст (50-100 токенов), который добавляется к фрагменту перед созданием эмбеддингов и BM25-индекса.

Anthropic рекомендует:

  1. Для небольших баз знаний (менее 200,000 токенов, примерно 500 страниц) — просто включайте всю базу знаний в промпт. С недавно выпущенным кэшированием промптов для Claude этот подход стал значительно быстрее и экономичнее.
  2. Для более крупных баз знаний — используйте контекстуальное извлечение, возможно в сочетании с ре-ранжированием для достижения наилучших результатов.

LongRAG

Одним из интересных недавних исследований является LongRAG — парадигма RAG, предназначенная для работы с длинными контекстами при ответах на вопросы. LongRAG решает две основные проблемы традиционных RAG-систем: разрыв глобальной структуры при разбиении на чанки и сложность идентификации фактических деталей среди большого объема шума. LongRAG включает четыре ключевых компонента: гибридный ретривер, LLM-расширенный экстрактор информации, CoT-управляемый фильтр и LLM-расширенный генератор. Система работает с двух перспектив: извлечение глобальной информации для понимания структуры и контекста, а также извлечение фактических деталей для точных ответов. Эксперименты на нескольких датасетах с многоходовыми вопросами показали, что LongRAG значительно превосходит как модели с длинным контекстом (на 6.94%), так и передовые RAG-системы (на 6.16%) и обычный Vanilla RAG (на 17.25%).

LongRAG

Источник

ChunkRAG

Традиционные RAG-системы часто извлекают избыточную или слабо релевантную информацию, что приводит к фактическим неточностям и галлюцинациям в генерируемых ответах. Существующие подходы к документальному поиску не обладают достаточной гранулярностью для эффективной фильтрации несущественного контента.

Исследователи из Algoverse AI Research представили ChunkRAG — новую методологию, которая улучшает процесс отбора информации через семантическую сегментацию и оценку фрагментов текста. Вместо работы с целыми документами система разделяет их на семантически связные фрагменты переменной длины и оценивает релевантность каждого фрагмента по отношению к запросу.

ChunkRAG работает в два основных этапа:

  1. Семантическая сегментация: Документ разбивается на предложения, которые группируются в семантически связные блоки на основе косинусного сходства их векторных представлений. Если сходство между последовательными предложениями падает ниже порогового значения (θ = 0,8), создается новый фрагмент.
  2. Гибридный поиск и расширенная фильтрация: Система использует комбинацию BM25 и поиска на основе LLM с последующим многоуровневым процессом оценки релевантности каждого фрагмента. Фрагменты, превышающие определенный порог сходства (> 0,9), удаляются как избыточные.

В экспериментах на датасетах PopQA, PubHealth и Biography, ChunkRAG продемонстрировал лучшие результаты по сравнению с современными RAG-методами. На PopQA система достигла точности 64,9%, на PubHealth — 77,3%, а на Biography — оценку FactScore 86,4%.

Особенно заметны улучшения в задачах, требующих высокой фактической точности, где даже небольшие нерелевантные сегменты могут привести к галлюцинациям модели.

Несмотря на впечатляющие результаты, ChunkRAG имеет некоторые ограничения, включая высокие вычислительные затраты из-за многоуровневой оценки LLM и более медленное время обработки. Будущие исследования могут быть направлены на оптимизацию производительности и исследование доменно-специфических пороговых значений для различных типов задач.

HtmlRAG

Традиционно RAG-системы используют обычный текст (plain text) в качестве формата для извлеченных знаний. Однако исследователи из Китая предложили инновационный подход: использовать HTML вместо обычного текста.

Почему HTML лучше обычного текста для RAG-систем:

  1. Сохраняет структурную информацию документов (заголовки, таблицы)
  2. Сохраняет семантические элементы (теги code, a и другие)
  3. Большинство LLM уже обладают способностью понимать HTML-разметку

Использование HTML в RAG вызывает ряд проблем:

  1. Избыточный размер. HTML-документы с веб-страниц содержат в среднем более 80K токенов, причем 90% из них — это CSS-стили, JavaScript и другие элементы, не относящиеся к основному содержанию.
  2. Шум в данных. Дополнительные элементы HTML могут создавать шум, который снижает качество генерации LLM.

Для решения этих проблем авторы исследования предложили метод HtmlRAG, который включает:

  1. HTML Cleaning — модуль очистки HTML от семантически нерелевантной информации
  2. Двухэтапное блочное обрезание HTML:
    • Обрезание на основе текстовых эмбеддингов
    • Генеративное обрезание на основе более мелких блоков

Результаты экспериментов на шести наборах данных для вопросно-ответных систем подтверждают превосходство HTML над обычным текстом в RAG-системах

FastRAG: подход к работе с полуструктурированными данными

Исследователи из NIST представили модель под названием FastRAG, специально разработанную для работы с полуструктурированными данными, такими как сетевые логи и конфигурации.

Ключевые преимущества FastRAG:

  1. Эффективность обработки: FastRAG обрабатывает исходные данные без необходимости отправки всех фрагментов через LLM, что значительно сокращает время и стоимость обработки.
  2. Использование схем и скриптов: Система применяет схемы и скрипты для структурирования данных, что делает процесс извлечения информации более эффективным.
  3. Интеграция поиска по тексту и графу знаний: FastRAG объединяет текстовый поиск с запросами к графам знаний, что повышает точность извлечения информации с контекстом.
  4. Впечатляющие результаты: По сравнению с существующими методами, такими как GraphRAG, FastRAG демонстрирует улучшение до 90% по времени и до 85% по стоимости обработки.

Astute RAG

Retrieval-Augmented Generation (RAG) стал стандартным подходом для решения задач, требующих обширных знаний с помощью больших языковых моделей (LLM). Однако недавнее исследование «Astute RAG: Overcoming Imperfect Retrieval Augmentation and Knowledge Conflicts for Large Language Models» выявило серьезную проблему: несовершенный поиск может значительно снизить эффективность RAG-систем. Исследователи из Google Cloud AI Research и Университета Южной Калифорнии обнаружили, что примерно 70% извлеченных пассажей в реальных условиях не содержат прямых ответов на вопросы, что приводит к снижению производительности LLM с RAG-дополнением.

Astute RAG

Центральной проблемой оказался конфликт между внутренними знаниями модели и внешней информацией. Анализ показал, что примерно в 19,2% случаев возникает конфликт знаний, когда либо ответ с использованием RAG, либо без него является корректным. При этом внутренние знания модели оказываются правильными в 47,4% случаев конфликта, а внешние знания — в 52,6%.

Для преодоления этих проблем авторы предложили новый подход — Astute RAG, который:

  1. Адаптивно извлекает важную информацию из внутренних знаний LLM
  2. Итеративно объединяет внутренние и внешние знания с учетом источников
  3. Формирует окончательный ответ на основе надежности информации

Эксперименты с моделями Gemini и Claude продемонстрировали превосходство Astute RAG над другими методами RAG, созданными для повышения устойчивости к ошибкам поиска. Примечательно, что Astute RAG — единственный подход, который достигает или превосходит производительность LLM без RAG даже в наихудших сценариях.

Эти исследования особенно важны для практических применений RAG-систем, где качество поиска может варьироваться. Умение эффективно сочетать внутренние знания моделей с внешней информацией позволяет создавать более надежные и устойчивые системы искусственного интеллекта для решения сложных задач, требующих обширных и актуальных знаний.

Источник

Rankify

Недавно исследователи из Университета Инсбрука представили новый инструмент под названием Rankify — комплексный Python-фреймворк, объединяющий процессы поиска, переранжирования и генерации с использованием извлеченных данных.

Ключевые особенности Rankify:

  1. Модульная архитектура: Rankify предлагает единый интерфейс для различных компонентов RAG-систем, что позволяет легко экспериментировать с разными методами.
  2. Поддержка разнообразных методов поиска: Инструмент интегрирует как разреженные (BM25), так и плотные нейронные методы поиска (DPR, ANCE, BGE, Contriever, ColBERT).
  3. Расширенные возможности переранжирования: Rankify поддерживает 24 модели переранжирования с 41 под-методом, включая поточечное, попарное и списочное ранжирование.
  4. Готовые наборы данных: Фреймворк предоставляет 40 предварительно обработанных наборов данных для тестирования и сравнения различных RAG-подходов.
  5. Инструменты оценки: Встроенные метрики для оценки качества поиска, переранжирования и генерации ответов.

Доступные rerankers:

# BM25 retrieval on Wikipedia
bm25_retriever_wiki = Retriever(method="bm25", n_docs=5, index_type="wiki")

# BM25 retrieval on MS MARCO
bm25_retriever_msmacro = Retriever(method="bm25", n_docs=5, index_type="msmarco")


# DPR (multi-encoder) retrieval on Wikipedia
dpr_retriever_wiki = Retriever(method="dpr", model="dpr-multi", n_docs=5, index_type="wiki")

# DPR (multi-encoder) retrieval on MS MARCO
dpr_retriever_msmacro = Retriever(method="dpr", model="dpr-multi", n_docs=5, index_type="msmarco")

# DPR (single-encoder) retrieval on Wikipedia
dpr_retriever_wiki = Retriever(method="dpr", model="dpr-single", n_docs=5, index_type="wiki")

# DPR (single-encoder) retrieval on MS MARCO
dpr_retriever_msmacro = Retriever(method="dpr", model="dpr-single", n_docs=5, index_type="msmarco")

# ANCE retrieval on Wikipedia
ance_retriever_wiki = Retriever(method="ance", model="ance-multi", n_docs=5, index_type="wiki")

# ANCE retrieval on MS MARCO
ance_retriever_msmacro = Retriever(method="ance", model="ance-multi", n_docs=5, index_type="msmarco")


# Contriever retrieval on Wikipedia
contriever_retriever_wiki = Retriever(method="contriever", model="facebook/contriever-msmarco", n_docs=5, index_type="wiki")

# Contriever retrieval on MS MARCO
contriever_retriever_msmacro = Retriever(method="contriever", model="facebook/contriever-msmarco", n_docs=5, index_type="msmarco")


# ColBERT retrieval on Wikipedia
colbert_retriever_wiki = Retriever(method="colbert", model="colbert-ir/colbertv2.0", n_docs=5, index_type="wiki")

# ColBERT retrieval on MS MARCO
colbert_retriever_msmacro = Retriever(method="colbert", model="colbert-ir/colbertv2.0", n_docs=5, index_type="msmarco")


# BGE retrieval on Wikipedia
bge_retriever_wiki = Retriever(method="bge", model="BAAI/bge-large-en-v1.5", n_docs=5, index_type="wiki")

# BGE retrieval on MS MARCO
bge_retriever_msmacro = Retriever(method="bge", model="BAAI/bge-large-en-v1.5", n_docs=5, index_type="msmarco")


# Hyde retrieval on Wikipedia
hyde_retriever_wiki = Retriever(method="hyde" , n_docs=5, index_type="wiki", api_key=OPENAI_API_KEY )

# Hyde retrieval on MS MARCO
hyde_retriever_msmacro = Retriever(method="hyde", n_docs=5, index_type="msmarco", api_key=OPENAI_API_KEY)

Исследователи провели обширное тестирование Rankify на различных наборах данных. Особенно интересны результаты сравнения различных моделей поиска и их влияния на точность генерации ответов:

  • Для набора данных Natural Questions (NQ) лучшие результаты показал DPR в сочетании с LLaMA V3 8B, достигая точности 28.08%
  • Для TriviaQA наиболее эффективным оказался BM25 с моделью Gemma 2 9B (57.55%)
  • На наборе WebQuestions снова лидировал DPR с LLaMA V3 8B (19.83%)

Это демонстрирует, что выбор оптимальной стратегии поиска и генерации зависит от конкретной задачи и набора данных.

Репозиторий

От Нативного RAG к Агентскому RAG

В современном мире искусственного интеллекта технология Retrieval-Augmented Generation (RAG) стала одним из ключевых подходов к обработке информации. Однако на смену классическому RAG приходит новая парадигма — Агентский RAG (Agentic RAG), представляющий собой значительный шаг вперед в области интеллектуальной обработки документов.

Agentic RAG

Нативный RAG, который широко используется сегодня, представляет собой последовательный процесс, включающий извлечение информации, ее ранжирование, синтез и генерацию ответа. Этот подход объединяет методы извлечения и генерации для предоставления точных и контекстуально релевантных ответов.

Агентский RAG выводит эту концепцию на качественно новый уровень. Это продвинутый подход, основанный на использовании автономных агентов для обработки и анализа множества документов скоординированным образом. Он позволяет сравнивать различные документы, составлять специализированные резюме и сопоставлять различные сводки информации.

Архитектура Агентского RAG основана на двух основных типах компонентов:

  1. Агенты документов: Каждому документу назначается выделенный агент, способный отвечать на вопросы и составлять резюме в рамках своего документа. Эти агенты действуют как эксперты по конкретному контенту.
  2. Мета-агент: Агент верхнего уровня, который координирует работу всех агентов документов, оркестрируя их взаимодействие и интегрируя их выводы для формирования связного и всеобъемлющего ответа.

Агентский RAG обладает рядом существенных преимуществ по сравнению с традиционными подходами:

  • Автономность: Агенты действуют независимо для извлечения, обработки и генерации информации, что значительно увеличивает масштабируемость системы.
  • Адаптивность: Система способна корректировать стратегии на основе новых данных и изменяющихся контекстов, что делает ее более гибкой в реальных сценариях использования.
  • Проактивность: Агенты могут предвидеть потребности и предпринимать упреждающие действия для достижения целей, что повышает эффективность работы системы в целом.

Агентский RAG особенно полезен в сценариях, требующих тщательной и нюансированной обработки информации и принятия решений. Это могут быть:

  • Анализ больших массивов научных публикаций
  • Юридические исследования и анализ прецедентов
  • Финансовый анализ и прогнозирование
  • Медицинская диагностика на основе разнородных источников данных

Выводы

RAG представляет собой важный подход в современных AI-технологиях, сочетающий информационный поиск с генеративными возможностями больших языковых моделей. Вот основные выводы из статьи:

  1. RAG — это не отдельная технология, а комплексная архитектура с тремя ключевыми компонентами: прием данных, извлечение информации и компонент запроса для работы с LLM.
  2. Оценка RAG-систем требует комплексного подхода с использованием четырех ключевых метрик: точность информации (Faithfulness), релевантность ответа, точность контекста и полнота контекста.
  3. Последние исследования в области RAG включают инновационные подходы:
    • Контекстуальное извлечение (от Anthropic)
    • LongRAG для работы с длинными контекстами
    • ChunkRAG для улучшения релевантности извлеченных фрагментов
    • HtmlRAG для сохранения структурной информации
    • FastRAG для эффективной работы с полуструктурированными данными
    • Astute RAG для решения проблемы конфликтов знаний
  4. Агентский RAG представляет следующий эволюционный шаг в развитии этой технологии, используя автономных агентов для обработки информации из множества документов скоординированным образом.
  5. Основные вызовы RAG-систем включают релевантность поиска, интеграцию информации из разных источников, качество источников и эффективное промптирование.

Эти улучшения позволяют RAG-системам предоставлять более точные, основанные на фактах ответы, преодолевая ограничения традиционных языковых моделей.

Share it

Если вам понравилась заметка - подписывайтесь на мой канал в телеграме https://t.me/renat_alimbekov


Интересные записи в этой рубрике: