Wyszukiwanie informacji z GenAI
W jednym z poprzednich maili pisałem o tym, skąd modele językowe (czy w ogóle generatywna sztuczna inteligencja) biorą “wiedzę”. Dziś chciałbym poopowiadać na konkretnych przykładach o tym, jakie podejścia stosuje się do “wyposażania” GenAI w wiedzę, wyszukiwania w zasobach informacji i gdzie się to sprawdza.
Nie-fotograficzna pamięć
Przypominając poprzedni post - zadając naiwnie pytanie takiemu modelowi jak ChatGPT masz większe szanse dostać poprawną odpowiedź na pytanie o stawki podatku VAT, niż na stawki celne na towary z Mongolii. Ten pierwszy temat wałkowany jest w internecie milion razy, a informacji nt. tego drugiego prawie nie ma. Ale nawet, jeśli gdzieś w jednym miejscu by była, to nie raczej nie zostanie wydobyta przez model. A to dlatego, że właściwością tej technologii jest “pamięć”, której nie można nazwać fotograficzną.
Model w odpowiedzi na instrukcję generuje najbardziej prawdopodobny zestaw słów na bazie swojej wielkiej sieci neuronowej. I prędzej wygeneruje tekst odsyłający do urzędu, czy odpowiedź w stylu “nie wiem”, niż tekst wskazujący na konkretne stawki. Dana informacja musi być podana wielokrotnie w różnych postaciach, zanim się utrwali na tyle, że model będzie ją generował najczęściej.
Jak wiele razy? Nie do końca wiadomo. Ale jako przybliżenia często używam do tłumaczenia tej niedoskonałej pamięci “reguły Empiku”: jeśli w Empiku możesz kupić podręcznik/poradnik w danym temacie (np. ustawa o VAT, albo anatomia), to pewnie model językowy będzie się dość kompetentnie wypowiadał w danym temacie. Jeśli nie, to nie spodziewaj się cudów.
Ale są alternatywne podejścia.
Czas na RAG, ale nie ragtime
Nie, nie chodzi o styl muzyczny. RAG czyli Retrieval-Augmented Generation to technika hybrydowa uzyskiwania poprawnych/merytorycznych odpowiedzi na pytania, nawet w obszarach, które nie występowały w danych treningowych. W skrócie polega ona na tym, że pytanie użytkownika najpierw kierowane jest do systemu, który znajduje odpowiednie fragmenty tekstu w lokalnej bazie dokumentów, podaje te fragmenty razem z oryginalnym pytaniem do modelu językowego i ten na podstawie załączonej podpowiedzi generuje finalną odpowiedź.
Działa to całkiem przyzwoicie. Na bazie tej techniki powstał cały szereg serwisów oferujących “czat z dokumentami/książkami”, czyli możliwość zadawania pytań w kontekście długiego dokumentu lub nawet kolekcji dokumentów/książek. Jeśli chcecie się pobawić, to Google pewnie Wam podpowie PDF.ai ale uważam, że Coral od Cohere działa lepiej (mniej intuicyjny interfejs, ale lepsze “czytanie” dokumentów po polsku).
Nie, nie rozwiązuje to problemów z niedeterministycznością wyniku działania modeli językowych, czy z halucynacjami, ale jest tanią w implementacji alternatywą dla “dotrenowywania” dokumentów o przyzwoitej skuteczności.
RAG z całym internetem
Dość naturalnym pytaniem jest: a co by było, gdyby cały internet podłączyć pod system RAG i czy wtedy GenAI znalazłby stawki ceł z Mongolii? Firma PerplexityAI ma odpowiedź na to pytanie: byłoby lepiej i tak, znalazłby stawki celne. Jej serwis przeszukuje cały internet i buduje odpowiedź na pytania użytkownika wskazując bezpośrednio na źródła, z których brane były informacje. Jest to przyjemna alternatywa dla przeszukiwania przy pomocy standardowej wyszukiwarki internetowej i skanowania każdej ze stron z listy wyników niezależnie.
Podobny rezultat można próbować uzyskać przy pomocy ChatGPT explicite wskazując mu, że ma przeszukać internet (działa trochę gorzej niż Perplexity).
Natomiast jest możliwe, że PerplexityAI koniec końców rozbije się o ścianę postawioną przez właścicieli stron internetowych, którzy zablokują indeksowanie ich stron przez automaty AI (oznacza to dla nich mniejszy ruch “żywych” użytkowników).
Tak robi na przykład polski Sejm. Strona ISAP - Internetowego Systemu Aktów Prawnych, część systemu informacyjnego Sejmu, zgodnie ze swoją instrukcją dla “robotów internetowych” dopuszcza do indeksowania swoich zasobów automat firmy Google, oraz Instytutu Podstaw Informatyki Polskiej Akademii Nauk (Nekstbot na poniższej liście):
User-agent: Googlebot
Disallow:
User-agent: Nekstbot
Disallow:
User-agent: *
Disallow: /
Wszystkie inne są blokowane w tym Bing, używany przez ChatGPT - i ewidentnie honoruje ten zakaz:
Słoń a dziurka od klucza
Jednym z ograniczeń modeli językowych jest fakt, że mają dość ograniczony rozmiar instrukcji, którą są w stanie przyjąć i przeanalizować. W zależności od wersji i rodzaju modelu, może to być kilka tysięcy słów (najczęściej używane modele), a może być sto razy więcej (Claude 3 czy Gemini Pro, oba niedostępne w Polsce dla nie-programistów). Co za tym idzie, system RAG na modelach o niewielkim oknie kontekstowym nie jest w stanie w swojej podpowiedzi podać wszystkich znalezionych stron licząc na to, że model językowy zorientuje się o którą informację chodzi. Poda najbardziej pasujące, ale nie mamy pewności, że szukana informacja tam się znajdzie. Dla popularnych tematów coś ze słonia przejdzie przez dziurkę od klucza, ale bez gwarancji, że domyślimy się potem, że to słoń.
Te ograniczenia lubią się kumulować, więc niektóre systemy RAG będą “ściemniać” (czyli podawać informacje w pełnym przekonaniu, że jest prawdziwa) odrobinę częściej niż “czyste” modele językowe. Ot, taka właściwość technologii.
Podsumowanie
Jak więc skorzystać z dobrodziejstw AI, jeśli mamy do wyszukania jakieś informacje? Moja sugestia jest taka:
Czy potrzebujesz syntetycznego podsumowania tematu wałkowanego w tysiącu podręczników, bo na przykład wchodzisz w nowy temat? Dłuższa pogawędka ze zwykłym ChatGPT czy ekwiwalentem da Ci świetne wprowadzenie do tematu.
Czy potrzebujesz twardych danych, lub odpowiedzi na jakieś pytanie z obszaru, który na pewno jest dobrze pokryty w sieci, ale nie chce Ci się przebijać przez dziesiątki zoptymalizowanych pod wyszukiwarki stron zwróconych przez Google? Perplexity AI Twoim pomocnikiem.
Czy potrzebujesz dobrego podsumowania konkretnej książki? Poszukaj “summary of” na portalu w stylu Everand lub ekwiwalentu - większość modeli językowych nie jest w stanie zrobić sensownego podsumowania całej książki w jednym kroku.
Czy potrzebujesz napisać artykuł na podstawie kilku dokumentów? Coral od Cohere jest świetnym punktem startowym - ich implementacja “czatu z dokumentami” jest najlepsza w języku polskim, jaką do tej pory testowałem. Podobną możliwość daje od jakiegoś czasu OpenAI w ich “custom GPTs”, ale nie testowałem już 2 miesiące - w lutym działało słabo.
Potrzebujesz konkretnych liczb, faktów czy informacji z niszowej dziedziny? Możesz zacząć od Perplexity AI, ale pewnie szybko przejdziesz na Google a potem na specjalistyczną wyszukiwarkę/stronę (patenty, publikacje naukowe, dedykowane bazy danych, bazy dokumentacji technicznej, itd.). GenAI brakuje rozdzielczości w niszowych tematach.
Musisz dokładnie przeanalizować dany dokument i nie możesz sobie pozwolić na ominięcie żadnego fragmentu, bo niuansy są krytyczne dla wyników Twojej pracy? Ani model językowy, ani system RAG nie gwarantują Ci wychwycenia wszystkich kluczowych informacji. Możesz się wesprzeć, ale i tak przeczytasz całość strona po stronie.
Ciekawe niusy
Dwarkesh Patel (rzadki gatunek podcastera, który baaaardzo dokładnie przygotowuje się do wywiadów) odpytał Marka Zuckerberga odnośnie przyszłości AI. Polecam bardzo, zwłaszcza fragment na temat wąskiego gardła - energii potrzebnej do zasilania klastrów obliczeniowych, na których uruchomione są algorytmy generatywnej sztucznej inteligencji.