Штучний інтелект
Глибокий аналіз Retrieval-Augmented Generation у LLM

Представіть собі, що ви – аналітик, і у вас є доступ до великої мови моделі. Ви раді перспективам, які вона приносить до вашого робочого процесу. Але потім ви запитуєте її про останні ціни на акції або поточний рівень інфляції, і вона відповідає вам:
“Вибачте, але я не можу надати реальні дані або дані після закінчення терміну навчання. Мої останні дані навчання закінчуються лише у січні 2022 року.”
Великі мови моделі, незважаючи на свою лінгвістичну потужність, не можуть зрозуміти “сьогодні”. А у швидкозмінному світі “сьогодні” – все.
Дослідження показали, що великі попередньо треновані мови моделі (LLM) також є репозиторіями фактичних знань.
Вони були треновані на такому великому обсязі даних, що вони засвоїли багато фактів і цифр. Коли вони дофільтровані, вони можуть досягти видатних результатів у різних задачах обробки природної мови.
Але ось підхід: їхня здатність доступу і маніпулювання цим збереженим знанням часом не досконала. Особливо коли завдання полягає у знання-інтенсивних моделях, вони можуть відставати від більш спеціалізованих архітектур. Це як мати бібліотеку з усіма книгами світу, але без каталогу, щоб знайти те, що вам потрібно.
OpenAI’s ChatGPT отримує оновлення браузера
Нещодавнє оголошення OpenAI про можливість браузера ChatGPT є суттєвим кроком у напрямку Retrieval-Augmented Generation (RAG). З ChatGPT, який тепер може шукати в інтернеті актуальну та авторитетну інформацію, він відображає підхід RAG, динамічно витягуючи дані з зовнішніх джерел, щоб надати збагачені відповіді.
https://twitter.com/OpenAI/status/1707077710047216095
Наразі доступно для користувачів Plus і Enterprise, OpenAI планує скоро розширити цю функцію на всіх користувачів. Користувачі можуть активувати це, вибравши “Перегляд з Bing” під опцією GPT-4.
Інженерія промпта ефективна, але недостатня
Промпти служать ворітьми до знань LLM. Вони спрямовують модель, надають напрямок для відповіді. Однак створення ефективного промпта не є повним рішенням для отримання того, що вам потрібно від LLM. Все ж, давайте розглянемо деякі хороші практики, які слід враховувати при написанні промпта:
- Ясність: Хорошо визначений промпт усуває двозначність. Він повинен бути прямим, забезпечуючи, щоб модель зрозуміла намір користувача. Ця ясність часто перекладає більш сприйнятливі та актуальні відповіді.
- Контекст: Особливо для великих вхідних даних, розміщення інструкції може впливати на вихід. Наприклад, переміщення інструкції в кінець довгого промпта може часто давати кращі результати.
- Точність інструкції: Сила питання, часто передавана через рамку “хто, що, де, коли, чому, як”, може спрямувати модель до більш зосередженого відповіді. Крім того, вказівка бажаного формату виводу або розміру може ще більше уточнити вивід моделі.
- Обробка невизначеності: Це важливо спрямувати модель, як вона повинна реагувати, коли вона не впевнена. Наприклад, інструктування моделі відповісти “Я не знаю”, коли вона не впевнена, може запобігти генерації неточних або “галюцинаційних” відповідей.
- Послідовне мислення: Для складних інструкцій спрямування моделі систематично мислити або розбивати завдання на підзадачі може привести до більш повних і точних виводів.
Відносно важливості промптів у спрямуванні ChatGPT, повну статтю можна знайти в статті на Unite.ai.
Виклики у генерації штучного інтелекту
Інженерія промпта полягає у дофільтровуванні директив, наданих моделі, для покращення її продуктивності. Це дуже економічно ефективний спосіб підвищити точність програми генерації штучного інтелекту, вимагаючи лише незначних змін коду. Хоча інженерія промпта може суттєво покращити виводи, важливо зрозуміти вбудовані обмеження великих мов моделей (LLM). Два основні виклики – це “галюцинації” і “обрізання знань”.
- Галюцинації: Це випадки, коли модель впевнено повертає неправильну або сфабриковану відповідь. Хоча просунуті LLM мають вбудовані механізми для визнання та уникнення таких виводів.
- Обрізання знань: Кожна модель LLM має дату закінчення навчання, після якої вона не знає про події чи розвиток. Це обмеження означає, що знання моделі заморожено на момент її останнього терміну навчання. Наприклад, модель, тренована до 2022 року, не знає про події 2023 року.
Retrieval-Augmented Generation (RAG) пропонує рішення цих викликів. Це дозволяє моделям доступитися до зовнішньої інформації, усуваючи проблеми галюцинацій, надаючи доступ до власної або галузевої інформації. Для обрізання знань RAG може доступитися до поточної інформації за межами терміну навчання моделі, забезпечуючи, щоб вивід був актуальним.
Це також дозволяє LLM витягувати дані з різних зовнішніх джерел в реальному часі. Це можуть бути бази знань, бази даних або навіть величезний простір інтернету.
Введення у Retrieval-Augmented Generation
Retrieval-Augmented Generation (RAG) – це рамка, а не конкретна технологія, яка дозволяє великим мовним моделям використовувати дані, на яких вони не були треновані. Є кілька способів реалізації RAG, і найкращий варіант залежить від вашого конкретного завдання та природи ваших даних.
Рамка RAG працює структурованим чином:
Вхід промпта
Процес починається з вхідних даних користувача або промпта. Це може бути питання або твердження, що шукає конкретну інформацію.
Витягування з зовнішніх джерел
Натомість генерації відповіді безпосередньо на основі свого навчання, модель, за допомогою компонента витягування, шукає через зовнішні джерела даних. Ці джерела можуть варіюватися від баз знань, баз даних і сховищ документів до інтернет-доступних даних.
Поняття витягування
По суті, витягування дзеркально відображає пошукову операцію. Це про витягування найбільш актуальної інформації у відповідь на вхід даних користувача. Цей процес можна розділити на два етапи:
- Індексування: Аргументовано, найбільш складна частина всього шляху RAG – індексування вашої бази знань. Процес індексування можна розділити на дві фази: Завантаження та Розбиття. У інструментах, таких як LangChain, ці процеси називаються “завантажувачами” та “розбивачами”. Завантажувачі витягують вміст з різних джерел, будь то веб-сторінки чи PDF. Як тільки вміст витягнуто, розбивачі потім розбивають цей вміст на маленькі шматочки, оптимізуючи їх для вкладення та пошуку.
- Запитування: Це акт витягування найбільш актуальних фрагментів знань на основі пошукового терміну.
Хоча є багато способів підходу до витягування, від простого текстового збігу до використання пошукових систем, таких як Google, сучасні системи генерації RAG покладаються на семантичний пошук. У центрі семантичного пошуку лежить концепція вкладень.
Вкладення центральні для того, як великі мови моделі (LLM) розуміють мову. Коли люди намагаються пояснити, як вони виводять значення зі слів, пояснення часто повертається до вбудованого розуміння. Глибоко у наших когнітивних структурах ми розпізнаємо, що “дитина” і “маленький” синонімічні, або що “червоний” і “зелений” обидва позначають кольори.
Доповнення промпта
Витягнута інформація потім поєднується з оригінальним промптом, створюючи доповнений або розширений промпт. Цей доповнений промпт надає моделі додатковий контекст, який особливо цінний, якщо дані є галузевими або не входять до оригінального корпусу тренування моделі.
Генерація завершення
З доповненим промптом у руках, модель потім генерує завершення або відповідь. Ця відповідь не базується лише на тренуванні моделі, а також інформується реальною витягнутою інформацією.
Архітектура першої моделі RAG LLM
Дослідницька робота, опублікована Meta у 2020 році “Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks“, надає глибокий погляд на цю техніку. Модель генерації RAG доповнює традиційний процес генерації зовнішнім механізмом пошуку. Це дозволяє моделі витягувати актуальну інформацію з великих корпусів даних, підвищуючи її здатність генерувати контекстно точні відповіді.
Ось як це працює:
- Параметрична пам’ять: Це ваша традиційна мова моделі, як модель seq2seq. Вона була тренована на великих обсягах даних і знає багато.
- Непараметрична пам’ять: Подумайте про це як пошукову систему. Це густий векторний індекс, наприклад, Вікіпедії, який можна доступити за допомогою нейронного витягувача.
Коли вони поєднані, ці два створюють точну модель. Модель RAG спочатку витягує актуальну інформацію з своєї непараметричної пам’яті, а потім використовує свої параметричні знання, щоб надати спójню відповідь.
1. Двоступінчатий процес:
Модель RAG LLM працює у двоступінчатому процесі:
- Витягування: Модель спочатку шукає актуальні документи або пасажі з великого набору даних. Це робиться за допомогою густого механізму витягування, який використовує вкладення для представлення як запиту, так і документів. Вкладення потім використовуються для обчислення оцінок схожості, і найкращі документи витягуються.
- Генерація: З найкращими актуальними документами в руках, вони потім подаються до генератора послідовності-послідовності поряд з початковим запитом. Цей генератор потім створює остаточний вивід, витягуючи контекст з обох запиту та витягнутих документів.
2. Густе витягування:
Традиційні системи пошуку часто покладаються на розріджені представлення, такі як TF-IDF. Однак модель RAG LLM використовує густі представлення, де як запит, так і документи вкладені у безперервний векторний простір. Це дозволяє здійснювати більш нюансовані порівняння схожості, захоплюючи семантичні відносини за межами простого збігу ключових слів.
3. Генерація послідовності-послідовності:
Витягнуті документи діють як розширений контекст для генеративної моделі. Ця модель, часто заснована на архітектурах, таких як Трансформери, потім генерує остаточний вивід, забезпечуючи, щоб він був спójним і контекстно актуальним.
Пошук документів
Індексування документів та пошук
Для ефективного пошуку інформації, особливо з великих документів, дані часто зберігаються у векторній базі даних. Кожен шматок даних або документ індексується на основі векторного вкладення, яке захоплює семантичну сутність вмісту. Ефективне індексування забезпечує швидкий пошук актуальної інформації на основі вхідного промпта.
Векторні бази даних

Джерело: Redis
Векторні бази даних, іноді називаються векторним сховищем, є спеціалізованими базами даних, придатними для зберігання та отримання векторних даних. У сфері штучного інтелекту та комп’ютерної науки вектори насправді списки чисел, що символізують точки у багатовимірному просторі. На відміну від традиційних баз даних, які більше підходять для табульованої інформації, векторні бази даних виділяються у керуванні даними, які природно підходять до формату вектора, такими як вкладення з моделей штучного інтелекту.
Деякі відомі векторні бази даних включають Annoy, Faiss від Meta, Milvus та Pinecone. Ці бази даних є важливими у застосуваннях штучного інтелекту, допомагаючи у завданнях, що варіюються від систем рекомендацій до пошуку зображень. Платформи, такі як AWS, також пропонують послуги, спеціально призначені для потреб векторних баз даних, такі як Amazon OpenSearch Service та Amazon RDS для PostgreSQL. Ці послуги оптимізовані для конкретних випадків використання, забезпечуючи ефективне індексування та запитування.
Чанкування для актуальності
Оскільки багато документів можуть бути об’ємними, часто використовується техніка, відома як “чанкування”. Це включає в себе розбиття великих документів на менші, семантично спójні шматки. Ці шматки потім індексуються та витягуються за потребою, забезпечуючи, щоб найбільш актуальні частини документа використовувалися для доповнення промпта.
Розмір вікна контексту
Кожна велика мова моделі працює у вікні контексту, яке є максимальною кількістю інформації, яку вона може розглянути одночасно. Якщо зовнішні джерела даних надають інформацію, яка перевищує це вікно, її потрібно розбити на менші шматки, які поміщаються у вікно контексту моделі.
Переваги використання генерації RAG
- Покращена точність: Використовуючи зовнішні джерела даних, модель RAG LLM може генерувати відповіді, які не тільки базуються на її тренуванні, а також інформуються найбільш актуальною та актуальною інформацією, доступною у корпусі витягування.
- Подолання прогалин у знаннях: RAG ефективно усуває вбудовані обмеження знань LLM, незалежно від того, чи це обмеження терміну навчання моделі, чи відсутність галузевих даних у її тренувальному корпусі.
- Універсальність: RAG можна інтегрувати з різними зовнішніми джерелами даних, від власних баз даних організації до публічно доступних інтернет-даних. Це робить його придатним для широкого спектра застосунків та галузей.
- Зниження галюцинацій: Одним із викликів LLM є потенційне генерація “галюцинацій” або генерація фактично неправильної або сфабрикованої інформації. Надання контексту даних у реальному часі RAG може суттєво зменшити ймовірність таких виводів.
- Масштабованість: Одним із основних переваг моделі RAG LLM є її здатність масштабуватися. Розділяючи процеси витягування та генерації, модель може ефективно обробляти великі набори даних, роблячи її придатною для реальних застосунків, де дані численні.
Виклики та розгляди
- Обчислювальне навантаження: Двоступінчатий процес може бути обчислювально інтенсивним, особливо при роботі з великими наборами даних.
- Залежність від даних: Якість витягнутих документів безпосередньо впливає на якість генерації. Отже, наявність повної та добре підтримуваної бази даних витягування є важливою.
Висновок
Інтегруючи процеси витягування та генерації, генерація RAG пропонує потужне рішення знання-інтенсивних завдань, забезпечуючи виводи, які є як інформованими, так і контекстно актуальними.
Реальний потенціал RAG лежить у його потенційних реальних застосунках. Для галузей, таких як охорона здоров’я, де актуальна та точна інформація може бути вирішальною, RAG пропонує можливість витягувати та генерувати знання з величезних медичних літератур безперешкодно. У сфері фінансів, де ринки розвиваються за хвилини, RAG може надавати дані-інформовані інсайти в реальному часі, допомагаючи у прийнятті обґрунтованих рішень. Крім того, у сфері науки та досліджень вчені можуть використовувати RAG для сканування великих репозиторіїв інформації, роблячи літературні огляди та аналіз даних більш ефективними.

















