RAG dla chatbota na przykładzie CrewAI – notatki z TTMS Tech Talk

Spis treści

    Podczas spotkania „RAG dla chatbota na przykładzie CrewAI”, które odbyło się 17 września, Jakub Kraśniewski, Senior AI Developer w TTMS, opowiedział o usprawnieniu chatbota korzystającego z dokumentacji klienta. Przedstawił problemy z przygotowaniem i wyszukiwaniem informacji, zastosowane rozwiązanie oraz sposób sprawdzania jakości odpowiedzi. Projekt dotyczył firmy z sektora edukacyjnego, której klienci przygotowują się do egzaminu certyfikacyjnego. Chatbot miał pomagać im w uzyskiwaniu informacji o zapisach, przebiegu egzaminu, ocenianiu i odwołaniach, a tym samym odciążyć dział wsparcia. Korzystał z publicznie dostępnych dokumentów PDF obejmujących kilkaset stron, głównie w języku angielskim. Zespół potrzebował sposobu na trafne wyszukiwanie odpowiedzi w tych materiałach przy wymaganym czasie oczekiwania rzędu 4 do 5 sekund.

    RAG AI

    1. Jak RAG pomaga chatbotowi korzystać z wiedzy firmy?

    Na początku prezentacji Jakub wyjaśnił, jak działa RAG (Retrieval-Augmented Generation), czyli generowanie odpowiedzi z wykorzystaniem wyszukanych materiałów źródłowych. System odnajduje informacje związane z pytaniem użytkownika i przekazuje je modelowi językowemu jako kontekst odpowiedzi. W omawianym projekcie były to fragmenty dokumentacji opisującej zasady i procedury egzaminacyjne.

    Po odczytaniu tekstu z dokumentów system dzieli go na mniejsze fragmenty. Model embeddingowy (model AI przedstawiający cechy znaczeniowe tekstu w postaci liczb) przekształca je w wektory zapisywane w bazie. W ten sam sposób przetwarzane jest pytanie użytkownika. Porównanie tych reprezentacji pozwala wyszukać fragmenty powiązane znaczeniowo z pytaniem. Jakub podkreślał, że zespół odpowiada za jakość materiałów przekazywanych modelowi. Trzeba sprawdzić, czy tekst został poprawnie odczytany, czy podział zachował potrzebny kontekst i czy wyszukiwanie dostarcza informacje przydatne do odpowiedzi. Znaczenie tych etapów pokazały problemy, na które zespół natrafił w rozwiązaniu wykorzystującym CrewAI.

    2. Co utrudniało wyszukiwanie informacji w projekcie z CrewAI?

    Po wyjaśnieniu podstaw RAG Jakub przeszedł do doświadczeń z projektu wykorzystującego CrewAI, zestaw narzędzi do budowania systemów opartych na agentach AI. Omówił trzy problemy napotkane w używanej konfiguracji: zbyt obszerne fragmenty tekstu, brak dodatkowej oceny trafności wyników oraz błędy w odczycie dokumentów PDF.

    2.1 Zbyt obszerne fragmenty dokumentów

    W konfiguracji opisanej przez Jakuba tekst dzielono na fragmenty po 4000 znaków. Dla jednego pytania system pobierał pięć takich fragmentów, więc do modelu trafiało nawet około 20 000 znaków materiału źródłowego. Duży fragment może zawierać informacje dotyczące kilku różnych zagadnień, co utrudnia dopasowanie go do konkretnego pytania. Model generujący odpowiedź musi następnie wybrać potrzebne informacje spośród przekazanych treści. W tym projekcie sposób podziału dokumentów wymagał więc dostosowania do ich struktury i pytań użytkowników.

    2.2 Brak dodatkowej oceny trafności wyników

    Jakub zwrócił uwagę, że w używanej konfiguracji brakowało rerankingu, czyli ponownej oceny i uporządkowania wyników wyszukiwania według ich przydatności do odpowiedzi na pytanie użytkownika. System może najpierw wyszukać większą liczbę fragmentów, a następnie poddać je dodatkowej ocenie, aby wybrać te najbardziej przydatne do przygotowania odpowiedzi. Jakub wskazał tę metodę jako możliwe usprawnienie, którego przydatność warto ocenić, sprawdzając zarówno jakość odpowiedzi, jak i czas oczekiwania na nią.

    2.3 Błędna kolejność odczytu tekstu w wielokolumnowych PDF-ach

    Kolejny problem dotyczył odczytu dokumentów. Narzędzie pobierało tekst z wielokolumnowych PDF-ów wiersz po wierszu, łącząc treści z sąsiadujących kolumn. Zaburzało to kolejność zdań i utrudniało późniejsze wyszukiwanie informacji. Tak przetworzony tekst trafiał do dalszego podziału na fragmenty. Błąd powstawał więc już podczas przygotowania danych i wpływał na kolejne etapy pracy z dokumentacją. Ten przykład pokazał, dlaczego sprawdzanie jakości RAG warto rozpocząć od porównania odczytanego tekstu z dokumentem źródłowym.

    RAG AI business

    3. Jak czas odpowiedzi wpływa na wybór między Classic RAG, Agentic RAG i Graph RAG?

    W projekcie istotnym wymaganiem była odpowiedź w czasie około 4 do 5 sekund. Jakub omówił trzy podejścia do RAG z perspektywy kosztu przygotowania danych, możliwości sprawdzania działania oraz czasu potrzebnego na obsługę pytania.

    Podejście Sposób działania omawiany na spotkaniu Co uwzględnić przy wyborze
    Classic RAG Wyszukiwanie fragmentów w bazie wiedzy, opcjonalny reranking i przekazanie kontekstu do modelu. Jakość podziału dokumentów, trafność wyszukiwania i objętość przekazywanego kontekstu.
    Agentic RAG Agent dobiera narzędzia i sposób wyszukiwania, a w razie potrzeby wykonuje kolejne zapytania. Możliwość dostosowania wyszukiwania do pytania oraz czas i koszt dodatkowych operacji.
    Graph RAG Wyszukiwanie wykorzystuje graf wiedzy opisujący obiekty występujące w materiałach oraz relacje między nimi. Nakład na budowę i utrzymanie grafu oraz przydatność relacji dla pytań użytkowników.

    W podejściu agentowym model może korzystać z kilku narzędzi, na przykład wyszukiwania wektorowego, wyszukiwania po słowach kluczowych lub filtrowania po metadanych opisujących dokument. Kolejne kroki pozwalają rozbudowywać poszukiwanie informacji, a ich liczba i kolejność wpływają na czas odpowiedzi. W przedstawionym podejściu grafowym część pracy wykonywana jest podczas budowania bazy wiedzy. Z tekstu wydobywa się obiekty i łączące je relacje. Taki mechanizm stanowi również podstawę GraphRAG opisanego przez Microsoft. Jakub zwracał uwagę na koszty tego przygotowania i trudność ręcznej analizy rozbudowanego grafu.

    W omawianym projekcie wymagany czas odpowiedzi przemawiał za rozwijaniem klasycznego RAG. Zespół skupił się na sposobie podziału dokumentów i doboru kontekstu.

    4. Jak hierarchiczne dzielenie dokumentów pomaga zachować kontekst?

    Zastosowane rozwiązanie polegało na uporządkowaniu materiału na trzech powiązanych poziomach: strony, akapitu i zdania. System zachowywał informację o tym, do którego akapitu należy zdanie oraz na której stronie znajduje się akapit. Treść była reprezentowana w bazie wektorowej na różnych poziomach szczegółowości. Dzięki temu wyszukiwanie mogło odnaleźć zarówno konkretne zdanie, jak i większy fragment zawierający potrzebne informacje. Według relacji Jakuba dodatkowy koszt przechowywania i przetwarzania tych reprezentacji był akceptowalny przy skali materiałów w projekcie.

    Odnalezienie trafnego zdania pozwalało pobrać obejmujący je akapit i przekazać modelowi szerszy kontekst. W zależności od potrzeb można było sięgnąć również po całą stronę. Załóżmy, że użytkownik pyta o termin odwołania od wyniku egzaminu. System odnajduje zdanie określające ten termin, a następnie pobiera cały akapit, który wyjaśnia, od kiedy należy go liczyć i jak złożyć odwołanie. Dzięki temu model może uwzględnić te warunki w odpowiedzi.

    5. Jak sprawdzać jakość RAG na własnych danych?

    W końcowej części prezentacji Jakub podkreślił znaczenie benchmarku, czyli zestawu testów pozwalającego porównywać warianty rozwiązania. Omówił sprawdzanie wyników wyszukiwania względem informacji oznaczonych przez człowieka oraz wykorzystanie modelu językowego do oceny odpowiedzi. W praktyce warto rozdzielić ocenę na dwa poziomy. Pierwszy dotyczy wyszukiwania: czy system dostarczył fragment zawierający potrzebną informację? Drugi obejmuje odpowiedź: czy model poprawnie wykorzystał otrzymany materiał? Taki podział pomaga ustalić, który etap wymaga poprawy.

    W dodatkowych informacjach przekazanych po spotkaniu Jakub doprecyzował sposób testowania i uzyskane wyniki. Zestaw testowy obejmował pytania z całego zakresu dokumentacji oraz rzeczywiste pytania użytkowników, zebrane anonimowo podczas uruchomienia prototypu na początku roku. Dokładność odpowiedzi wzrosła z około 70% do około 98%, czyli o około 28 punktów procentowych. Wynik dotyczy wewnętrznego testu przeprowadzonego w tym projekcie. Według relacji Jakuba rozwiązanie zachowało również szybki czas odpowiedzi. W chwili przekazania tych informacji chatbot miał za sobą testy wewnętrzne, a firma planowała udostępnić go części klientów. Odciążenie działu wsparcia i ułatwienie dostępu do informacji pozostawały celami wdrożenia. Ocena ich realizacji wymaga danych z użytkowania narzędzia.

    Osobnym obszarem oceny pozostaje model embeddingowy. Jakub wskazywał, że jego dobór powinien uwzględniać język materiałów i wyniki uzyskiwane na własnym zbiorze danych. Wybór tego modelu wpływa na to, jakie fragmenty system odnajdzie, zanim rozpocznie generowanie odpowiedzi.

    6. Co z tych doświadczeń wynika dla firm wdrażających chatbota?

    Omówiony projekt pokazuje, jak konkretne wymagania porządkują pracę nad RAG. Oczekiwany czas odpowiedzi pomógł zawęzić wybór rozwiązania, analiza dokumentów ujawniła problemy z odczytem i podziałem treści, a wewnętrzny test pozwolił ocenić efekt zmian.

    Przy planowaniu podobnego wdrożenia warto uporządkować pięć kwestii:

    • Materiały źródłowe: sprawdzić, czy odczyt dokumentów zachowuje sens i kolejność tekstu.
    • Podział treści: dopasować wielkość fragmentów i powiązania między nimi do struktury materiałów.
    • Pytania użytkowników: przygotować zestaw odzwierciedlający zadania, które chatbot ma obsługiwać.
    • Czas odpowiedzi: ustalić oczekiwania i uwzględniać je podczas porównywania wariantów.
    • Ocena jakości: sprawdzać zarówno trafność wyszukanych informacji, jak i sposób wykorzystania ich w odpowiedzi.

    Porozmawiajmy o AI w Twojej firmie

    W TTMS pracują eksperci, którzy tak jak Jakub łączą wiedzę technologiczną z doświadczeniem w projektach dla klientów. Podczas Tech Talków dzielą się rozwiązaniami sprawdzonymi w praktyce, a zdobytą wiedzę wykorzystują w kolejnych wdrożeniach.

    Jakie dokumenty mogą tworzyć bazę wiedzy chatbota z RAG?

    Chatbot z RAG może korzystać z firmowych polityk, instrukcji obsługi produktów, procedur, odpowiedzi na najczęściej zadawane pytania i innych materiałów zawierających informacje przydatne użytkownikom. W zależności od dostępnych integracji źródłami mogą być pliki PDF, dokumenty Word, treści stron internetowych i artykuły z bazy wiedzy. Zeskanowane dokumenty wymagają optycznego rozpoznawania znaków (OCR), które przekształca obraz tekstu w treść możliwą do przeszukiwania. Tabele, diagramy i złożone układy stron mogą wymagać dodatkowego przetwarzania, aby zachować ich znaczenie. Przed dodaniem dokumentów należy sprawdzić, czy są poprawne, aktualne i zatwierdzone do udostępnienia danej grupie odbiorców. Przejrzysta struktura materiałów pomaga systemowi wyszukiwać informacje i dostarczać kontekst potrzebny do odpowiedzi.

    Jak aktualizować bazę wiedzy chatbota z RAG?

    Utrzymanie aktualnej bazy wiedzy chatbota z RAG wymaga procesu wykrywania i przetwarzania zmian w materiałach źródłowych. W zależności od potrzeb firmy aktualizacje mogą odbywać się według harmonogramu lub po dodaniu, zmianie albo usunięciu dokumentu. System aktualizuje wówczas przeszukiwane treści oraz powiązane z nimi reprezentacje, takie jak embeddingi, czyli liczbowe reprezentacje cech znaczeniowych tekstu. Informacje o wersji i datach obowiązywania pomagają odróżnić aktualne wytyczne od starszych materiałów. Dokumenty usunięte lub zastąpione nowszymi wersjami należy również wycofać z aktywnych wyników wyszukiwania, a odpowiedzi zapisane w pamięci podręcznej mogą wymagać odświeżenia. Wyznaczenie osoby odpowiedzialnej za każdy obszar treści pomaga zadbać o jakość informacji wykorzystywanych przez chatbota.

    Czy chatbot z RAG może podawać źródła swoich odpowiedzi?

    Tak, chatbot z RAG może dołączać do odpowiedzi linki, tytuły dokumentów, numery stron lub cytowane fragmenty. Wymaga to zachowania informacji o źródłach podczas przetwarzania dokumentów i powiązania wyszukanych fragmentów z odpowiedzią. Przydatne odwołania pozwalają użytkownikowi otworzyć właściwy materiał i samodzielnie sprawdzić kontekst. System powinien również weryfikować, czy każde wskazane źródło potwierdza informację, do której się odnosi. Sam link do źródła nie gwarantuje, że odpowiedź poprawnie odzwierciedla treść dokumentu. Podczas testów należy sprawdzać zarówno jakość odpowiedzi, jak i poprawność odwołań, w tym możliwość otwarcia wskazanych materiałów przez użytkownika.

    Jak chatbot z RAG może uwzględniać uprawnienia dostępu do dokumentów firmowych?

    Chatbot z RAG może wykorzystywać tożsamość i uprawnienia zalogowanego użytkownika, aby określić, które dokumenty wolno mu przeszukiwać. Weryfikacja uprawnień powinna nastąpić, zanim treści objęte ograniczeniami dostępu trafią do modelu językowego. Te same zasady muszą obejmować podgląd dokumentów, odwołania do źródeł i odpowiedzi zapisane w pamięci podręcznej, jeśli zawierają chronione informacje. Zmiany uprawnień w systemie źródłowym powinny być również uwzględniane podczas wyszukiwania informacji przez chatbota. Zespół powinien przetestować rozwiązanie na kontach o różnych rolach, w tym z ograniczonym dostępem. Takie testy pomagają potwierdzić, że każda osoba otrzymuje odpowiedzi oparte na informacjach, do których ma uprawnienia.

    Co powinien zrobić chatbot z RAG, gdy nie znajdzie odpowiedzi?

    Gdy dostępne dokumenty zawierają zbyt mało informacji, chatbot z RAG powinien jasno poinformować, że na podstawie swoich źródeł nie może udzielić wiarygodnej odpowiedzi. Jeśli pytanie jest niejednoznaczne, może poprosić o doprecyzowanie lub wskazać powiązany dokument, który może pomóc użytkownikowi. W sprawach wymagających dalszej pomocy może skierować go do odpowiedniego zespołu lub kanału wsparcia. System potrzebuje jasno określonych zasad postępowania z informacjami niepełnymi, sprzecznymi lub brakującymi. Testy powinny obejmować pytania, na które baza wiedzy nie zawiera odpowiedzi, aby zespół mógł ocenić zachowanie chatbota w takich sytuacjach. Analiza pytań pozostawionych bez odpowiedzi może również ujawnić luki w dokumentacji firmy i pomóc ustalić priorytety kolejnych aktualizacji.

    Wiktor Janicki

    Transition Technologies MS świadczy usługi informatyczne terminowo, o wysokiej jakości i zgodnie z podpisaną umową. Polecamy firmę TTMS jako godnego zaufania i rzetelnego dostawcę usług IT oraz partnera wdrożeniowego Salesforce.

    Czytaj więcej
    Julien Guillot Schneider Electric

    TTMS od lat pomaga nam w zakresie konfiguracji i zarządzania urządzeniami zabezpieczającymi z wykorzystaniem różnych technologii. Ueługi świadczone przez TTMS są realizowane terminowo, i zgodnie z umową.

    Czytaj więcej

    Już dziś możemy pomóc Ci rosnąć

    Porozmawiajmy, jak możemy wesprzeć Twój biznes

    TTMC Contact person
    Monika Radomska

    Sales Manager