Rozszerzanie dużego modelu językowego przy użyciu generowania rozszerzonego pobierania i dostrajania

W artykułach z tej serii omówiono modele pobierania wiedzy używane przez moduły LLM do generowania odpowiedzi. Domyślnie model dużego języka (LLM) ma dostęp tylko do danych treningowych. Można jednak rozszerzyć model tak, aby uwzględniał dane w czasie rzeczywistym lub dane prywatne. W tym artykule omówiono jeden z dwóch mechanizmów rozszerzania modelu.

Pierwszy mechanizm polega na pobieraniu rozszerzonej generacji (RAG), która jest formą przetwarzania wstępnego, która łączy semantyczne wyszukiwanie z kontekstowym ujmowaniem (omówionym w innym artykule).

Drugi mechanizm to dostrajanie, które odnosi się do procesu dalszego trenowania modelu na określonym zestawie danych po początkowym, szerokim szkoleniu, przy czym celem jest dostosowanie go do lepszych zadań lub zrozumienie pojęć związanych z tym zestawem danych. Ten proces pomaga modelowi specjalizować się lub poprawić jego dokładność i wydajność w obsłudze określonych typów danych wejściowych lub domen.

W poniższych sekcjach opisano te dwa mechanizmy bardziej szczegółowo.

Informacje o rag

Funkcja RAG jest często używana do włączania scenariusza "czatu za pośrednictwem moich danych", w którym firmy, które mają dużą zawartość tekstową (dokumenty wewnętrzne, dokumentację itp.) i chcą używać tego korpusu jako podstawy odpowiedzi na monity użytkownika.

Na wysokim poziomie utworzysz wpis bazy danych dla każdego dokumentu (lub część dokumentu o nazwie "fragment"). Fragment jest indeksowany na jego osadzaniu, wektor (tablica) liczb reprezentujących aspekty dokumentu. Gdy użytkownik przesyła zapytanie, wyszukuje w bazie danych podobne dokumenty, a następnie przesyła zapytanie i dokumenty do usługi LLM, aby utworzyć odpowiedź.

Uwaga

Termin Retrieval-Augmented Generation (RAG) accommodatively. Proces wdrażania systemu czatów opartych na programie RAG opisany w tym artykule można zastosować, czy istnieje chęć używania danych zewnętrznych do użycia w pojemności pomocniczej (RAG) lub do użycia jako centralny element odpowiedzi (RCG). To zniuansowane rozróżnienie nie jest omówione w większości czytania związanych z RAG.

Tworzenie indeksu wektoryzowanych dokumentów

Pierwszym krokiem do utworzenia systemu czatu opartego na programie RAG jest utworzenie wektorowego magazynu danych zawierającego wektor osadzanie dokumentu (lub część dokumentu). Rozważmy poniższy diagram, który przedstawia podstawowe kroki tworzenia wektoryzowanego indeksu dokumentów.

Diagram przedstawiający różne etapy pozyskiwania dokumentów, począwszy od fragmentowania, a następnie kroków procesu fragmentowania, a następnie wywołania interfejsu API osadzania, a następnie zapisywania fragmentów dokumentu jako wektorowanych osadzania w bazie danych wektorów.

Ten diagram reprezentuje potok danych, który jest odpowiedzialny za pozyskiwanie, przetwarzanie i zarządzanie danymi używanymi przez system. Obejmuje to wstępne przetwarzanie danych przechowywanych w wektorowej bazie danych i zapewnienie, że dane przekazywane do usługi LLM mają poprawny format.

Cały proces jest sterowany pojęciem osadzania, które jest liczbową reprezentacją danych (zazwyczaj wyrazami, frazami, zdaniami lub nawet całymi dokumentami), które przechwytują semantyczne właściwości danych wejściowych w sposób, który może być przetwarzany przez modele uczenia maszynowego.

Aby utworzyć osadzanie, należy wysłać fragment zawartości (zdania, akapity lub całe dokumenty) do interfejsu API osadzania usługi Azure OpenAI. To, co jest zwracane z interfejsu API osadzania, jest wektorem. Każda wartość w wektorze reprezentuje pewną cechę (wymiar) zawartości. Wymiary mogą obejmować znaczenie tematu, znaczenie semantyczne, składnię i gramatykę, użycie wyrazów i fraz, relacje kontekstowe, styl i ton itp. Razem wszystkie wartości wektora reprezentują przestrzeń wymiarową zawartości. Innymi słowy, jeśli można myśleć o reprezentacji 3D wektora z trzema wartościami, dany wektor żyje w określonym obszarze płaszczyzny x, y, z. Co zrobić, jeśli masz 1000 (lub więcej) wartości? Chociaż nie jest możliwe, aby ludzie narysowali wykres 1000 wymiarów na arkuszu papieru, aby uczynić go bardziej zrozumiałymi, komputery nie mają problemu z zrozumieniem tego stopnia przestrzeni wymiarowej.

Następny krok diagramu przedstawia przechowywanie wektora wraz z samą zawartością (lub wskaźnikiem do lokalizacji zawartości) i innymi metadanymi w bazie danych wektorów. Baza danych wektorów jest podobna do dowolnego typu bazy danych, z dwiema różnicami:

  • Wektorowe bazy danych używają wektora jako indeksu do wyszukiwania danych.
  • Bazy danych wektorów implementują algorytm o nazwie podobne wyszukiwanie cosinus, znany również jako najbliższy sąsiad, który używa wektorów, które najlepiej pasują do kryteriów wyszukiwania.

W przypadku korpusu dokumentów przechowywanych w bazie danych wektorów deweloperzy mogą utworzyć składnik retriever, który pobiera dokumenty zgodne z zapytaniem użytkownika z bazy danych, aby dostarczyć moduł LLM, który musi odpowiadać na zapytanie użytkownika.

Odpowiadanie na zapytania przy użyciu dokumentów

System RAG najpierw używa wyszukiwania semantycznego, aby znaleźć artykuły, które mogą być przydatne dla llM podczas tworzenia odpowiedzi. Następnym krokiem jest wysłanie pasujących artykułów wraz z oryginalnym monitem użytkownika do usługi LLM w celu utworzenia odpowiedzi.

Rozważmy poniższy diagram jako prostą implementację RAG (czasami nazywaną "naiwną RAG").

Diagram przedstawiający prosty przepływ RAG z polami reprezentującymi kroki lub procesy i strzałki łączące każde pole. Przepływ rozpoczyna się od zapytania użytkownika, które jest wysyłane do interfejsu API osadzania. Interfejs API osadzania zwraca wyniki w wektoryzowanego zapytania, które służy do znajdowania najbliższych dopasowań (fragmentów artykułu) w bazie danych wektorów. Fragmenty zapytania i artykułu są wysyłane do interfejsu API uzupełniania, a wyniki są wysyłane do użytkownika.

Na diagramie użytkownik przesyła zapytanie. Pierwszym krokiem jest utworzenie osadzania monitu użytkownika o powrót do wektora. Następnym krokiem jest przeszukanie wektorowej bazy danych dla tych dokumentów (lub części dokumentów), które są zgodne z "najbliższym sąsiadem".

Podobieństwo cosinus jest miarą używaną do określania, jak podobne są dwa wektory, zasadniczo oceniając cosinus kąta między nimi. Podobieństwo cosinus zbliżone do 1 wskazuje wysoki stopień podobieństwa (mały kąt), podczas gdy podobieństwo zbliżone do -1 wskazuje na różne (kąt zbliża się do 180 stopni). Ta metryka ma kluczowe znaczenie dla zadań, takich jak podobieństwo dokumentu, gdzie celem jest znalezienie dokumentów o podobnej zawartości lub znaczeniu.

Algorytmy "Najbliższego sąsiada" działają, wyszukując najbliższe wektory (sąsiady) do danego punktu w przestrzeni wektorowej. W algorytmie k najbliższych sąsiadów (KNN) "k" odnosi się do liczby najbliższych sąsiadów do rozważenia. Takie podejście jest szeroko stosowane w klasyfikacji i regresji, gdzie algorytm przewiduje etykietę nowego punktu danych na podstawie większości etykiet najbliższego sąsiada "k" w zestawie treningowym. Funkcja KNN i podobieństwo cosinus są często używane razem w systemach, takich jak aparaty rekomendacji, gdzie celem jest znalezienie elementów najbardziej podobnych do preferencji użytkownika, reprezentowanych jako wektory w miejscu osadzania.

Najlepsze wyniki z tego wyszukiwania można uzyskać i wysłać zgodną zawartość wraz z monitem użytkownika o wygenerowanie odpowiedzi, która (miejmy nadzieję) zostanie poinformowana przez dopasowanie zawartości.

Wyzwania i zagadnienia

Zaimplementowanie systemu RAG wiąże się z zestawem wyzwań. Prywatność danych jest najważniejsza, ponieważ system musi obsługiwać dane użytkowników w sposób odpowiedzialny, zwłaszcza w przypadku pobierania i przetwarzania informacji ze źródeł zewnętrznych. Wymagania obliczeniowe mogą być również znaczące, ponieważ zarówno procesy pobierania, jak i generowania intensywnie korzystają z zasobów. Zapewnienie dokładności i istotności odpowiedzi podczas zarządzania uprzedzeniami obecnymi w danych lub modelu jest kolejnym krytycznym zagadnieniem. Deweloperzy muszą uważnie poruszać się po tych wyzwaniach, aby tworzyć wydajne, etyczne i cenne systemy RAG.

W następnym artykule z tej serii Kompilowanie zaawansowanych systemów generowania rozszerzonego pobierania zawiera więcej szczegółów na temat tworzenia potoków danych i wnioskowania w celu włączenia gotowego do produkcji systemu RAG.

Jeśli chcesz od razu rozpocząć eksperymentowanie z tworzeniem generowania rozwiązania sztucznej inteligencji, zalecamy zapoznanie się z omówieniem rozpoczynania czatu przy użyciu własnego przykładu danych dla języka Python. Istnieją również wersje samouczka dostępne na platformie .NET, Java i w języku JavaScript.

Dostrajanie modelu

Dostrajanie w kontekście usługi LLM odnosi się do procesu dostosowywania parametrów modelu na zestawie danych specyficznym dla domeny po początkowym wytrenowaniu na dużym, zróżnicowanym zestawie danych.

Maszyny LLM są trenowane (wstępnie wytrenowane) na szerokim zestawie danych, chwytając strukturę języka, kontekst i szeroką gamę wiedzy. Ten etap obejmuje uczenie się ogólnych wzorców językowych. Dostrajanie polega na dodaniu większej liczby szkoleń do wstępnie wytrenowanego modelu na podstawie mniejszego, konkretnego zestawu danych. Ta faza szkolenia pomocniczego ma na celu dostosowanie modelu w celu lepszego wykonania określonych zadań lub zrozumienia określonych domen, zwiększenie dokładności i istotności tych wyspecjalizowanych aplikacji. Podczas dostrajania wagi modelu są dostosowywane w celu lepszego przewidywania lub zrozumienia niuansów tego mniejszego zestawu danych.

Oto kilka kwestii do rozważenia:

  • Specjalizacja: Dostrajanie dopasowuje model do określonych zadań, takich jak analiza dokumentów prawnych, interpretacja tekstu medycznego lub interakcje z obsługą klienta. Dzięki temu model jest bardziej skuteczny w tych obszarach.
  • Wydajność: Wydajniejsze jest dostosowanie wstępnie wytrenowanego modelu dla określonego zadania niż trenowanie modelu od podstaw, ponieważ dostrajanie wymaga mniejszej ilości danych i zasobów obliczeniowych.
  • Adaptacja: Dostrajanie umożliwia dostosowanie do nowych zadań lub domen, które nie były częścią oryginalnych danych treningowych, dzięki czemu llMs uniwersalne narzędzia dla różnych aplikacji.
  • Zwiększona wydajność: w przypadku zadań, które znacznie różnią się od danych, model został pierwotnie wytrenowany, dostrajanie może prowadzić do lepszej wydajności, ponieważ dostosowuje model do zrozumienia określonego języka, stylu lub terminologii używanej w nowej domenie.
  • Personalizacja: w niektórych aplikacjach dostrajanie może pomóc w spersonalizowaniu odpowiedzi lub przewidywań modelu w celu dopasowania do określonych potrzeb lub preferencji użytkownika lub organizacji. Jednak dostrajanie również przedstawia pewne wady i ograniczenia. Zrozumienie tych rozwiązań może pomóc w podejmowaniu decyzji, kiedy wybrać precyzyjne dostrajanie, a alternatywy, takie jak pobieranie rozszerzonej generacji (RAG).
  • Wymaganie dotyczące danych: Dostrajanie wymaga wystarczająco dużego i wysokiej jakości zestawu danych specyficznego dla docelowego zadania lub domeny. Zbieranie i curowanie tego zestawu danych może być trudne i intensywnie obciążające zasoby.
  • Nadmierne dopasowanie ryzyka: istnieje ryzyko nadmiernego dopasowania, zwłaszcza w przypadku małego zestawu danych. Nadmierne dopasowanie sprawia, że model działa dobrze na danych treningowych, ale źle na nowych, niezaużytowanych danych, zmniejszając jego uogólnianie.
  • Koszt i zasoby: Chociaż mniej intensywnie obciążające zasoby niż trenowanie od podstaw, dostrajanie nadal wymaga zasobów obliczeniowych, zwłaszcza w przypadku dużych modeli i zestawów danych, które mogą być zbyt uciążliwe dla niektórych użytkowników lub projektów.
  • Konserwacja i aktualizowanie: w miarę upływu czasu modele dostosowane mogą wymagać regularnych aktualizacji w miarę wprowadzania zmian w informacjach specyficznych dla domeny. Ta ciągła konserwacja wymaga dodatkowych zasobów i danych.
  • Dryf modelu: ponieważ model jest dostrojony do określonych zadań, może utracić część ogólnego zrozumienia języka i wszechstronności, co prowadzi do zjawiska znanego jako dryf modelu.

Dostosowywanie modelu za pomocą dostrajania wyjaśnia, jak dostosować model. Na wysokim poziomie udostępniasz zestaw danych JSON potencjalnych pytań i preferowanych odpowiedzi. Dokumentacja sugeruje, że istnieją zauważalne ulepszenia, zapewniając od 50 do 100 par pytań/odpowiedzi, ale właściwa liczba różni się znacznie w przypadku użycia.

Dostrajanie w porównaniu do pobierania rozszerzonej generacji

Na powierzchni może się wydawać, że istnieje sporo nakładania się między dostrajaniem i pobieraniem rozszerzonej generacji. Wybór między dostrajaniem i pobieraniem rozszerzonej generacji zależy od konkretnych wymagań zadania, w tym oczekiwań dotyczących wydajności, dostępności zasobów i potrzeby specyficznej dla domeny w porównaniu z uogólnianiem.

Kiedy preferować precyzyjne dostrajanie w przypadku generowania rozszerzonego pobierania:

  • Wydajność specyficzna dla zadania — dostrajanie jest preferowane, gdy wysoka wydajność określonego zadania ma krytyczne znaczenie i istnieją wystarczające dane specyficzne dla domeny, aby skutecznie trenować model bez znaczącego nadmiernego dopasowania ryzyka.
  • Kontrola nad danymi — jeśli masz zastrzeżone lub wysoce wyspecjalizowane dane, które znacznie różnią się od danych, model podstawowy został wytrenowany, dostrajanie umożliwia dołączenie tej unikatowej wiedzy do modelu.
  • Ograniczone zapotrzebowanie na aktualizacje w czasie rzeczywistym — jeśli zadanie nie wymaga ciągłego aktualizowania modelu przy użyciu najnowszych informacji, dostrajanie może być bardziej wydajne, ponieważ modele RAG zwykle potrzebują dostępu do aktualnych zewnętrznych baz danych lub Internetu w celu ściągnięcia najnowszych danych.

Kiedy wolisz generacji rozszerzonej pobierania za pomocą dostrajania:

  • Zawartość dynamiczna lub rozwijająca się — rag jest bardziej odpowiednia do zadań, w których najbardziej aktualne informacje mają kluczowe znaczenie. Ponieważ modele RAG mogą pobierać dane ze źródeł zewnętrznych w czasie rzeczywistym, są one lepiej dostosowane do aplikacji, takich jak generowanie wiadomości lub odpowiadanie na pytania dotyczące ostatnich zdarzeń.
  • Uogólnianie nad specjalizacją — jeśli celem jest utrzymanie silnej wydajności w wielu różnych tematach, a nie wyróżnianie się w wąskiej domenie, rag może być preferowane. Używa ona baza wiedzy zewnętrznych, umożliwiając generowanie odpowiedzi w różnych domenach bez ryzyka nadmiernego dopasowania do określonego zestawu danych.
  • Ograniczenia zasobów — w przypadku organizacji z ograniczonymi zasobami na potrzeby zbierania danych i trenowania modeli użycie podejścia RAG może oferować opłacalną alternatywę do dostrajania, zwłaszcza jeśli model podstawowy wykonuje już dość dobrze odpowiednie zadania.

Ostateczne zagadnienia, które mogą mieć wpływ na decyzje projektowe aplikacji

Poniżej przedstawiono krótką listę kwestii, które należy wziąć pod uwagę i inne wnioski z tego artykułu, które mają wpływ na decyzje projektowe aplikacji:

  • Zdecyduj między dostrajaniem i pobieraniem rozszerzonej generacji na podstawie konkretnych potrzeb aplikacji. Dostrajanie może oferować lepszą wydajność wyspecjalizowanych zadań, podczas gdy rag może zapewnić elastyczność i aktualną zawartość dla aplikacji dynamicznych.