Перейти до основного вмісту

Fusion-in-Decoder: як пошук за декількома уривками покращує генеративні відповіді на запитання

· 6 хв. читання
Mike Thrift
Mike Thrift
Marketing Manager

Генерація з доповненим пошуком (RAG) тримається на тому, наскільки добре генератор може синтезувати докази, розкидані по декількох документах. Стаття Ізакарда та Грейва 2021 року для EACL, «Leveraging Passage Retrieval with Generative Models for Open Domain Question Answering», пропонує оманливо просте архітектурне рішення — кодувати уривки незалежно, а потім об’єднувати їх усіх у декодері. Це рішення значно перевершує панівну на той час платформу RAG. Я читаю її зараз, тому що цей принцип дизайну безпосередньо стосується QA для бухгалтерських книг: перш ніж вирішувати, як шукати записи в агентах Beancount, варто зрозуміти, яка стратегія об'єднання (fusion) насправді працює.

Стаття

2026-05-26-fusion-in-decoder-passage-retrieval-generative-qa

Оригінальний RAG від Льюїса та співавт. (arXiv:2005.11401) поєднує щільний пошуковець (dense retriever) із генератором BART, але змушує генератор орієнтуватися лише на один знайдений уривок за раз, усереднюючи результати по уривках або для кожної послідовності (RAG-Sequence), або для кожного токена (RAG-Token). Ізакард та Грейв визначили це як головне обмеження: модель, яка бачить лише один уривок за раз, не може легко зіставити докази, розкидані по різних документах.

Їхнє рішення FiD (Fusion-in-Decoder) є елегантним. Кожен знайдений уривок об’єднується із запитанням, а потім кодується незалежно за допомогою енкодера T5. Енкодер запускається один раз для кожного уривка — це процес, що повністю паралелізується. Потім декодер виконує перехресну увагу (cross-attention) над конкатенацією всіх представлень уривків одночасно. Складність енкодера зростає лінійно залежно від кількості уривків; натомість декодер може звертати увагу на межі уривків під час кожного кроку генерації. У статті як основа генератора використовуються T5-base та T5-large.

Ключові ідеї

  • FiD-large зі 100 знайденими уривками досягає 51,4% точного збігу (exact match) на Natural Questions та 67,6% на TriviaQA open, порівняно з 47,5% та 56,1% у RAG-Sequence відповідно — приріст становить приблизно 4 та 11 пунктів.
  • Ефективність на Natural Questions зростає монотонно зі збільшенням кількості уривків: 37,3% при 1 уривку, 48,8% при 10, 50,8% при 50, 51,4% при 100. Гранична віддача зменшується, але ніколи не стає від’ємною.
  • TriviaQA покращується на 6%, а NaturalQuestions на 3,5% при масштабуванні з 10 до 100 уривків — це доказ того, що декодер дійсно агрегує інформацію, а не просто вибирає найкращий уривок.
  • Крок кодування дешево паралелізувати: кожна пара (запитання, уривок) обробляється незалежно, тому фактичний час виконання (wall-clock time) масштабується сублінійно відносно апаратного забезпечення.
  • FiD-base з 770 млн параметрів перевершує T5-11B у режимі closed-book (44,1% проти 36,6% на NQ), демонструючи, що пошук дозволяє меншим моделям показувати результати, значно вищі за їхню «вагову категорію».

Що залишається актуальним, а що ні

Основний результат є надійним і багаторазово підтвердженим. Архітектурне рішення — незалежне кодування, спільне декодування — є справді чистим: воно дозволяє уникнути квадратичного розростання механізму самостійної уваги (self-attention), яке виникло б при наївному поєднанні всіх уривків перед енкодером, водночас надаючи декодеру глобальний контекст усіх знайдених доказів.

Обмеження, яке в статті майже не згадується, полягає в тому, що перехресна увага декодера стає вузьким місцем під час виводу (inference). Перехресна увага має завантажувати всі пари «ключ-значення» енкодера для кожного шару декодера на кожному кроці генерації, і ці тензори зростають лінійно з кількістю уривків. Дослідження 2023 року FiDO (arXiv:2212.08153) показало, що заміна багатої бокової уваги (multi-head attention) на багатозапитову увагу (multi-query attention) та скорочення шарів перехресної уваги дає 7-кратне прискорення виводу з мінімальною втратою точності — це означає, що оригінальний декодер FiD є суттєво надмірним для цього завдання.

Також існує розрив у калібруванні, який автори не досліджували: стаття повідомляє про точний збіг (exact match), що винагороджує системи, які випадково видають точний канонічний рядок відповіді. Для завдань фактологічного синтезу — узагальнення висновків з багатьох уривків, а не просто вилучення фрагмента тексту — точний збіг недооцінює помилки та переоцінює впевненість. У фінансовому середовищі, де неправильна цифра в інакше правильному реченні є серйозною помилкою, точний збіг — це взагалі хибна метрика.

Чому це важливо для фінансового ШІ

Відповіді на запитання за реєстрами Beancount за своєю природою є проблемою пошуку за багатьма уривками. Питання на кшталт «Скільки я витратив на подорожі у 3 кварталі за всіма рахунками?» вимагає синтезу десятків записів транзакцій з різними датами, рахунками та типами валют. Основний висновок FiD — про те, що генеративні моделі можуть агрегувати дані з багатьох знайдених уривків і що ефективність покращується з розширенням контексту — є безпосередньо обнадійливим.

Практичний висновок для проектування конкретний: при створенні шару QA для Beancount краще отримувати більше потенційних записів (50–100 замість звичайних топ-5) і надавати генератору спільний доступ до всіх них, ніж покладатися на переранжування для вибору однієї правильної відповіді. Архітектура FiD також чітко відповідає структурі реєстру: кожен запис транзакції можна кодувати незалежно (дешево, паралельно), перш ніж декодер синтезує їх усіх.

Занепокоєння щодо вартості виводу є актуальним для розгортання в робочому середовищі, але подальше дослідження FiDO показує, що це можна вирішити на рівні архітектури без втрати точності. Більш нагальним обмеженням для фінансових агентів є те, що FiD розроблений для фактологічних запитань з короткими генеративними виходами. Аналіз реєстрів часто вимагає багатокрокової арифметики — додавання сум, обчислення коефіцієнтів — а генератор FiD не має вбудованого механізму передачі цього інтерпретатору. Поєднання синтезу в стилі FiD з головкою генерації коду в стилі PAL — це логічний наступний крок для досягнення числової точності.

Що почитати далі

  • FiDO (arXiv:2212.08153, ACL Findings 2023) — багатозапитова увага та скорочення перехресної уваги повертають точність FiD при 7-кратному прискоренні виводу; обов'язково до ознайомлення перед впровадженням FiD у продуктив.
  • REALM: Retrieval-Augmented Language Model Pre-Training (arXiv:2002.08909, ICML 2020) — Гуу та співавт. показують, як включити пошук під час попереднього навчання, а не лише під час виводу; дає теоретичне підґрунтя, на якому базується FiD.
  • Atlas: Few-shot Learning with Retrieval Augmented Language Models (arXiv:2208.03299, JMLR 2023) — власне розширення FiD від Ізакарда та ін. для умов навчання з кількома прикладами (few-shot) зі спільним навчанням пошуковця та зчитувача, найбільш повний синтез цього напрямку роботи.