GraphRAG проти Vector RAG: чому пошук за векторами зазнає невдач при великих обсягах даних
Vector RAG має проблеми з ізоляцією фрагментів інформації, міждокументовим міркуванням та масштабуванням. Дізнайтеся, як GraphRAG створює спільноти та резюме для вирішення цих проблем, та коли варто обирати кожен з підходів.
Джерела: GraphRAG: Why Vector Search Fails at Scale (And How Knowledge Graphs Fix It)
Технологія Retrieval-augmented generation дозволяє мовній моделі працювати з даними, на яких вона ніколи не навчалася. Класична версія розділяє документи на частини, зберігає їхні ембеддинги у векторній базі даних, а під час обробки запиту витягує ті частини, які найбільш близькі до запиту, та включає їх у запит до моделі. Для простого відповідання на запитання з невеликої колекції даних це добре працює. Однак при роботі з складними корпоративними даними виникають проблеми.
Проблема не полягає у кроці пошуку чи у кроці генерації. Вона виникає через те, як представлені дані після їх перетворення на вектори.
Де зазнає невдачі простий підхід RAG з векторами
Частини даних стають „островами“
Як тільки документ розділяється на частини, кожна з них існує окремо у векторному просторі. Вона відокремлена від навколишніх абзаців та відповідних матеріалів у інших документах, і будь-яка структура оригіналу зникає. Під час пошуку важливий навколишній контекст залишається позаду, і ШІ може сплутати часткову інформацію з повною правдою. Розрив цих логічних зв’язків змушує модель оцінювати текст без урахування середовища, з якого він походить.
Відсутність міждокументного міркування
Деякі запитання не можна відповісти за допомогою одного лише уривку тексту. Уявіть собі запитання на кшталт „Які тенденції та теми простежуються у всіх наших квартальних фінансових звітах?“ або „Чи може співробітник отримати компенсацію за витрати на Wi-Fi, понесені до дати його прийняття на роботу?“ Microsoft Research називає такі запитання запитами на формування сенсу. Вони є широкими та вимагають системи для аналізу, поєднання та узагальнення зв’язків у наборі даних, а не для витягування вже наявного факту.
Векторний пошук ґрунтується на локальних семантичних збігах: фрагментах, вектори яких знаходяться найближче до вектора запиту. Це чудово підходить для локальних запитань, але не ефективно, коли відповідь розкидана між кількома фрагментами та документами. Припустимо, що для відповіді потрібно поєднати факт А з одного документа з фактом B з іншого та фактом C з третього. Кожен фрагмент завантажується окремо, залежно від ступеня його схожості з запитом, тому факт середньої схожості з більш низьким рейтингом залишається поза увагою, хоча відповідь від нього залежить. Це порушує ланцюг міркувань.
Точність знижується зі збільшенням обсягу даних
Кожна система RAG, яка переходить від прототипу до продакшну, розширює свій корпус даних, і це розширення виявляє одну проблему: точність пошуку починає знижуватися. Більше документів розширюють спектр тем, які може охоплювати система, але водночас знижують її точність. Коли кількість частинок індексу зростає з сотень до тисяч, частка тих частинок, які є важливими для конкретного запитання, постійно зменшується. Релевантні частинки заглушаються сусідніми, які семантично схожі, але є безполезними в контексті. Більше документів означає ширше охоплення тем, але водночас нижчу точність пошуку.
GraphRAG як рішення
У 2024 році Microsoft Research представила GraphRAG для усунення цих недоліків. Замість розрізнених векторів вона зберігає структуровані зв’язки, приховані в тексті, шляхом переходу до графа знань. Граф знань представляє факти реального світу у вигляді вузлів — це такі суб’єкти, як люди, місця чи концепції, — які з’єднані ребрами, що показують їхні взаємозв’язки. Ця основа дозволяє системі аналізувати цілі набори даних, а не лише виконувати локальні пошуки.
Основна ідея
GraphRAG перетворює розрізнені документи на взаємопов’язану карту ідей та узагальнює дані від загальних тем до деталей. Оскільки ці зв’язки створюються заздалегідь, ШІ має як огляд усього корпусу даних, так і доступ до детального контексту. Існує чотири етапи:
- Створіть граф. Штучний інтелект будує граф знань, у якому вузли представляють ключові елементи корпусу, а ребра — взаємозв’язки між ними.
- Знайдіть спільноти. Граф ділиться на вкладені кластери — від невеликих локальних груп до тем, що охоплюють весь набір даних. Спільнота — це набір вузлів, які тісно пов’язані між собою та лише слабко з’єднані з рештою мережі.
- Узагальнюйте знизу догори. Штучний інтелект пише узагальнення для кожної спільноти, яке охоплює її елементи, факти та взаємозв’язки. Узагальнення створюються відповідно до ієрархії: спільноти вищого рівня поглинають узагальнення тих, що знаходяться нижче, і таким чином утворюється структурований огляд усього набору даних.
Детальний опис процесу
Як і у звичайних системах RAG, GraphRAG має два етапи: індексування та запитування.
Індексування, що відбувається офлайн
Документи на частини. Процес починається з розділення документів на частини, зазвичай по 600 токенів, що є оптимальним розміром для максимізації кількості виявлених ентитетів.
Частини на ентитети та взаємозв’язки. Штучний інтелект по черзі читає кожну частину та витягує важливі ентитети та взаємозв’язки між ними, а також короткі описи кожного з них. Він також може витягувати твердження — значущі факти про ентитети, такі як дати, події та взаємодії з іншими ентитетами.
У граф знань. Усі витягнуті дані об’єднуються. Ентитети стають вузлами, а взаємозв’язки — ребрами. Щоб усунути зайвість, варіанти одного й того самого ентитета об’єднуються, а їхні описи скорочуються до одного запису. Повторні згадки про взаємозв’язок підвищують його вагу, що свідчить про сильніший зв’язок, а твердження приєднуються до відповідних вузлів та ребер.
Від графа до спільнот. Алгоритм ієрархічного виявлення спільнот, зазвичай Leiden, ділить мережу на кластери тісно пов’язаних вузлів. Результатом є багаторівнева ієрархія, у якій на найнижчому рівні знаходяться дрібні, деталізовані кластери, а на найвищому — масштабні групування для всієї області.
Від спільнот до резюме. Працюючи, починаючи з найменших, найбільш деталізованих груп, ШІ складає резюме для кожного рівня ієрархії. Це дозволяє відповідати на запитання загального характеру та дає користувачам можливість переходити від широких тем до дрібних деталей. Щоб дотримуватися обмежень щодо обсягу інформації, резюме найнижчого рівня створюються шляхом класифікації сирих даних графа за ступенем важливості та заповнення запиту найбільш пов’язаними елементами, взаємозв’язками та твердженнями до тих пір, поки не закінчиться місце. Резюме вищих рівнів формуються безпосередньо на основі резюме нижчих рівнів, що є своєрідним об’єднанням об’єднань.
Запити під час виконання
Стандартний RAG обробляє кожен запит за допомогою однакового пошуку схожості. GraphRAG надсилає запит одним із двох шляхів залежно від наміру. Глобальний пошук використовується для аналізу інформації в масштабах всього набору даних. Локальний пошук застосовується до конкретних запитів, орієнтованих на окремі елементи, які потребують кількох кроків обробки. Для компанії з політикою відшкодувань глобальний запит може стосуватися основних ризиків та правил схвалення у всіх програмах відшкодувань. Локальний запит може стосуватися можливості працівника отримати відшкодування витрат на інтернет, понесених до офіційної дати приєднання.
Глобальні запити. Замість сканування мільйонів необроблених фрагментів система використовує заздалегідь обчислені підсумки спільнот через механізм map-reduce.
- Виберіть рівень ієрархії — від широких суперспільнот до дрібних локальних кластерів (рівень 0, 1, 2 тощо) — залежно від обсягу інформації, необхідної для відповіді.
- Карта: запит надсилається одночасно до кожного підсумку спільноти на цьому рівні. Штучний інтелект оцінює кожен з них окремо та створює проміжну відповідь спільноти зі значенням релевантності від 0 до 100.
- Фільтрація та ранжування: відкидаються відповіді з низькою релевантністю, а решта сортується за пріоритетністю.
- Скорочення: найкращі за рангом результати передаються штучному інтелекту в одному вікні контексту, який синтезує їх у повну, без повторень відповідь із посиланнями.
Локальні запити. GraphRAG не викидає вектори. Він змінює їхнє призначення. Під час локального пошуку вектори використовуються лише для пошуку основних ентитетів у графі. Як тільки знаходяться ці вхідні точки, пошук за векторами припиняється, і починається обход графа. Як передумова необхідно створити ембеддинги для описів ентитетів та зберегти їх у базі даних векторів.
Це створює справжню різницю. У традиційному RAG основним способом отримання необроблених фрагментів тексту є векторна схожість. У GraphRAG використовується цілеспрямований пошук, який відносить запит до відповідних ентитетів, які слугують лише входами до графа. Залежно від налаштувань, локальний пошук також може використовувати фрагменти тексту чи твердження як точки входу.
- Проводиться пошук за допомогою векторної схожості серед ембеддингів описів ентитетів для знаходження точок входу.
- Ці ентитети відносяться до їхніх вихідних документів та фрагментів тексту; потім проходиться граф для збору сусідніх вузлів та описів ребер, отримуються додаткові дані, такі як твердження, URL-адреси та дати, а також узагальнення локальних спільнот, до яких належать ентитети, що додає додатковий контекст.
- LLM оцінює кожне з цих зв’язків за ступенем релевантності до запиту та видаляє менш релевантні.
Що обрати
Жоден з підходів не є кращим у кожному випадку. Вони підходять для різних запитань та даних. Рішення залежить від складності набору даних, типу запитів, які потрібно обробити, та бюджету, який ви можете виділити.
Оберіть vector RAG, коли вам потрібне швидке та недороге пошукання окремих фактів у окремих документах, де відповідь знаходиться в межах одного абзацу чи сторінки. Оберіть GraphRAG, коли ваші джерела є щільними та взаємопов’язаними, а запити вимагають синтезу інформації з кількох документів, аналізу тенденцій у всьому наборі даних чи визначення зв’язків між елементами в таких сферах, як право, дослідження та політика.
Зручне спрощення: vector RAG шукає голку в купі сіна, тоді як GraphRAG спочатку картує всю купу сіна, а вже потім проводить пошук.
Vector RAG змінив спосіб роботи ШІ з зовнішніми знаннями, проте масштабування на складні корпоративні дані вимагає більшого, ніж лише семантично схожих пошуків. Організовуючи текст у граф знань із ієрархічними підсумками спільнот, GraphRAG поєднує цілеспрямований пошук із міркуваннями над усіма даними.
Якщо ви хочете дізнатися більше, оригінальна стаття доступна за адресою https://arxiv.org/abs/2404.16130, а опис механізму локального пошуку — за адресою https://microsoft.github.io/graphrag/query/local_search/.