What is RAG and how can it help your company? (film, 12m)
In his latest episode, Mike Tomala presents the RAK method, or Retrieval Augmented Generation, which combines information retrieval with generative artificial intelligence. This method significantly improves the quality of responses generated by language models. In the episode, Mike explains how to practically utilize this method in various scenarios, such as finding product specifications during a customer call or analyzing marketing campaign results. The application of RAK spans multiple industries, and Mike shares his experiences and observations on how to build effective knowledge bases.
During the presentation, Mike emphasizes that a well-structured knowledge base is a key component of the RAK system. It starts with inventorying available data sources, such as CRM systems, intranets, or PDF documents. Choosing the right data sources is crucial, as different systems may require different approaches in creating the knowledge base. Mike discusses the various stages of this process to effectively create a base that meets user needs.
The next essential step involves preparing the data, which requires organization and cleansing. Essentially, all documents must be transformed into plain text to allow further processing. Mike also explains the chunking process, which involves dividing documents into smaller pieces, thereby enhancing the efficiency of information retrieval. It is important that the employed chunking strategies align with the goals of the system, as this affects the quality of the subsequent responses.
All of this leads to the embedding stage, where each text fragment is processed by an embedding model. Mike highlights the various available models, both commercial and open source, and discusses the associated costs. He emphasizes how the selected model significantly influences the quality of the responses generated by the RAK system. Mike mentions different parameters, such as vector size, that affect the algorithm's effectiveness and describes how they can be transformed into vectors in a vector database.
Finally, Mike presents the statistics of the video, showcasing the interest in the topic; at the time of this writing, the video has 3377 views and 183 likes. He also encourages viewers to ask questions and leave comments if they want to know more about the RAK method. Additionally, he suggests watching previous materials to better understand the context and practical applications of the RAK method.
Toggle timeline summary
-
Introduction to the topic and preparation for recording.
-
Explanation of the scientific aid to present the episode's main topic: RAK.
-
Introduction of RAK as a method combining information retrieval with AI.
-
Benefits of RAK, such as improving answer quality and easing work processes.
-
Examples of RAK's practical applications in a professional setting.
-
Explanation of RAK (Retrieval Augmented Generation) and its function.
-
Overview of RAK's operational steps: searching for information and passing it to the language model.
-
Importance of a well-prepared knowledge base for generating accurate responses.
-
Discussion of the inventory stage for determining necessary data sources.
-
Data cleaning steps and the need for text-only formats before database entry.
-
Chunking stage where documents are divided into manageable pieces for effective information retrieval.
-
Explanation of the chunking strategy based on equal length and its limitations.
-
Introduction to embedding (vectorization) as a key step in processing text.
-
Discussion of embedding models and their impact on the quality of generated responses.
-
Demonstration of how to query the knowledge base and generate responses using RAK.
-
Summary of RAK's functionality and invitation for viewer feedback.
Transcription
Mike, już nagrywamy, co tam jeszcze szykujesz? A, to będzie taka pomoc naukowa, aby w prosty sposób zaprezentować główny temat odcinka, czyli RAK. Co to takiego? RAK to metoda, która łączy wyszukiwanie informacji z generatywną sztuczną inteligencją. Dzięki tej metodzie możemy znacznie poprawić jakość odpowiedzi modelu językowego, a także usprawnić i ułatwić sobie pracę. W jaki sposób? Wyobraź sobie, że możesz błyskawicznie znaleźć każdą potrzebną informację do pracy w firmie, np. specyfikację produktu podczas rozmowy z klientem, albo sprawdzić status zadań w projekcie, czy błyskawicznie przeanalizować wyniki poprzednich kampanii marketingowych. Tych przykładów mógłbym wymieniać sporo, ale to właśnie umożliwia RAK. W tym odcinku w prosty sposób wyjaśnię, jak działa system RAK oraz na co zwrócić uwagę przy planowaniu takiego systemu. Zaczynaj, jak to działa? RAK, czyli po angielsku Retrieval Augmented Generation, można przetłumaczyć na język polski jako generowanie wzbogacone wyszukiwaniem. A więc jest to system związany z wyszukiwaniem informacji i generowaniem odpowiedzi przez AI. W praktyce wygląda to tak, że gdy taki system otrzyma zapytanie od użytkownika, to wykonuje dwa główne kroki. Najpierw przeszukuje specjalnie opracowaną bazę wiedzy pod kątem informacji, które mogą być istotne dla zadanego pytania. Taka baza wiedzy jest często określona angielską nazwą Knowledge Base. Natomiast w drugim kroku system RAK przekazuje znalezione informacje do modelu językowego, czyli do sztucznej inteligencji. Na podstawie przekazanych informacji model generuje dla użytkownika dokładną i ładnie sformatowaną odpowiedź. I już? To wszystko? No nie tak szybko. Jak wspomniałem, system RAK musi mieć specjalnie przygotowaną bazę wiedzy. Odpowiednie stworzenie takiej bazy wiedzy jest bardzo istotne dla jakości generowanych odpowiedzi. Dlatego zobacz, jak wygląda budowanie takiego systemu i na co zwrócić uwagę. Okej, pokaż. Pierwszy etap nazwałbym inwentaryzacją. Na tym etapie trzeba ustalić wszystkie dostępne źródła danych, które mogą być potrzebne do generowania odpowiedzi. Źródłem danych może być np. system CRM, intranet, firmowe bazy danych, czy po prostu jakieś dokumenty, w tym także PDF-y. Wybierając źródła danych warto dobrze określić cel systemu, kto będzie zadawał do niego pytania oraz jakich odpowiedzi będzie oczekiwał. Inaczej będzie zbudowany system automatycznej obsługi klienta, a inaczej np. system do analizy prawnej wewnętrznych dokumentów. Większa liczba dokumentów to także wyższe koszty stworzenia bazy wiedzy, ale o tym opowiem za chwilę. Dane pochodzące z różnych systemów mogą być w różnych formatach, więc kolejnym krokiem jest zebranie i czyszczenie danych. Przykładowo pliki w formacie PDF mogą wymagać przekształcenia na zwykły tekst, a pliki dokumentów muszą zostać pozbawione formatowania. Przed kolejnym etapem wszystkie dokumenty muszą mieć postać tekstową. Mając już dokumenty przygotowane do umieszczenia w bazie wiedzy można przejść do kolejnego etapu, czyli chunkingu. Jest to kluczowy etap, dlatego zatrzymajmy się przy nim na chwilę. Otwórzmy sobie przykładowy dokument tekstowy. Jest to tekst z opisem fikcyjnej firmy. Jeśli chcesz znaleźć informację, kto np. kieruje działem sprzedaży w tej firmie, to nie czytasz całego dokumentu, ale starasz się znaleźć fragment, który może zawierać poszukiwaną informację. Można powiedzieć, że nawet nieświadomie dzielisz długi dokument na fragmenty i wybierasz ten, w którym prawdopodobnie znajduje się informacja, kto jest szefem działu sprzedaży. Przygotowując bazę wiedzy dla systemu RAK również trzeba podzielić dokumenty na fragmenty, aby efektywnie wyszukiwać istotne informacje. Jedną z podstawowych strategii chunkingu jest podział na fragmenty o równej długości. Chunk to po angielsku właśnie fragment lub kawałek, dlatego nazywa się to chunking. Ale przecież wtedy zdania mogą zostać ucięte w środku. Słuszna uwaga. Przy takim podziale możemy stracić bardzo ważny kontekst treści, ponieważ znajdzie się na styku dwóch fragmentów. Dlatego można zastosować np. tzw. overlapping, czyli dzielimy tekst na fragmenty, które się na siebie nakładają. Jest szansa, że w ten sposób kontekst treści nie zostanie utracony i znajdzie się w którymś fragmencie. Oczywiście i ta metoda nie jest idealna i powoduje sporą duplikację treści, a co za tym idzie zwiększa koszty i stworzenia bazy wiedzy i aktualizacji danych w przyszłości. A jakbym miał dokument z tabelą? Wtedy overlapping nie pomoże. Strategii i różnych technik podziału dokumentów na fragmenty jest więcej. Wszystko zależy od celów danego systemu i rodzaju danych wejściowych. Można np. wykorzystać model językowy do próby semantycznego podziału tekstu na fragmenty, które będą zawierały wspólny kontekst, ale to już bardziej złożone rozwiązanie i temat na inny odcinek. Okej, ale co daje ten podział na fragmenty? Teraz przechodzimy do etapu trzeciego, który możemy nazwać embeddingiem, czyli osadzaniem. I już wyjaśniam o co chodzi. Polega on na tym, że każdy chang jest przesyłany do specjalnego modelu językowego. Taki model nazwany jest modelem embeddingowym. Zadaniem tego modelu jest wygenerowanie wektora liczb dla przekazanego fragmentu tekstu. I co dalej się dzieje? Poczekaj, poczekaj. Nie ciekawi Cię, jak ten model przekształca tekst na wektor? No jak? Model embeddingowy analizuje tekst semantycznie, przekształcając znaczenie słów i kontekst w wielowymiarową przestrzeń wektorową. Pokażę Ci to na przykładzie. Wezmę chang A, który brzmi W najbliższych latach planujemy ekspansję na rynki zagraniczne oraz dalszy rozwój naszych produktów w oparciu o najnowsze technologie. I teraz wygeneruje dla niego wektor. Jeśli jednak napisałbym ten tekst inaczej, używając innych słów, na przykład firma chce stać się międzynarodowym liderem innowacji i teraz dla niego wygenerował wektor liczb, to widać, że te wektory są bardzo podobne, mimo, że zawierają zupełnie inne słowa. I co z tego? Wektor można rozumieć jako punkt w takiej przestrzeni wielowymiarowej, ale dla uproszczenia, zobacz to w przestrzeni dwuwymiarowej. Punkty z tych changów A i B byłyby blisko siebie. Gdy weźmiemy fragment z zupełnie innym kontekstem, to wygenerowany wektor może znajdować się w zupełnie innym miejscu. Te wektory wraz z fragmentami i metainformacjami zapisywane są do specjalnej bazy danych, tak zwanej wektorowej bazy danych. I właśnie w ten sposób mamy stworzoną wektorową bazę wiedzy. To nawet zrozumiałem. Świetnie, porozmawiajmy więc o pieniądzach. Ale już Ci przecież wszystko oddałem. Po pierwsze nie wszystko, a po drugie mówię o kosztach tworzenia wektorowej bazy wiedzy. Wektoryzacja wymaga modelu embeddingowego. Na rynku dostępne są zarówno modele embeddingowe zamknięte, komercyjne, jak i otwarte open source. Wybór modelu ma znaczenie dla finalnej jakości odpowiedzi generowanych przez RAC. Jednym z podstawowych parametrów modeli embeddingowych jest rozmiar generowanego wektora. Przykładowo OpenAI udostępnia modele embeddingowe, które generują wektory z 1536 wymiarami albo 3072 wymiarami. Koszt wygenerowania jednego wektora, czyli przetworzenia jednego fragmentu tekstu, różni się w obu przypadkach. Zazwyczaj im więcej wymiarów, tym drożej. Istnieją jednak modele np. open source z mniejszą liczbą wymiarów, których koszt wykorzystania może być mniejszy. Warto jednak wiedzieć, że im więcej wymiarów, tym dopasowanie fragmentów może być lepsze, co sprawi także, że finalne odpowiedzi systemu będą bardziej trafne. Poza tym generowanie wektorów często wiąże się z przetwarzaniem danych poufnych czy po prostu wewnętrznych firmowych. W takich przypadkach rozwiązania open source uruchamiane na własnych serwerach mogą okazać się bardziej bezpieczne. Nie omówię wszystkich aspektów, które należy wziąć pod uwagę wybierając modele embeddingowe, ale pamiętaj, że wybór musi zostać poprzedzony dokładną analizą i uwzględniać różne aspekty i ograniczenia. Jak już jesteśmy przy kwestiach nieco technicznych, to warto też zwrócić uwagę na wektorową bazę danych. Na rynku istnieje kilka rozwiązań, które zyskały na popularności dzięki AI. Wybór wektorowej bazy danych to temat na osobny odcinek, ale możesz zobaczyć kilka popularnych rozwiązań takich jak Pinecone, Wayfade, Melvos. Ale czemu to musi być wektorowa baza danych, a nie jakaś zwykła? Jak pamiętasz, RAC to generowanie wzbogacone wyszukiwaniem. Mamy już bazę wiedzy, w której będziemy poszukiwać informacje, a teraz zobacz, jak wygląda proces generowania odpowiedzi. Wtedy wszystko się wyjaśni. Ok, pokaż. Pokażę to na przykładzie. Tworząc bazę wiedzy przetworzyliśmy opis naszej fikcyjnej firmy. Zadajmy więc teraz pytanie, jaka jest strategia firmy? W pierwszym kroku zapytanie jest również wysyłane do modelu embeddingowego. Jak już wiesz, model embeddingowy generuje wektor. Wektor zapytania możemy porównać do wektorów w bazie wiedzy i wybrać te fragmenty, które są zbliżone semantycznie do zadawanego pytania. Zaczynam kapować. Ale żeby nie było tak łatwo, powiem Ci, jak wyszukiwane są wektory fragmentów podobne do wektora zapytania. Najczęściej używana jest odległość kosinusowa, która mierzy kąt między wektorami. Im mniejszy kąt, tym większe podobieństwo, czyli im wartość kosinusowa bliżej jedynki, tym bardziej podobne wektory. Tego na pewno nie zrozumiem. Nie musisz. Tym właśnie zajmuje się wektorowa baza danych. Taka baza ma zaimplementowane algorytmy wyszukiwania zbliżonych wektorów. Dlatego właśnie systemy RAAG buduje się na wektorowych bazach danych, a nie jakichś klasycznych. Gdy w wektorowej bazie danych znalezione zostaną fragmenty podobne do zapytania, to wraz z całym zapytaniem są przekazywane do LLM-a, czyli po prostu do modelu językowego. Może to być jakiś zamknięty model typu ChatGPT, CLOT, ale też open source jak Bielik, LLM czy DeepSeek. Model językowy analizuje pytanie oraz przekazane fragmenty i zwraca pełną precyzyjną odpowiedź dla użytkownika. Możemy nawet zasymulować, jaką odpowiedź wygenerowałby ChatGPT, gdy przekażemy mu wybrane fragmenty oraz pytanie. Zobaczcie. Odpowiedź jest krótka, ale prawdziwa. Niezmyślona. Model nie pyta, o jaką firmę chodzi i nie zadaje dodatkowych pytań. To tyle na dzisiaj. Widzieliście, jak działa RAK i jakie daje możliwości. Jeśli chcecie więcej technicznych detali, dajcie znać w komentarzach. Zachęcam także do obejrzenia poprzednich filmów i do zobaczenia w kolejnym odcinku.