Uruchamianie zaawansowanego wyszukiwania RAG za pomocą Neo4j
Obecnie aplikacje wykorzystujące technologię generowania rozszerzonego wyszukiwania (RAG) można wdrożyć w ciągu zaledwie kilku minut. Większość aplikacji RAG, takich jak przeszukiwanie i streszczanie PDF czy innego dokumentu tekstowego wykorzystuje podstawowe wyszukiwanie podobieństw wektorowych w celu pobrania odpowiednich informacji z bazy danych i przekazania ich do LLM w celu wygenerowania ostatecznej odpowiedzi.
Jednak podstawowe wyszukiwanie wektorów nie jest wystarczająco niezawodne, aby obsłużyć wszystkie przypadki użycia. Proces wyszukiwania podobieństwa wektorów porównuje jedynie treść semantyczną elementów na podstawie wspólnych słów i pojęć, bez względu na inne aspekty danych. Aplikacja RAG oparta na podstawowym wyszukiwaniu wektorowym nie będzie integrować kontekstu ze strukturą danych w celu zaawansowanego rozumowania.
W tym poście na blogu zobaczysz inną metodę tworzenia aplikacji RAG, która korzysta z kontekstu danych, aby odpowiedzieć na bardziej złożone pytania i wziąć pod uwagę szerszy kontekst.
Dokumenty nadrzędne i podrzędne
Termin "dokument" odnosi się zazwyczaj do tekstowych lub multimedialnych treści, które są analizowane, indeksowane i przetwarzane przez modele językowe w celu wydobycia znaczenia, informacji lub cech charakterystycznych. Kiedy mówimy o "dokumencie" w kontekście wektorowego wyszukiwania, mamy na myśli reprezentację takiego zasobu, który może być analizowany i manipulowany przez algorytmy "sztucznej inteligencji" w celu przetwarzania, analizy lub ekstrakcji informacji.
Przy indeksowaniu dokumentów trzeba zmierzyć się z co najmniej dwoma problemami. Pierwszy to ograniczenia modeli które tworzą wektory dokumentu ("embeddings") - treść może mieć ograniczoną długość. Drugi problem to znajdywanie podobieństw - wyszukiwanie wektorowe działa niezbyt dobrze jeśli mamy krótką sentencję i szukamy podobieństwa w długiej (istnieją specjalnie do tego celu zaprojektowane modele ale nawet one nie robią tego znakomicie).
Zatem bezpośrednie użycie wektora źródłowego dokumentu jest nieefektywne. Duże dokumenty można podzielić na mniejsze fragmenty, dla których obliczane są wektory, co poprawia indeksowanie w przypadku wyszukiwania podobieństw. Chociaż te wektory krótszej informacji lepiej sprawdzają się w znajdywaniu podobieństw (zwykle zapytanie jest krótkie), pobierany jest oryginalny duży dokument, ponieważ zapewnia lepszy kontekst dla odpowiedzi. W tej koncepcji mamy pełny dokument i powiązane z nim krótkie dokumenty w formie pytań związanych kontekstowo z tym dokumentem.
LLM może być użyty do wygenerowania tych pytań, na które odpowiada dokument.
Nie indeksujemy samego dokumentu ale pytania, co zapewnia większe podobieństwo do pytań użytkowników. Dostarczenie właściwego dokumentu do modelu odbywa się poprzez znalezienia powiązanego z dokumentem pytania i pobrania pełneg dokumentu nadrzędnego w celu zapewnienia pełnego kontekstu, stąd nazwa „wyszukiwarka dokumentów nadrzędnych”.
Co to jest Retrieval-Augmented Generation, czyli RAG?
Przykład kodu w Python który wykorzystuje RAG by przeszukiwać poemat Pan Tadeusz Adama Mickiewicza.
Aby zrozumieć najnowsze osiągnięcia w dziedzinie generatywnej sztucznej inteligencji, wyobraź sobie salę sądową.
Sędziowie rozpatrują i rozstrzygają sprawy w oparciu o swoje ogólne rozumienie prawa. Czasami sprawa – na przykład pozew o błąd w sztuce lub spór pracowniczy – wymaga specjalnej wiedzy specjalistycznej, dlatego sędziowie wysyłają urzędników sądowych do biblioteki prawniczej w poszukiwaniu precedensów i konkretnych spraw, które mogliby przytoczyć.
Czym są Large Language Models (LLMs) i jaki jest ich potencjał?
Duże Modele Językowe (LLM - Large Language Models) mogą odpowiadać na różnorodne zapytania ludzkie. Powstały w wyniku analizy ('szkolenia') ogromnej ilości informacji. Budowa takich modeli obejmuje co najmniej kilka faz takich jak przygotowanie danych, wstępne ich przetworzenie a następnie zastosowanie odpowiednich "tranformatorów" które potrafią obsłużyć różne języki, znaczenie analizowanych materiałów i utworzyć zbiór który jest "modelem językowym". Ten zbiór jest skondensowaną wiedzą i regułami które potrafią obsłużyć zapytania użytkowników. Coś jak encyklopedia Britannica. Co więcej, reguły zawarte w tym modelu mogą być użyte do analizy zewnętrznego źródła danych który nie był obecny podczas "trenowania" modelu - np. wewnętrzna informacja Twojej firmy.
Kiedy mowa o '"sztucznej inteligencji", magicznym terminem który się zawsze pojawia jest "trenowanie". Samo "trenowanie", czyli analiza materiału (źródłowych danych) to tylko jeden z etapów i etap ten nie byłby możliwy bez wcześniejszego zaprojektowania odpowiedniego transformatora (lub kilku). Transformatory mają różne zastosowanie, architekturę i przeznaczenie. Rezultaty ich pracy, np. właśnie "modele językowe" mają różna złożoność i różne przeznaczenie. Kiedy mówimy o "modelach" większość z nas wyobraża sobie natychmiast GPT, Google Gemini czy Ollama. Ale modelami mogą być także np. modele SBERT - są stosowane głównie do rozwiązywania problemów związanych z analizą semantyczną tekstu, w szczególności do zadań, w których istotne jest porównywanie i ocenianie semantycznej podobieństwa między zdaniami lub krótkimi tekstami. Wymieńcie dziesiątki lub nawet setki innych.
Tak więc modele językowe które zostały zbudowane za pomocą transformatorów same zawierają transformatory w celu realizacji zadań jakie postawiono przed tymi modelami. Np. za pomocą modeli SBERT możesz tworzyć osadzenia (embeddings) w wektorowych bazach danych. Przeczytaj więcej na ten temat. Te właśnie "osadzenia" odgrywają kluczową role kiedy wykorzystujesz Duży Model Językowy (LLM w języku angielskim) w koncepcji RAG - Retrieval-Augmented Generation.
Transformatory to rodzaj wielowarstwowej architektury , która przekształca lub zmienia sekwencję wejściową w sekwencję wyjściową. Rozważmy na przykład następującą sekwencję wejściową: „Jaki jest kolor nieba?” Model transformatora wykorzystuje wewnętrzną reprezentację matematyczną, która identyfikuje trafność i związek między słowami kolor, niebo i błękit. Wykorzystuje tę wiedzę, zawartą w modelu, do generowania danych wyjściowych: „Niebo jest niebieskie”. Warstwy transformatorów mogą być można układać jedną na drugiej, tworząc głębsze transformatory i potężne modele językowe. Transformatory biorą udział zarówno w tworzeniu modelu językowego jak i w są zawarte w nich samych by obsługiwać zapytania użytkowników.
Jak powstaje model językowy?
Jak złożone jest to przedsięwzięcie można prześledzić na przykładzie modelu llama firmy Meta (Facebook). W lutym 2023 r wydano Llamę. Już w lipcu 2023 r Llamę2, udostępniając ją bezpłatnie do celów badawczych i komercyjnych, z pewnymi skromnymi ograniczeniami. Prawdopodobnie jeszcze w roku 2024 pojawi się kolejna wersja - Llama3. Obecnie Meta do trenowania tych modeli wykorzystuje infrastrukturę która mniej więcej odpowiada 300 tysiącom wysokiej klasy komputerów osobistych. Ale to mało. Jak powiedział Zuckerberg:
„Budujemy ogromną infrastrukturę obliczeniową, aby wspierać nasz przyszły plan działania… w sumie prawie 600 tys. odpowiedników mocy obliczeniowej H100”
To są ogromne liczby zarówno jeśli chodzi o ilość sprzętu jak i kwoty - ta inwestycja równałaby się 20 miliardom dolarów na chipy. "Trenowanie modelu" to nie jest zadanie dla Twojego biurkowego PC. Jeśli zainteresuje Cię czym jest słynny "H100", przeczytaj więcej o tym układzie na stronie Nvidia.
Rezultat "trenowania modelu" to prawdziwy diament; cała ta wiedza o której mowa powyżej potrafi być zawarta w zbiorze danych który często nie przekracza 4GB.
Parametry - czy zawsze więcej oznacza lepiej?
Parametr w dużym modelu językowym to ustawienie która wpływa na to, jak model rozumie zapytanie i generuje odpowiedź.
Mam tu najczęściej pojęcie "wagi" która informuje model, jak bardzo dany element tekstu jest połączony z innymi (budowanie sekwencji słów w odpowiedzi).
Powiązanym parametrem jest "obciążenie" które pomaga modelowi dostosować się do różnych kontekstów i sytuacji - obciążenia mogą pomagać modelowi uwzględnić różne style pisania, preferencje językowe lub inne cechy tekstu, które mogą wpłynąć na generowane odpowiedzi.
GPT-4 posiada zdumiewającą liczbą 175 bilionów parametrów, przewyższającą 175 miliardów parametrów GPT-3.5. Czy zawsze więcej parametrów oznacza lepiej? W skrócie: nie. Im więcej parametrów ma duży model językowy (LLM), tym lepiej jest w stanie uchwycić złożoność ludzkiego języka i efektywniej go przetwarzać. Wybierając między dwoma modelami o różnej liczbie parametrów, zwykle preferuje się ten z większą liczbą, o ile pozostałe czynniki są podobne. Jednakże istnieje wiele innych kwestii, które warto wziąć pod uwagę. Duże modele są droższe w eksploatacji, zarówno podczas procesu uczenia, jak i w trakcie ich użytkowania, wymagając znacznych zasobów obliczeniowych i danych. Wybór bardziej opłacalnego i zrównoważonego modelu z mniejszą liczbą parametrów może być korzystniejszy dla środowiska, a także dla budżetu. Ważne jest jednak, aby pamiętać, że sukces modelu nie zależy wyłącznie od jego rozmiaru - jakość danych treningowych odgrywa równie istotną rolę. Model z mniejszą liczbą parametrów, ale wyszkolony na danych o wysokiej jakości, może okazać się równie skuteczny, jeśli nie lepszy, niż większy model wytrenowany na danych niskiej jakości.
Potencjał modeli językowych
Ocenia się że 47–56% zadań można by wykonać znacznie szybciej przy tym samym poziomie jakości wykorzystując LLM. Oprogramowanie oparte na LLM będzie miało istotny wpływ na skalowanie skutków ekonomicznych leżących u podstaw modeli. LLM to technologia ogólnego przeznaczenia a to oznaczą że może mieć znaczące implikacje gospodarcze, społeczne i polityczne.
"Sztuczna inteligencja" czyli algorytmy i wykonujące je oprogramowanie mogą identyfikować wzorce w dużych zbiorach danych, konsolidować wiedzę lub tworzyć nowe połączenia."Sztuczna inteligencja" może być wykorzystana by pomagać ludziom identyfikować powiązania między pozornie niepowiązanymi danymi, objaśniać znaczenie poprzez nałożenie nowej warstwy.
Jest to niezwykle, że maszyna potrafi przeprowadzić precyzyjną identyfikację geometrii 3D cząsteczek biologicznych i jednocześnie nie ma w tym niczego niesamowitego - dlaczego maszyna nie miałaby tego zadania wykonać szybciej niż człowiek?
A.I. odświeżyła przepowiednie "upadku programowania" (określenie "kodowanie" jest bardziej właściwe) o których słyszymy od dekad. Tym czasem tworzenie oprogramowania ciągle nie jest rzeczą trywialną. Same programy stają się bardziej złożone nie prostsze. "Sztuczna inteligencja" bardzo pomaga w tym procesie (propozycje kodu, weryfikacja, dokumentowanie, objaśnienia ...) - odciąża programistów i pozwala być im bardziej kreatywnym.
Przepowiednie o firmach zbudowanych na A.I. są niespełnionymi proroctwami. Mamy rok 2024, rynek jest pełny niesamowitego oprogramowania. Czy w związku z tym firmy przestały używać Excel? Ekonomia zawsze wylewa kubeł zimnej wody na rozgrzane głowy marzycieli. Percepcja decydentów i odbiorców jest często dodatkowym firewall'em.
Nie ma żadnej globalnej wioski - jest wzburzone morze na którym A.I. wieje bardziej w żagle dużych galeonów.
To logiczny błąd oczekiwać od algorytmów stworzonych przez człowieka kreatywności która przewyższa idee człowieka.
Cechy takie jaki pomysłowość, wyobraźnia, intuicja, emocje zdecydowanie silniej identyfikują ludzi - maszyny są dobre w symulowaniu.
AI zabierze nam pewna prace i stworzy nową przestrzeń dla naszej aktywności i talentu.
Etyka modeli
Technologia nie tworzy nowego świata. Problemy etyczne pojawiające się w rezultatach pracy modeli językowych nie powstały w nich samych ale poziom niżej. Modele są transparentne - algorytmy korzystają z danych i wyniki bazują na tych źródłach. Są jak małe dzieci których szczerość jest rozbrajająca ale też może doprowadzić do dość niezręcznych sytuacji. Pojęcie "etyki' w "sztuczna inteligencji" jest niewłaściwym użyciem tego słowa. W przestrzeni publicznej niewiele jest treści która nie została poddana cenzurze lub autocenzurze. Te mechanizmy stosowane są także by cenzurować rezultaty dostarczane przez modele językowe. Stosowana jest cenzura semantyczna w celu wykrycia niepożądanych treści w wynikach LLM. W przestrzeni publicznej funkcjonują więc najczęściej "modele cenzurowane.
Product recommendations
The value for business. Shedding the light on recommendation engines details.
Product recommendations in online stores are worth implementing for several reasons, as they can significantly benefit both the consumers and the retailers. Here are some key reasons why product recommendations are valuable:
- Enhanced Customer Experience: Product recommendations provide a personalized shopping experience for customers.
- Increased Sales: Personalized recommendations can lead to higher conversion rates and increased sales.
- Time Savings for Customers: In a vast online marketplace, customers may feel overwhelmed by the sheer number of products available.
- Improved Customer Retention: By offering a personalized and positive shopping experience, online stores can build stronger relationships with their customers.
- Competitive Advantage: In the competitive world of e-commerce, providing a unique and personalized shopping experience can set a store apart from its competitors.
- Data Utilization: Product recommendation algorithms leverage customer data to understand their preferences and behaviors.
- Adaptability and Continuous Improvement: Recommendation systems can adapt and improve over time.
That is what GPT chat said and other sites quote. The fact that personalized recommendations are "worth implementing" seems obvious. It is much more difficult to answer the question "What is the real value of these recommendations - how much profit do they bring?"
What is the real value of product recommendations?
If we take the trouble to check out the results of such a query in Google, we will find out that 35% of Amazon's sales come from recommendations and Netflix achieved 75%. This information originates from some consulting company - published a few years ago is like Garner's "80% of..." or has similar "trust me" certificate. It is undoubtedly impressive, which is why it is often quoted in many materials. Direct revenue increases are more often reported to lie between one and five percent, which can also be substantial in absolute numbers
It is undisputed that recommender systems can have positive business effects in a variety of ways. However, how large these effects actually are - compared to a situation without a recommender system or with a different algorithm - is not always clear.
Unfortunately, while nowadays a number of research datasets are available, they usually do not contain quantitative data from which the business value can be directly inferred. Furthermore, since the choice of a business measures is often specific for a domain, researchers typically abstract from these specific domain what gives simplified results.
The business value of the recommender systems is not adequately defined, measured, or analyzed, potentially leading to wrong conclusions about the true impact of the systems.
Companies usually do not publicly share the exact details about how they profit from the use of recommendation technology and how frequently recommendations are adopted by their customers – main purpose of such information is product or service marketing.