Tworzenie systemu wyszukiwania wysokiej jakości za pomocą Vertex AI

1. Zanim zaczniesz

Zanim przejdziesz dalej, zapoznaj się z tymi informacjami.

Wymagania wstępne

  • Podstawowa wiedza o LLM
  • Podstawowa znajomość systemów RAG

Czego się nauczysz

  • Jak stworzyć wyszukiwarkę Google, która odpowie na Twoje pytania na podstawie przesłanych przez Ciebie danych
  • Jak utworzyć magazyn danych Vertex AI
  • Jak tworzyć agentów Vertex AI
  • Jak używać Cloud Run do wdrażania aplikacji

Czego potrzebujesz

  • konto Google Cloud;
  • projekt Google Cloud,
  • IDE z terminalem

Wprowadzenie

Wyszukiwarka Google to zaawansowane narzędzie, które korzysta z ogromnego indeksu stron internetowych i innych treści, aby dostarczać trafne wyniki zapytań użytkowników. Jest to możliwe dzięki technice Retrieval Augmented Generation (RAG), która jest kluczową techniką w nowoczesnej AI.

RAG działa w ten sposób, że najpierw pobiera odpowiednie fragmenty z korpusu dokumentów. Odbywa się to za pomocą różnych metod, takich jak dopasowywanie słów kluczowych, podobieństwo semantyczne i uczenie maszynowe. Po pobraniu odpowiednich fragmentów są one używane do wygenerowania podsumowania lub odpowiedzi na zapytanie użytkownika.

Główną zaletą RAG jest to, że pozwala modelom językowym uniknąć halucynacji. Halucynacje to termin używany do opisywania generowania tekstu, który nie jest poparty dowodami w korpusie dokumentów. Może się to zdarzyć, gdy modele językowe nie są w stanie odróżnić istotnych informacji od nieistotnych.

RAG pomaga uniknąć halucynacji, ponieważ wygenerowany tekst jest zawsze oparty na dowodach z korpusu dokumentów. Dzięki temu jest bardziej wiarygodnym i godnym zaufania źródłem informacji.

RAG to zaawansowana technika, która jest wykorzystywana w różnych aplikacjach, m.in. w wyszukiwarkach, czatbotach i systemach odpowiadających na pytania. W najbliższych latach prawdopodobnie będzie odgrywać coraz większą rolę w AI.

Oto kilka przykładów praktycznego zastosowania RAG:

  • Wiele systemów wyszukiwania korzysta z RAG, aby generować wyniki wyszukiwania, które są trafne w odniesieniu do zapytania użytkownika.
  • Czatboty używają RAG do generowania odpowiedzi na pytania użytkowników, które są informacyjne i angażujące.
  • Systemy odpowiadania na pytania używają RAG do generowania dokładnych i wyczerpujących odpowiedzi na pytania użytkowników.

RAG to wszechstronna technika, która może być używana do generowania tekstu w różnych dziedzinach i aplikacjach. To potężne narzędzie, które pomaga zwiększać inteligencję i zasób informacji AI.

W tym laboratorium kodowania utworzymy system RAG, który pomoże Ci odpowiadać na pytania na podstawie przesłanego przez Ciebie korpusu. Gotowa platforma RAG o nazwie Vertex AI Search/Agent Builder pomaga przyspieszyć tworzenie systemów RAG, dzięki czemu nie musisz ręcznie zbierać dokumentów, analizować ich, dzielić na fragmenty, generować wektorów dystrybucyjnych, rozszerzać zapytań, pobierać i oceniać kandydatów. Gotowy system RAG pomaga szybko rozpocząć pracę, ale Google Cloud udostępnia też osobne interfejsy API dla każdego procesu, aby umożliwić tworzenie własnych systemów RAG. Pomaga to w dostosowywaniu systemów RAG do wymagań biznesowych.

Co utworzysz

Po ukończeniu tego ćwiczenia w Codelabs będziesz mieć wdrożony działający system RAG, który pomoże Ci odpowiadać na pytania, podając informacje oparte na faktach, uzasadnione i poparte odpowiednimi odniesieniami.

Dowiesz się też, jak używać interfejsów Vertex AI Search API do tworzenia tej architektury RAG w Google Cloud. Dowiesz się też, jak wdrożyć tę aplikację z architekturą RAG (z interfejsem i backendem) w Cloud Run, czyli na platformie bezserwerowej do wdrażania aplikacji jako kontenerów w Google Cloud.

2d055ded874603a6.png

Jak działa aplikacja

  • Przesyłanie danych: użytkownicy mogą przesyłać własny korpus danych, np.plik PDF, jako dane wejściowe.
  • Zadawanie pytań na pasku wyszukiwania: użytkownicy mogą zadawać pytania na pasku wyszukiwania na podstawie przesłanego korpusu danych.
  • Pobieranie odpowiedzi: użytkownicy mogą pobierać wyniki wyszukiwania lub kandydatów i sprawdzać, czy pobrana odpowiedź jest zgodna z prawdą i czy jest uzasadniona na podstawie trafności zapytania.

2. Konfiguracja środowiska

  1. W konsoli Google Cloud na stronie selektora projektów wybierz lub utwórz projekt Google Cloud.
  2. Sprawdź, czy w projekcie Google Cloud włączone są płatności. Dowiedz się, jak sprawdzić, czy w projekcie są włączone płatności.
  3. Będziesz używać Cloud Shell, czyli środowiska wiersza poleceń działającego w Google Cloud. Aby uzyskać do niego dostęp, kliknij Aktywuj Cloud Shell u góry konsoli Google Cloud.

1829c3759227c19b.png

  1. Po połączeniu z Cloud Shell sprawdź, czy uwierzytelnianie zostało już przeprowadzone, a projekt jest już ustawiony na Twój identyfikator projektu, używając tego polecenia:
gcloud auth list
  1. Aby potwierdzić, że polecenie gcloud zna Twój projekt, uruchom w Cloud Shell to polecenie:
gcloud config list project
  1. Jeśli projekt nie jest ustawiony, użyj tego polecenia, aby go ustawić:
gcloud config set project <YOUR_PROJECT_ID>
  1. Upewnij się, że te interfejsy API są włączone:
  • Cloud Run
  • Vertex AI
  • Cloud Storage

Alternatywą dla użycia polecenia gcloud jest przejście przez konsolę za pomocą tego linku. Informacje o poleceniach gcloud i ich użyciu znajdziesz w dokumentacji.

3. Krok 1. Utwórz zasobnik GCP

  • Otwórz konsolę i na pasku wyszukiwania wpisz Cloud Storage.
  • Wybierz Cloud Storage z sugerowanych wyników. 21d2bc910e71f7ec.png
  • Kliknij Utwórz zasobnik.

adf5c0382f6c3540.png

  • Podaj globalnie niepowtarzalną nazwę zasobnika.
  • Kliknij Dalej.
  • W sekcji Typ lokalizacji wybierz Wiele regionów.
  • W menu wybierz opcję us (multiple regions in United States).

731aead7d8497725.png

  • Kliknij Utwórz zasobnik.

f7ac409ed9c4af21.png

4. Krok 2. Utwórz magazyn danych Vertex AI

  • Na pasku wyszukiwania na stronie konsoli wpisz „Kreator agentów Vertex AI”.
  • Wybierz pierwszy produkt, „Agent Builder”.

c4a67b92bb7900e3.png

  • Na stronie Kreator agentów kliknij „Magazyny danych” w pasku nawigacyjnym po lewej stronie.

f86f67d344d398fb.png

  • Kliknij „Utwórz magazyn danych”.

e64e771f33543f46.png

  • Wybierz Cloud Storage jako magazyn danych.
  • Kliknij „Wybierz” pod ikoną Cloud Storage.

3a8d22888e7eedc2.png

  • Na karcie pod opcją „Folder” kliknij przycisk „Przeglądaj”.
  • Wybierz zasobnik utworzony w kroku 1.
  • W opcjach poniżej wybierz „Połączone nieuporządkowane dokumenty (JSONL z metadanymi)”.
  • Kliknij Dalej

13876b5d12dbe1fb.png

  • Na stronie Konfiguracja jako lokalizację magazynu danych wybierz „global”.
  • Nadaj magazynowi danych rozpoznawalną nazwę
  • Kliknij Utwórz.

618b7a456fbffad4.png

Brownie:

  • Tuż nad przyciskiem „Utwórz” zobaczysz opcję przetwarzania dokumentu.
  • Możesz wypróbować różne parsery, np. cyfrowy, OCR lub parser układu.
  • Możesz też włączyć zaawansowane dzielenie na części i określić własne limity rozmiaru części.

38471c1d3411610d.png

5. Krok 3. Utwórz agenta

  • Po utworzeniu magazynu danych kliknij aplikację na pasku nawigacyjnym po lewej stronie i wybierz „Aplikacje”.
  • Kliknij przycisk „Utwórz aplikację”.
  • Wybierz typ aplikacji „Wyszukiwanie” (możesz też tworzyć agentów, boty konwersacyjne, rekomendacje itp.).

ae5294e33f63567c.png

  • W sekcji Treść wybierz „Ogólne”. Możesz też wybrać Multimedia lub Rekomendacje w zależności od magazynu danych, typu danych i systemów, które chcesz utworzyć.
  • Włącz zarówno wersję Enterprise, jak i zaawansowane funkcje LLM.
  • Podaj nazwę aplikacji
  • Podaj nazwę firmy

f8a41c9751f7a8d3.png

  • Upewnij się, że region to „Cały świat”.
  • Kliknij „Dalej”.ed17b18e094ba59a.png
  • Na następnym ekranie wybierz magazyn danych utworzony w kroku 2.
  • Kliknij „Utwórz”.

bc77006e0025ae9e.png

6. Krok 4. Utwórz kontener Docker dla aplikacji

  • Otwieranie terminala w konsoli Google Cloud
  • Sklonuj repozytorium <sample_repository_link> za pomocą tego polecenia:

git clone https://github.com/kkrishnan90/vertex-ai-search-agent-builder-demo

  • Zmień katalog i przejdź do sklonowanego repozytorium za pomocą tego polecenia:

cd vertex-ai-search-agent-builder-demo

  • Struktura folderów
  • Backend – będzie zawierać implementację interfejsu API w języku Python, która pomoże utworzyć punkty końcowe RESTful, z którymi będzie wchodzić w interakcję frontend.
  • Frontend – będzie zawierać aplikację opartą na React i będzie obsługiwać interfejs. Będzie on też zawierać niezbędne wywołania na poziomie aplikacji do backendu za pomocą punktów końcowych REST.
  • Dockerfile – ten plik będzie zawierać wszystkie odpowiednie polecenia do utworzenia kontenera Dockera.
  • W katalogu głównym repozytorium uruchom to polecenie, które pomoże Ci utworzyć obraz Dockera (uwaga: podczas tworzenia kontenerów Dockera na MacBookach z procesorami Apple Silicon, takimi jak M1, M2 itp., używaj flagi - - platform. Ta flaga nie jest konieczna, jeśli tworzysz kontener na komputerze z systemem Windows lub jeśli architektura procesora jest oparta na Intelu).

docker build --platform linux/amd64 -t your-image-name .

  • Po pomyślnym utworzeniu kontenera Dockera uruchom to polecenie, aby otagować kontener odpowiednimi tagami i mieć pewność, że podasz wersję obrazu. Pamiętaj, że aplikacja może mieć wiele wersji, a co za tym idzie, wiele wersji jako tagów w kontenerach Dockera. Zapewnienie, że zawsze używana jest najnowsza stabilna wersja, to dobre podejście z perspektywy DevOps.

docker tag your-image-name REGION-docker.pkg.dev/PROJECT-ID/REPOSITORY-NAME/IMAGE-NAME:TAG

  • Po dodaniu tagu do obrazu kontenera Dockera możemy teraz przesłać obraz do Google Artifact Registry (GAR). GAR to w pełni zarządzana platforma Google, która pomaga zarządzać kontenerami Dockera i kontrolować ich wersje. Uruchom to polecenie, aby przenieść oznaczony kontener do GAR. Więcej informacji znajdziesz pod tym linkiem: [ https://cloud.google.com/artifact-registry/docs/docker/pushing-and-pulling]

docker push REGION-docker.pkg.dev/PROJECT-ID/REPOSITORY-NAME/IMAGE-NAME:TAG

7. Krok 5. Wdróż aplikację w Cloud Run

  • Zminimalizuj terminal. Na pasku wyszukiwania konsoli Google Cloud wyszukaj Cloud Run.
  • Kliknij sugerowaną usługę Cloud Run.

592103eb61c16738.png

  • Kliknij „Utwórz usługę”.
  • Na następnej stronie sprawdź, czy zaznaczona jest opcja „Wdróż 1 wersję z obecnego obrazu kontenera”.
  • Poniżej kliknij „Wybierz”.
  • Po prawej stronie pojawi się pasek nawigacyjny.
  • Sprawdź, czy jako karta jest wybrana Artifact Registry.
  • Sprawdź, czy projekt został wybrany prawidłowo.
  • Kliknij strzałkę, aby rozwinąć akordeon z linkiem do wdrożonego obrazu kontenera.
  • Wybierz tag w kontenerze i rozwiń go (zawsze wybieraj najnowsze wdrożone tagi, czyli np.v1, v2 itp.).
  • Kliknij obraz kontenera widoczny pod nazwą tagu w kontenerze.

aac35d55d7dd874e.png

  • W obszarze Konfiguracja
  • Podaj nazwę usługi dla aplikacji Cloud Run (będzie ona częścią adresu URL po wdrożeniu aplikacji w Cloud Run).
  • Wybierz odpowiedni region (w tym przypadku us-central1 lub dowolny inny).
  • W sekcji Uwierzytelnianie
  • Sprawdź, czy jest zaznaczona opcja „Zezwalaj na nieuwierzytelnione wywołania”.
  • W sekcji Przydział procesora i ceny
  • Wybierz „Procesor jest przydzielany tylko podczas przetwarzania żądań”.
  • Zmień automatyczne skalowanie usługi na 1 (w przypadku środowiska produkcyjnego zalecamy uruchomienie minimalnej liczby instancji, aby obsługiwać codzienny ruch, możesz nawet pozostawić wartość 0).
  • Ustaw „Kontrolę ruchu przychodzącego” na „Wszystko”, aby zezwolić na dostęp do aplikacji z internetu.
  • Kliknij „Utwórz”.
  • Spowoduje to wdrożenie instancji Cloud Run, a jej udostępnienie może potrwać kilka minut.

b8b147265b8d457b.png

  • Po wdrożeniu zobaczysz publicznie dostępny adres URL, z którego możesz uzyskać dostęp do aplikacji internetowej.

1dfdb007c52581a1.png

8. Jak to działa

  • Na stronie głównej aplikacji kliknij przycisk „Prześlij dokument”.
  • Prześlij plik PDF
  • Po zakończeniu przesyłania
  • Kliknij pasek wyszukiwania u góry strony.
  • Rozpocznij wyszukiwanie zapytań związanych z przesłanym dokumentem
  • Gdy wpiszesz zapytanie i klikniesz Szukaj, powinny się wyświetlić wszystkie odpowiednie odpowiedzi z przesłanego przed chwilą dokumentu.
  • Możesz poeksperymentować, przeglądając kod backendu i dodając więcej konfiguracji, np. takich:
  • Dodawanie fragmentów
  • Dodawanie segmentów wyodrębnionych
  • Dodawanie odpowiedzi
  • Dostrajanie wyników top-k, aby pomóc LLM w podsumowaniu odpowiedzi (coś w rodzaju funkcji Przegląd od AI w wyszukiwarce Google)
  • Jako dodatek możesz też dodawać tagi metadanych podczas przesyłania dokumentu. Pomoże to wygenerować aspekty i kategorie, które można filtrować.

9. Czyszczenie danych

Aby uniknąć obciążenia konta Google Cloud opłatami za zasoby użyte w tym laboratorium, wykonaj te czynności:

  1. W konsoli Google Cloud otwórz stronę Zarządzanie zasobami.
  2. Z listy projektów wybierz projekt do usunięcia, a potem kliknij Usuń.
  3. W oknie wpisz identyfikator projektu i kliknij Wyłącz, aby usunąć projekt.
  4. Możesz też otworzyć Cloud Run w konsoli, wybrać wdrożoną usługę i ją usunąć.

10. Gratulacje

Gratulacje! Udało Ci się szybko utworzyć gotowy system RAG, który wykorzystuje najnowocześniejsze modele Google, aby dostarczać wyniki wyszukiwania o jakości Google. Te warsztaty są przeznaczone wyłącznie do celów demonstracyjnych. W przypadku zastosowań produkcyjnych należy skonfigurować więcej zabezpieczeń i mechanizmów ochronnych. Link do pełnego repozytorium znajdziesz tutaj. Korzystając z Google Cloud i wykonując tylko 5 kroków, możemy w kilka minut utworzyć kompleksowy system RAG, który od razu będzie dostarczać wyniki o jakości Google. Wraz z rozwojem generatywnej AI i dużych modeli językowych tworzenie takich systemów RAG pomaga nam też unikać pułapek związanych z halucynacjami i wyświetlaniem informacji bez podania źródła.

To dopiero punkt początkowy, ale dzięki w pełni konfigurowalnym interfejsom API RAG do samodzielnego tworzenia rozwiązań możemy zdziałać cuda. Zapewniają one jeszcze większą przejrzystość, moc i wydajność, dzięki czemu możesz skutecznie zarządzać każdym etapem procesu.