Реалізація Multi-Index RAG: об’єднання кількох джерел

Розрізнені системи відповідають по-різному, і керівник не отримує цілісної картини. Ми розробляємо Multi-Index RAG під ключ: об’єднуємо джерела в єдиний контур пошуку, щоб відповіді стали точнішими й не залежали від того, куди потрапив запит. Точність зростає, а підготовка зведень займає у рази менше часу.
Часті запитання

Чому Multi-Index RAG: один індекс не витягує різнорідні дані

Єдиний індекс будується в припущенні, що всі дані говорять однією мовою. На практиці в нього потрапляють регламенти у PDF, тікети підтримки, вивантаження з облікової системи, листи й скани договорів.

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

Вузьке місце виникає на етапі відбору кандидатів, до будь-якого синтезу відповіді. Щільні вектори добре уловлюють смислову близькість, але розмивають точні ідентифікатори — артикул, номер договору, код помилки, прізвище: після усереднення вони майже не розрізненні.

Лексичний пошук за ключовими словами, навпаки, надійний на точних збігах і безпорадний там, де питання задано перефразуванням.

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

Середня релевантність при цьому виглядає прийнятно — провал видно не в метриках, а на конкретних запитах, де відповідь упевнено неправильна.

Розбираємо, як це закривається: джерела розносяться за кількома індексами під свій тип даних, запит маршрутизується між ними, а результати об’єднуються й переранжуються на спільному рівні.

Що дає об’єднання індексів: якість відповідей і стійкість

Один індекс — це одна точка зору на дані: він добре вловлює або зміст, або точні терміни, а недоступність джерела перетворюється на порожню відповідь.

Об’єднання кількох індексів знімає обидві проблеми: якість зростає не за рахунок перенавчання моделі, а тому що на вхід генерації потрапляє повніша й різнорідніша видача.

Точність відповідей і повнота покриття

Щільний векторний індекс знаходить близьке за змістом, але втрачає артикули, абревіатури й рідкісні терміни; розріджений лексичний — навпаки.

Ми об’єднуємо їх гібридно — наприклад, через Elasticsearch з полями BM25 і kNN, — результати зливаємо ранговим злиттям і проганяємо через переранжувальник.

На вимірюваннях це дає зростання частки правильних відповідей з 60% до 85% і повноти покриття — частки питань, на які в базі взагалі є опора, — з 70% до 95%.

Час відгуку при цьому залишається в бюджеті: злиття й переранжування додають близько 200 мс за цільового відгуку до двох секунд.

Стійкість до відмови окремих джерел

Другий ефект — відмовостійкість. Кожне джерело опитується паралельно, зі своїм таймаутом і запобіжником: якщо індекс недоступний або деградував, запит не падає повністю — видача збирається за рештою, а переранжувальник вимикається першим, щоб зберегти відгук.

Ми логуємо частку запитів, обслугованих за неповним набором джерел: у нормі вона нульова, за збою зростає, але відповіді продовжують надходити, і деградація видна в метриках раніше, ніж її помічає користувач.

Схеми Multi-Index RAG: маршрутизація, злиття, федерація

Схема об’єднання джерел задає, скільки колекцій опитується на кожне питання і як їхні відповіді зводяться в один контекст. Нижче — три підходи, між якими зазвичай обирають.

Маршрутизація запиту

Класифікатор або компактна модель відносить питання до однієї-двох колекцій, решта не опитуються. Це найшвидший варіант за відгуком, але помилка класифікатора необоротна: документ із невибраної колекції генератор уже не побачить. Страховка — правило «нижче порога впевненості опитуємо всі індекси».

Злиття результатів

Кожен індекс повертає свій ранжований список, і його потрібно звести в єдиний порядок — взаємним ранговим голосуванням або зваженими оцінками. Схема не потребує навчання, але чутлива до ваг: колекція з довгими документами інакше перетягує видачу.

Федеративний пошук опитує всі колекції паралельно й не залежить від класифікатора — ціною затримки й роздутого контексту. Гібридний пошук додає до векторного порівняння лексичне, тому артикули й абревіатури перестають губитися. Обидва варіанти збираються на Elasticsearch — злиття й ранжування бере на себе пошуковий шар.

Варіант Коли підходить Обмеження
Маршрутизація запиту Колекції розділені за темами, важливий швидкий відгук Помилка класифікатора відсікає потрібний документ
Злиття результатів Джерела перетинаються, потрібен єдиний порядок Потребує калібрування ваг між індексами
Федеративний пошук Колекції непорівнянні, важлива повнота Зростають затримка й обсяг контексту
Гібридний пошук У запитах є коди, артикули, вузькі терміни Дорожча індексація, потрібні обидва типи індексів

Як ми впроваджуємо мультиіндексний пошук: етапи робіт

Будь-яке рішення класу Multi-Index RAG починається не з моделі, а з інвентаризації знань. Нижче — порядок робіт так, як він іде в проєкті: від карти даних до передачі рішення вашій команді супроводу.

Аудит джерел і карта даних

  1. Інвентаризація: корпоративна база знань, файлові сховища, облікові системи, тікети, регламенти. За кожним джерелом — формат, обсяг, частота змін, власник і права доступу.
  2. Карта даних: фіксуємо, які питання закриває кожне джерело, де дані дублюються і де суперечать одне одному. Результат — документ, за яким будується схема індексації.
  3. Схема індексації: під кожен тип даних — окремий індекс, своя стратегія розбиття на фрагменти й набір метаданих: дата, власник, рівень доступу, посилання на першоджерело.

Налаштування пошуку й перевірка на еталонних питаннях

  • Налаштування пошуку: маршрутизація запиту за релевантними індексами, об’єднання й переранжування видачі, правила цитування. Відповідь без посилання на фрагмент джерела вважаємо невалідною.
  • Перевірка на еталонних питаннях: набір із 80–120 питань із відомими відповідями, включно з тими, відповіді на які в базі немає. Дивимося, чи потрапляє потрібний фрагмент у верхні позиції і чи вміє система чесно сказати, що даних немає.
  • Ітерації: правимо розбиття, метадані й ваги — до стабільної якості на всьому наборі, а не на окремих вдалих прикладах.
  • Передача в експлуатацію: регламент оновлення індексів у разі зміни джерел, моніторинг частки питань без відповіді, інструкції для власників даних.

Артефакти впровадження: схеми, конфігурації, регламенти

Після впровадження Multi-Index RAG у замовника залишається не презентація, а комплект робочих артефактів, за якими система живе й розвивається без нас. Кожен документ прив’язаний до конкретного вузла: індексів, маршрутизатора запитів, шару доступу до даних. Перелік нижче фіксує, що саме передається і що в кожному артефакті описано.

Схема потоків даних

  • Маршрутизація запиту: який індекс опитується першим, за якими ознаками запит іде в решту, де спрацьовує об’єднання видачі.
  • Карта джерел: перелік сховищ, їхній формат, частота змін і власник на боці замовника.
  • Конфігурації індексів: параметри розбиття тексту, метрика близькості, ваги під час злиття результатів — із поясненням, що змінюється при додаванні нового джерела.
  • Точки деградації: поведінка системи за недоступності одного з індексів і режим відповіді за неповною видачею.

Регламенти оновлення й доступу

  • Переіндексація: тригери за розкладом і за подією, порядок повного й часткового перезбирання.
  • Політики доступу: розмежування за ролями на рівні індексу й документа, успадкування прав із вихідних систем, журналювання видачі.
  • Експлуатаційна документація: порядок приймання нового джерела, відкат на попередню версію індексу, зони відповідальності.

Кейс: як зросла точність відповідей після об’єднання джерел

Клієнт — сервісна компанія, де знання розподілені між внутрішньою базою, архівом звернень і регламентами в документах. Асистент відповідав лише за базою, тому на складені питання на кшталт «строк ремонту за договором із відстрочкою» видавав упевнену, але неправильну відповідь.

Початкова ситуація

Частка правильних відповідей трималася близько 60%: довідкові питання закривалися, а все, що вимагало зіставити звернення з пунктом регламенту, — ні. Інженери переперевіряли асистента вручну, час підготовки відповіді сягав 40 хвилин, а кожна четверта тема поверталася повторно.

Причина була не в моделі, а в розірваному контексті: пошук ішов за одним джерелом, і релевантний фрагмент із регламенту не доходив до генерації.

Що змінилося після впровадження

Ми зібрали кілька незалежних індексів — базу в Confluence, архів звернень і файлові регламенти — і розвели їх за типами запитів.

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

Показник До Після
Частка правильних відповідей ~60% ~90%
Час підготовки відповіді 40 хв 6 хв
Повторні звернення за темою ~25% ~8%
Відповідей із посиланням на джерело не рахували усі

Точність зросла не за рахунок зміни моделі, а за рахунок повноти контексту: відповідь спирається на два-три джерела, а посилання дає змогу перевірити висновок за секунди. Розбір із керівником підтримки — у відгуку нижче.

Чим відрізняється злиття результатів від федеративного пошуку?

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

Злиття результатів зводить кандидатів в один пул до ранжування — тоді в них з’являється спільний порядок.

Ключова складність — непорівнянність оцінок. Бали лексичного пошуку й близькість векторного подання лежать у різних діапазонах, а приведення до спільного відрізка спотворює хвости: рідкісний, але точний фрагмент отримує низьку нормалізовану оцінку. Тому джерела віддають порядок, а не бал, і списки об’єднуються рангово.

Далі вступає переранжування. Пул збирається по кілька кандидатів із кожного індексу, дублікати згортаються, і один прохід важкої моделі за повними текстами фрагментів дає єдиний порядок. Точність на верхніх позиціях зростає, але разом з обсягом кандидатів зростає й затримка відповіді.

Федеративна схема потрібна там, де звести джерела в один пул не можна: розмежування прав, різні регламенти, дані не залишають свій контур. Кожен вузол ранжує сам, об’єднання йде за метаданими й квотами на джерело, а переранжування можливе лише локально. Мінус — «говірке» джерело перетягує контекст на себе.

Вибір схеми визначається однорідністю джерел і доступністю текстів. Однорідні корпуси й право читати фрагменти повністю — злиття з переранжуванням.

Гетерогенні джерела з розмежуванням доступу — федеративний шар, поверх якого злиття зводиться до рангового об’єднання всередині дозволеної підмножини.

Технічні сумніви: якість, затримки, оновлення даних

П’ять питань найчастіше спливають на етапі оцінки: чи не зросте час відповіді, як швидко застарівають дані, як розмежовано права, чи витримає інфраструктура навантаження і хто підтримує систему після запуску. Перевіряємо кожен сумнів на пілоті — з метриками на реальних запитах, а не на демо-прикладах.

Чи не зросте затримка відповіді, якщо індексів кілька?

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

Як швидко оновлюються дані і що зі старінням?

У кожного індексу свій регламент свіжості: критичні джерела оновлюються за подією зміни, довідники — за розкладом. Фрагменти несуть дату й версію джерела, тому видно, на яких даних побудовано відповідь.

Як розмежовуються права доступу до джерел?

Права перевіряються до потрапляння фрагментів у контекст моделі — інакше дані витечуть через відповідь. Фільтр застосовується до кожного індексу окремо, усі звернення логуються.

Чи витримає інфраструктура зростання запитів?

Індекси масштабуються незалежно: навантаження на рідкісне джерело не гальмує частий. Кешування й черга переіндексації згладжують піки, ємність рахуємо за профілем звернень.

Хто підтримує рішення після запуску?

Передаємо регламент підключення нового джерела, правила переіндексації й панель метрик. Супровід — окремий режим: планові оновлення, розбір інцидентів, допомога при розширенні.

Обговоримо ваше завдання й повернемося з оцінкою та планом

Розмова про Multi-Index RAG починається не з вибору моделі, а з розбору завдання: які питання система має закривати, де лежать відповіді й хто ними користується. Від цього залежить, скільки індексів реально потрібно і як маршрутизувати запити між ними.

Щоб повернутися з оцінкою обсягу робіт і планом впровадження, а не із загальними словами, потрібні вступні щодо даних і сценаріїв:

  • Джерела: які системи й файли містять відповіді, як часто оновлюються, чи є вивантаження в машинно-читаному вигляді.
  • Вимоги до даних: структура, мова, наявність метаданих і розмітки, хто відповідає за актуальність.
  • Права доступу: як розмежувати видачу за ролями, щоб один індекс не показував чуже.
  • Сценарії запитів: типові формулювання користувачів і що вважаємо точною та повною відповіддю.
  • Обсяг: скільки документів і запитів на день, яке зростання очікуємо.
  • Обмеження: де розміщуємо контур, що потрібно логувати й зберігати.
  • Критерії приймання: за якими метриками якості вважаємо рішення працюючим.

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

Напрямки AI-розробки

Останні роботи

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1542
  • Розробка веб-додатків для компанії FEEDME
    Розробка веб-додатків для компанії FEEDME
    1394
  • Розробка веб-сайту для компанії БЕЛФІНГРУП
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1081
  • Розробка інтернет магазину для компанії FURNORO
    Розробка інтернет магазину для компанії FURNORO
    1369
  • Розробка логотипу компанії B2B Advance
    Розробка логотипу компанії B2B Advance
    816
  • Розробка веб-додатків для компанії Enviok
    Розробка веб-додатків для компанії Enviok
    1141