RocketQA: оптимизированный плотный поиск фрагментов для ответов на вопросы в открытом домене
Представьте, что вы спрашиваете: «Кто изобрел электричество?» — и ожидаете, что система точно определит наиболее релевантный фрагмент среди миллиардов неструктурированных документов, охватывающих разные темы и форматы. Это демонстрирует сложность open-domain question answering (QA), где системы должны быстро извлекать и ранжировать релевантную информацию из больших, неотобранных наборов данных, таких как Wikipedia или веб-архивы. Ранние QA-системы решали эту задачу с помощью сложных конвейеров для таких задач, как анализ вопросов и извлечение документов. Позднее двухэтапный подход упростил процесс, извлекая фрагменты и выделяя точные ответы с использованием методов плотного поиска.
Плотный поиск, использующий архитектуры с двумя энкодерами, представляет вопросы и фрагменты как плотные эмбеддинги для эффективного семантического сопоставления. Однако обучение этих моделей создает несколько проблем, включая расхождения между обучением и инференсом, неверно размеченные положительные примеры и ограниченные аннотированные наборы данных. Чтобы преодолеть эти препятствия, RocketQA, представленная в статье Optimized Training of Dense Retrieval Models with Hard Negatives, предлагает ряд стратегий, включая негативные примеры из разных батчей, очистку сложных негативных примеров от шума и аугментацию данных. Эти методы повышают устойчивость обучения двухэнкодерных моделей и улучшают точность извлечения фрагментов.
В этой статье будут рассмотрены вклады RocketQA в плотный поиск для open-domain QA, включая ее архитектуру и стратегии обучения.
Понимание проблем Open-Domain QA
Системы open-domain QA предназначены для ответа на запросы пользователей путем поиска наиболее релевантного фрагмента в огромном корпусе документов. Эти документы обычно делятся на более мелкие фрагменты, чтобы сделать поиск и извлечение более эффективными. Для каждого извлеченного релевантного фрагмента система также должна определить точный отрезок текста, отвечающий на вопрос.
Эта задача особенно сложна из-за размера и сложности данных. Системы должны балансировать три ключевых аспекта: обеспечивать скорость для извлечения в реальном времени, поддерживать точность, чтобы корректно определять наиболее релевантные фрагменты, и максимизировать полноту, чтобы не пропустить важную информацию. Достижение этого баланса необходимо для эффективной работы open-domain QA.
Системы плотного поиска значительно продвинулись в решении этих проблем, сосредоточившись на семантическом сопоставлении, а не полагаясь исключительно на подходы на основе ключевых слов. Однако, хотя они повышают эффективность и точность в определенных областях, они также сталкиваются с конкретными препятствиями, ограничивающими их производительность.
Пробелы в традиционном плотном поиске
Системы плотного поиска сталкиваются с несколькими ключевыми ограничениями:
Расхождение между обучением и реальным миром: Модели часто обучаются на небольших, тщательно отобранных наборах данных, тогда как реальные системы должны обрабатывать миллиарды фрагментов. Это несоответствие снижает их способность стабильно работать на более крупных и сложных наборах данных.
Разреженные аннотации: Многие наборы данных QA имеют ограниченный объем размеченных данных, часто сопоставляя запросы только с одним или двумя положительными фрагментами. Это приводит к ложным негативным примерам во время обучения, когда релевантные фрагменты ошибочно считаются нерелевантными.
Сложные негативные примеры: Эти системы часто испытывают трудности с фрагментами, которые кажутся релевантными, но на самом деле не отвечают на запрос. Например, запрос о том, «Кто открыл электричество?» может извлечь фрагменты об экспериментах Бенджамина Франклина, которые связаны с темой, но некорректны. Если такими фрагментами неправильно управлять во время обучения, они могут запутать модель и снизить точность извлечения.
Давайте посмотрим, как RocketQA решает эти проблемы, внедряя методы, которые улучшают стратегии обучения и уточняют то, как модели обрабатывают данные.
Что такое RocketQA?
RocketQA — это высокооптимизированный фреймворк плотного поиска пассажей, предназначенный для улучшения систем ответов на вопросы (QA) в открытом домене. Разработанный Baidu, RocketQA использует архитектуру модели с двумя энкодерами для извлечения релевантных пассажей, где энкодеры запросов и документов обучаются совместно для повышения качества поиска. Фреймворк вводит инновационные методы обучения, такие как кросс-батчевый отбор негативных примеров и денойзинг, которые решают распространенные проблемы, включая разреженность негативных примеров и зашумленные обучающие данные.
Как RocketQA улучшает плотный поиск
RocketQA основан на архитектуре с двумя энкодерами, которая обеспечивает эффективное семантическое сопоставление за счет предварительного вычисления плотных эмбеддингов для вопросов и пассажей. Двойной энкодер состоит из двух отдельных энкодеров:
Энкодер вопросов (Eq(q)): Преобразует запрос в плотное векторное представление.
Энкодер пассажей (Ep(p)): Преобразует каждый пассаж в плотное векторное представление.
Сходство между вопросом и пассажем вычисляется как скалярное произведение их эмбеддингов:
sim(q, p) = Eq(q) ⋅ Ep(p)
Такая предварительно вычисленная структура обеспечивает быстрый поиск, поскольку эмбеддинги всех пассажей можно хранить в индексе и повторно использовать для множества запросов. Однако, хотя двойные энкодеры обеспечивают масштабируемость, их способность улавливать тонкие взаимосвязи между запросами и пассажами ограничена.
Чтобы решить эту проблему, RocketQA включает кросс-энкодеры для повышения качества обучения. Кросс-энкодеры обрабатывают запрос и пассаж вместе, что позволяет моделировать более богатые контекстные взаимодействия. Сочетая масштабируемость двойных энкодеров с уточнением, обеспечиваемым кросс-энкодерами, RocketQA достигает баланса между эффективностью и точностью. Вот как работают двойные энкодеры и кросс-энкодеры.
Рисунок: Иллюстрация архитектур двойного энкодера и кросс-энкодера
Двойной энкодер независимо кодирует запрос и пассаж в плотные эмбеддинги. Например, запрос “Кто изобрел электричество?” кодируется в векторное представление на основе его семантического значения, тогда как пассажи вроде “Майкл Фарадей внес значительный вклад в электромагнетизм” и “эксперимент Бенджамина Франклина с воздушным змеем” также кодируются в векторы. Система сравнивает эти векторы, чтобы определить, какой пассаж наиболее похож на запрос. Этот процесс высокоэффективен, поскольку эмбеддинги пассажей можно предварительно вычислить и повторно использовать.
В отличие от этого, кросс-энкодер обрабатывает запрос и пассаж вместе. Вместо того чтобы кодировать их отдельно, он анализирует взаимосвязь между ними. Например, при оценке того же запроса и пассажей кросс-энкодер лучше понимает, что пассаж, упоминающий эксперимент Бенджамина Франклина с воздушным змеем, связан с электричеством, но не отвечает на запрос напрямую. Такое более глубокое понимание достигается ценой вычислительной эффективности, что делает его более подходящим для дообучения и генерации обучающих данных.
Более умный отбор с кросс-батчевыми негативными примерами
Одна из проблем плотного поиска — обучение моделей на разнообразном наборе негативных примеров (пассажей, которые не отвечают на запрос). Традиционные подходы используют негативные примеры внутри батча, которые ограничены пассажами в пределах одного и того же батча. RocketQA решает это ограничение, вводя кросс-батчевые негативные примеры, которые совместно используют негативные примеры между несколькими GPU во время обучения.
Этот подход значительно расширяет пул негативных примеров, делая его более репрезентативным для реальных сценариев. Подвергая модель воздействию более разнообразных и сложных негативных примеров, RocketQA снижает переобучение и повышает ее способность различать релевантные и нерелевантные пассажи.
Рисунок: Сравнение внутрибатчевых и межбатчевых негативных примеров при обучении на нескольких GPU, где A — количество GPU, а B — размер батча.
В отличие от традиционных методов, которые ограничивают негативную выборку уровнем батча, RocketQA позволяет сопоставлять каждый вопрос с негативными примерами из других батчей, повышая разнообразие без необходимости в дополнительной памяти.
Оптимизированная целевая функция обучения
Процесс обучения в RocketQA сосредоточен на улучшении способности модели выявлять релевантные фрагменты для заданного запроса путем оптимизации функции потерь. Эта функция потерь побуждает модель присваивать более высокие оценки сходства положительным парам запрос-фрагмент (релевантные фрагменты) и более низкие оценки отрицательным парам запрос-фрагмент (нерелевантные фрагменты).
Функция потерь выражается следующим образом:
L(qi, p⁺i, {p⁻i,j}) = - log ( exp(sim(qi, p⁺i)) / ( exp(sim(qi, p⁺i)) + Σj=1^m exp(sim(qi, p⁻i,j)) ) )
Вот как работает оптимизация:
Положительные фрагменты (p⁺i): Для каждого запроса qi модель определяет положительный фрагмент, помеченный как релевантный. Цель состоит в том, чтобы максимизировать оценку сходства sim(qi, p⁺i), которая измеряет, насколько точно запрос и положительный фрагмент соответствуют друг другу.
Отрицательные фрагменты (p⁻i,j): Для того же запроса qi вводится несколько отрицательных фрагментов (нерелевантных запросу). Модель обучается присваивать этим фрагментам более низкие оценки сходства sim(qi, p⁻i,j).
Балансировка оценок: Знаменатель функции потерь включает оценки сходства как положительных, так и отрицательных фрагментов. Минимизируя эту потерю, модель учится увеличивать оценку сходства положительного фрагмента относительно отрицательных фрагментов.
Визуализация процесса: Представьте эту оптимизацию как преобразование семантического пространства. Эмбеддинги релевантных фрагментов притягиваются ближе к запросу в семантическом пространстве, тогда как эмбеддинги нерелевантных фрагментов отталкиваются дальше.
Улучшение ранжирования: Результатом этой оптимизации становится модель, которая ранжирует положительные фрагменты выше отрицательных для заданного запроса, повышая способность системы точно извлекать релевантную информацию.
Оптимизируя эту функцию потерь, RocketQA обеспечивает более эффективное различение релевантных и нерелевантных фрагментов своей моделью плотного поиска даже в сценариях, где отрицательные примеры контекстуально похожи. Это улучшение напрямую повышает точность и полноту поисковой системы, обеспечивая лучшую производительность в задачах QA с открытой предметной областью.
Обучение RocketQA: четырехэтапный конвейер оптимизации
Процесс обучения RocketQA реализован через структурированный четырехэтапный конвейер, который систематически уточняет dual-encoder для улучшения его поисковых возможностей. Каждый этап опирается на предыдущий, чтобы решить ключевые проблемы, которые мы обсуждали, такие как работа со сложными отрицательными примерами, диверсификация обучающих примеров и компенсация разреженных аннотаций.
Рисунок: Четыре этапа конвейера обучения RocketQA:
Вот что включает каждый этап:
1. Межбатчевая негативная выборка
Сначала dual-encoder обучается с использованием межбатчевых отрицательных примеров, которые совместно используют отрицательные фрагменты между GPU. Это увеличивает разнообразие отрицательных примеров, доступных для обучения, помогая модели эффективнее имитировать реальные условия. Используя эту технику, RocketQA знакомит модель с более сложными отрицательными примерами, уточняя ее способность различать релевантные и нерелевантные фрагменты.
2. Тонкая настройка Cross-Encoder
После начального обучения cross-encoder дообучается для оценки пар запрос–пассаж с более глубоким контекстным пониманием. Cross-encoder выявляет сложные hard negatives, которые затем используются для дальнейшего уточнения dual-encoder. Этот шаг гарантирует, что dual-encoder извлекает пользу из более глубоких реляционных инсайтов cross-encoder.
3. Очищение Hard Negatives от шума
Dual-encoder переобучается с очищенными от шума hard negatives, отобранными cross-encoder. Этот процесс снижает шум в обучающих данных за счет исключения неверно размеченных или менее информативных негативных примеров. В результате модель фокусируется на значимых различиях между релевантными и нерелевантными пассажами, повышая точность.
4. Аугментация данных
На финальном этапе cross-encoder генерирует псевдометки для обогащения обучающего набора данных. Эти псевдометки помогают решить проблему разреженных аннотаций, создавая дополнительные размеченные данные, что позволяет dual-encoder лучше обобщать результаты на разнообразные запросы.
Этот структурированный процесс гарантирует, что RocketQA эффективно интегрирует улучшения, рассмотренные ранее, в целостный и оптимизированный рабочий процесс, в конечном итоге повышая его производительность в задачах плотного поиска.
Производительность RocketQA на бенчмарках
После оптимизации своего обучающего конвейера RocketQA демонстрирует высокую производительность на различных бенчмарках вопросно-ответных систем (QA) открытого домена. Эти бенчмарки оценивают, насколько хорошо RocketQA извлекает релевантные пассажи из разных наборов данных, каждый из которых представляет уникальные вызовы, такие как сложные запросы, разреженные аннотации или вводящие в заблуждение негативные примеры.
Он был протестирован на MS MARCO, Natural Questions и TriviaQA. MS MARCO сосредоточен на сопоставлении пользовательских запросов с релевантными и нерелевантными пассажами, подчеркивая точность поиска. Natural Questions содержит реальные пользовательские запросы из Google Search, требуя от систем выявлять релевантные пассажи из Wikipedia. TriviaQA задает вопросы в стиле викторины, которые часто требуют контекстного рассуждения и более глубокого понимания для извлечения точных ответов.
Он достигает Mean Reciprocal Rank (MRR@10) 37.0 на наборе данных MS MARCO, превосходя другие плотные ретриверы, такие как DPR и ANCE, которые набрали 32.7 и 33.0 соответственно. Модель также хорошо показывает себя на наборе данных Natural Questions (NQ), достигая показателя полноты (R@100) 88.5, по сравнению с 87.5 у ANCE и 85.4 у DPR. Эти результаты показывают, что RocketQA способен извлекать релевантные пассажи с более высокой точностью и полнотой после оптимизации.
Будущие направления для RocketQA
Успех RocketQA на разнообразных бенчмарках подчеркивает его силу как системы плотного поиска. Тем не менее, по мере того как вопросно-ответные системы открытого домена становятся сложнее, появляются явные возможности для уточнения его возможностей, устранения ограничений и расширения функциональности для соответствия новым вызовам и сценариям использования.
Интеграция мультимодального поиска
Выход за пределы текста для включения мультимодальных данных, таких как изображения, видео и структурированные данные, позволил бы RocketQA обрабатывать более богатые и разнообразные запросы. Например, запрос вроде Объясните информацию на этой диаграмме о глобальном потеплении потребовал бы интеграции визуального и текстового понимания. Сочетание модальностей сделало бы RocketQA применимым в таких областях, как медицинская диагностика, научные исследования и мультимедийный поиск.
Контекстно-ориентированная персонализация
Включение пользовательского контекста в процесс поиска RocketQA может повысить релевантность результатов. Встраивая сигналы из истории или предпочтений пользователя, модель могла бы адаптировать ответы под индивидуальные потребности. Например, студент, исследующий энергетику, может предпочесть упрощенные объяснения, тогда как эксперт в предметной области получил бы пользу от подробных результатов с обилием источников.
Доменная кастомизация
Тонкая настройка RocketQA на предметно-специфичных наборах данных — таких как юридические документы или медицинская литература — могла бы повысить его производительность в специализированных областях. Интеграция с графами знаний также улучшила бы точность за счет использования структурированных связей (например, симптомы → заболевания в здравоохранении). Такой подход сделал бы RocketQA более эффективным в таких отраслях, как право, медицина и инженерия.
Заключение
RocketQA переопределил плотный поиск для ответов на вопросы в открытой предметной области, преодолев такие трудности, как разреженные аннотации, сложные отрицательные примеры и требования крупномасштабного поиска. Его сочетание архитектур dual- и cross-encoder, наряду со стратегиями вроде cross-batch negatives и оптимизированного обучения, обеспечивает как масштабируемость, так и точность.
Благодаря подтвержденному успеху на бенчмарках и потенциалу расширения в мультимодальный поиск, предметно-специфичные приложения и персонализированные системы, RocketQA готов возглавить дальнейшие достижения в сфере ответов на вопросы. По мере развития требований к open-domain QA RocketQA предоставляет прочную, адаптируемую основу для точной и эффективной обработки сложных запросов.
Дополнительные ресурсы
Читать далее

Notion's Vector Search Is Excellent. Their Next Problem Is Harder.
Notion solved vector search scaling in two years. The next bottleneck — offline context engineering, unified data, and the real-time/offline gap — is harder.

Why Teams Are Migrating from Weaviate to Zilliz Cloud — and How to Do It Seamlessly
Explore how Milvus scales for large datasets and complex queries with advanced features, and discover how to migrate from Weaviate to Zilliz Cloud.

Zilliz Named "Highest Performer" and "Easiest to Use" in G2's Summer 2025 Grid® Report for Vector Databases
Zilliz shines in G2's Summer 2025 Grid® Report as both "Highest Performer" and "Easiest to Use," solving the performance-usability dilemma.


