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

1. Zanim zaczniesz

Oto kilka rzeczy, na które warto zwrócić uwagę przed kontynuowaniem tego ćwiczenia z programowania.

Wymagania wstępne

  • Podstawowa wiedza na temat LLM
  • Podstawowa znajomość systemów RAG

Czego się nauczysz

  • Jak utworzyć wyszukiwarkę Google o wysokiej jakości, która odpowie na Twoje pytania na podstawie przesłanych przez Ciebie danych
  • Jak utworzyć Vertex AI Datastore
  • Jak tworzyć agenty Vertex AI
  • Jak wykorzystać Cloud Run do wdrożenia aplikacji

Czego potrzebujesz

  • konto Google Cloud,
  • Projekt Google Cloud
  • IDE z terminalem

Wstęp

Wyszukiwarka Google to zaawansowane narzędzie, które wykorzystuje ogromny indeks stron internetowych i innych treści, aby wyświetlać użytkownikom trafne wyniki wyszukiwania. Jest to możliwe dzięki zastosowaniu techniki Retrieval Augmented Generation (RAG), która jest kluczową techniką współczesnej AI.

RAG pobiera najpierw odpowiednie fragmenty z korpusu dokumentów. Do tego celu wykorzystywane są różne metody, np. dopasowywanie słów kluczowych, podobieństwo semantyczne czy systemy uczące się. Po pobraniu odpowiednich fragmentów służą one 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 określający generowanie tekstu, którego nie obejmują dowody w korpusie dokumentu. Może się tak zdarzyć, gdy modele językowe nie są w stanie odróżnić informacji istotnych od nieistotnych.

RAG pomaga uniknąć pomyłek, zapewniając, że generowany tekst jest zawsze oparty na dowodach z korpusu dokumentu. Dzięki temu jest to bardziej wiarygodne i wiarygodne źródło informacji.

RAG to zaawansowana technika wykorzystywana w różnych aplikacjach, w tym w wyszukiwarkach, czatbotach i systemach odpowiadania na pytania. W najbliższych latach prawdopodobnie będzie odgrywać coraz większą rolę w AI.

Oto kilka przykładów zastosowania RAG w praktyce:

  • Wiele systemów wyszukiwania wykorzystuje technologię RAG do generowania wyników wyszukiwania pasujących do zapytania użytkownika.
  • Czatboty korzystają ze standardu RAG, aby generować odpowiedzi na pytania użytkowników, które zawierają przydatne i ciekawe informacje.
  • Systemy odpowiedzi na pytania korzystają ze standardu RAG, aby generować dokładne i wyczerpujące odpowiedzi na pytania użytkowników.

RAG to uniwersalna technika, której można używać do generowania tekstu w różnych domenach i zastosowaniach. To zaawansowane narzędzie, dzięki któremu AI może zwiększać inteligencję i przydatne informacje.

W ramach tego ćwiczenia w Codelabs utworzymy system RAG, który pomoże Ci odpowiedzieć na pytania, korzystając z dostarczonego przez Ciebie korpusu. Gotowe środowisko RAG o nazwie Vertex AI Search/Agent Builder pomaga przyspieszyć tworzenie systemów RAG. Dzięki temu nie musisz ręcznie gromadzić dokumentów, analizować ich, podzielić na fragmenty, generować wektory dystrybucyjne, rozszerzać zapytania, pobierać kandydatów i tworzyć rankingi. Ogólnie dostępny system RAG pomaga szybko rozpocząć pracę, a Google Cloud zapewnia również osobne interfejsy API do każdego procesu służące do tworzenia własnych systemów RAG, które ułatwiają dostosowywanie systemów RAG do wymagań biznesowych.

Co utworzysz

Po zakończeniu tego ćwiczenia w Codelabs będziesz mieć wdrożony działający system RAG, który pomoże Ci znaleźć odpowiedzi na pytania oparte na faktach, udokumentowanych i przywołanych w odpowiednich źródłach.

Dzięki temu lepiej zrozumiesz, jak używać interfejsów Vertex AI Search API do tworzenia architektury RAG w Google Cloud. Dodatkowo dowiesz się, jak wdrożyć tę aplikację w architekturze RAG (z frontendem i backendem) w Cloud Run – bezserwerowej platformie służącej do wdrażania aplikacji jako kontenerów w Google Cloud.

2D055ded874603a6.png

Jak działa aplikacja

  • Przesyłanie danych: użytkownicy mogą przesyłać jako dane wejściowe własny zbiór danych, np.plik PDF.
  • 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 i kandydaci oraz sprawdzać prawdziwość / prawdziwość pobieranych odpowiedzi 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 są włączone płatności. Dowiedz się, jak sprawdzić, czy w projekcie są włączone płatności.
  3. Użyjesz Cloud Shell – środowiska wiersza poleceń działającego w Google Cloud. Aby uzyskać do niej dostęp, kliknij Aktywuj Cloud Shell u góry konsoli Google Cloud.

1829c3759227c19b.png

  1. Po nawiązaniu połączenia z Cloud Shell możesz użyć tego polecenia, aby sprawdzić, czy użytkownik jest już uwierzytelniony i czy identyfikator projektu jest ustawiony na identyfikator Twojego projektu:
gcloud auth list
  1. Uruchom to polecenie w Cloud Shell, aby sprawdzić, czy polecenie gcloud zna Twój projekt.
gcloud config list project
  1. Jeśli Twój projekt nie jest skonfigurowany, ustaw go za pomocą tego polecenia:
gcloud config set project <YOUR_PROJECT_ID>
  1. Sprawdź, czy te interfejsy API są włączone:
  • Cloud Run
  • Vertex AI
  • Cloud Storage

Zamiast używać polecenia gcloud, możesz użyć tego linku, korzystając z konsoli. Więcej informacji o poleceniach i sposobie korzystania z gcloud znajdziesz w dokumentacji.

3. Krok 1. Utwórz zasobnik GCP

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

adf5c0382f6c3540.png

  • Podaj unikalną globalnie nazwę zasobnika
  • Kliknij Dalej.
  • W polu Typ lokalizacji wybierz Wiele regionów.
  • Pamiętaj, by w menu wybrać opcję us (multiple regions in United States).

731aead7d8497725.png

  • Kliknij Utwórz zasobnik.

f7ac409ed9c4af21.png

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

  • Na pasku wyszukiwania na stronie konsoli wpisz „Vertex AI Agent Builder”
  • Wybierz pierwszą usługę – „Agent Builder” (Kreator agentów).

c4a67b92bb7900e3.png

  • Na stronie Kreator agentów kliknij „Magazyny danych”, jak pokazano na 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 dokumenty nieuporządkowane (JSONL z metadanymi)”
  • Kliknij Dalej

13876b5d12dbe1fb.png

  • Na stronie Konfiguracja jako lokalizację magazynu danych wybierz „globalna”
  • Podaj rozpoznawalną nazwę dla magazynu danych
  • Kliknij Utwórz.

618b7a456fbffad4.png

Brownie:

  • Tuż nad przyciskiem „Utwórz” widoczna jest opcja przetwarzania dokumentu.
  • Możesz używać różnych parserów, takich jak cyfrowe, OCR lub parsery układu
  • Możesz też włączyć zaawansowane dzielenie na fragmenty i podać własne limity rozmiaru fragmentów.

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ę”.
  • Jako typ aplikacji wybierz „Wyszukiwarka” (możesz też utworzyć agentów, boty konwersacyjne, rekomendacje itp.).

ae5294e33f63567c.png

  • Pamiętaj, aby w sekcji Treść wybrać „Ogólne”. Możesz też wybrać Multimedia lub Rekomendacje na podstawie magazynu danych oraz typu danych i systemów, które chcesz utworzyć.
  • Pamiętaj, aby włączyć funkcje wersji Enterprise i Advanced LLM
  • Podaj nazwę aplikacji
  • Podaj nazwę firmy

f8a41c9751f7a8d3.png

  • Pamiętaj, aby wybrać region „globalny”
  • Kliknij „Dalej” ed17b18e094ba59a.png.
  • Na następnym ekranie wybierz magazyn danych utworzony w kroku 2
  • Kliknij „Utwórz”.

bc77006e0025ae9e.png

6. Krok 4. Umieść aplikację w kontenerze Dockera

  • Otwórz terminal 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 – powstanie implementacja interfejsu API w języku Python, która ułatwi tworzenie bezpiecznych punktów końcowych, z którymi będzie współpracował frontend.
  • Frontend – zawiera aplikację opartą na reakcjach i udostępnia interfejs użytkownika. Obejmuje to też niezbędne wywołania backendu do backendu przez punkty końcowe spoczynku na poziomie aplikacji
  • Dockerfile – ten plik będzie zawierał wszystkie polecenia potrzebne do utworzenia kontenera Dockera.
  • W katalogu głównym repozytorium uruchom to polecenie, które pomoże utworzyć obraz Dockera (uwaga: pamiętaj, aby używać flagi - - platform podczas tworzenia kontenerów Dockera na Macbookach, które korzystają z silników Apple Silicon, takich jak M1 czy M2 itp.). Ta flaga nie jest potrzebna, jeśli używasz komputera z systemem Windows lub jeśli architektura procesora jest oparta na procesorach Intel.

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

  • Po utworzeniu kontenera Dockera uruchom to polecenie, aby oznaczyć kontener odpowiednimi tagami i upewnić się, że udostępniasz wersję obrazu. Pamiętaj, że może być wiele wersji aplikacji, a tym samym wiele wersji jako tagów w kontenerach Dockera. Z punktu widzenia DevOps zawsze warto korzystać z najnowszej stabilnej wersji.

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

  • Gdy otagujemy obraz kontenera Dockera, możemy przekazać go do Google Artifact Registry (GAR). GAR to w pełni zarządzana platforma Google ułatwiająca zarządzanie kontenerami Dockera i kontrolę ich wersji. Uruchom następujące polecenie, które spowoduje przekazanie powyższego otagowanego kontenera do GAR. Więcej informacji znajdziesz na tej stronie: [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 wybierz opcję „Wdróż jedną wersję z istniejącego obrazu kontenera”
  • Poniżej kliknij „Wybierz”.
  • Po prawej stronie pojawi się pasek nawigacyjny.
  • Sprawdź, czy na karcie jest wybrana opcja Artifact Registry
  • Sprawdź, czy projekt został wybrany prawidłowo
  • Kliknij strzałkę, aby rozwinąć akordeon na linku do obrazu wdrożonego kontenera
  • Wybierz tag w kontenerze i rozwiń go (zawsze wybieraj najnowsze wdrożone – z prawidłowymi, najnowszymi tagami, np. v1, v2 itp.)
  • Kliknij obraz kontenera widoczny pod nazwą tagu w kontenerze.

aac35d55d7dd874e.png

  • W obszarze Konfiguracja
  • Podaj nazwę usługi dla aplikacji w Cloud Run (będzie to część adresu URL podczas wdrażania aplikacji w Cloud Run)
  • Wybierz odpowiedni region (w tym przypadku us-central1 lub dowolny inny region).
  • W sekcji Uwierzytelnianie
  • Sprawdź, czy zaznaczona jest opcja „Zezwalaj na nieuwierzytelnione wywołania”
  • W sekcji Przydział procesora i cen
  • Wybierz „CPU jest przydzielany tylko podczas przetwarzania żądań”.
  • Zmodyfikuj autoskalowanie usługi na 1 (do celów produkcyjnych zaleca się, aby minimalna liczba instancji uruchamiała się do obsługi dziennego ruchu; możesz nawet pozostawić wartość 0, czyli wartość zero).
  • Ustaw „Kontrola ruchu” na „Wszystkie”, aby umożliwić dostęp do aplikacji ruch z internetu
  • Kliknij „Utwórz”.
  • Spowoduje to wdrożenie instancji Cloud Run, a udostępnienie tej samej instancji zajmie kilka minut

b8b147265b8d457b.png

  • Po wdrożeniu będzie można wyświetlić publicznie dostępny URL, z którego można uzyskać dostęp do aplikacji internetowej

1dfdb007c52581a1.png

8. Jak to działa?

  • Na stronie głównej aplikacji kliknij przycisk „Prześlij dokument”.
  • Przesyłanie pliku PDF
  • Po zakończeniu przesyłania
  • Kliknij pasek wyszukiwania u góry strony internetowej.
  • Zacznij wyszukiwać zapytania związane z przesłanym dokumentem
  • Gdy wpiszesz zapytanie i klikniesz przycisk Szukaj, powinny wyświetlić się wszystkie trafne odpowiedzi na temat przesłanego właśnie dokumentu.
  • Możesz wypróbować kod backendu i dodać więcej konfiguracji, takich jak ta poniżej
  • Dodawanie fragmentów
  • Dodawanie wyodrębnionych segmentów
  • Dodawanie odpowiedzi
  • Dostrajanie 1 najlepszych wyników w taki sposób, aby LLM podsumował odpowiedź (przykładem może być omówienie AI w wyszukiwarce Google).
  • W ramach dodatku można dodać tagi metadanych podczas przesyłania dokumentu. Pomoże to generować aspekty i kategorie możliwe do filtrowania

9. Czyszczenie danych

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

  1. W konsoli Google Cloud otwórz stronę Zarządzanie zasobami.
  2. Na liście 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ą właśnie usługę i ją usunąć.

10. Gratulacje

Gratulacje! Udało Ci się stworzyć szybki, gotowy do użycia system RAG, używając najnowocześniejszych modeli opartych na technologii Google i oferujących wysokiej jakości wyniki wyszukiwania w Google. To ćwiczenie w Codelabs ma charakter wyłącznie demonstracyjny. W środowisku produkcyjnym należy skonfigurować więcej zabezpieczeń i barier. Link do pełnego repozytorium znajdziesz tutaj. Dzięki wykorzystaniu Google Cloud w 5 krokach możemy wygenerować kompleksowy system RAG, który w zaledwie kilka minut zapewni Ci wysokiej jakości wyniki od Google. Wraz z rozwojem generatywnej AI i dużymi modelami językowymi tworzenie takich systemów RAG pomaga nam też unikać pułapek i niecytowanych informacji.

To tylko punkt wyjścia, ale możemy zrobić cuda dzięki w pełni konfigurowalnym interfejsom API DIY RAG, które zapewniają jeszcze większą przejrzystość, wydajność i wydajność potrzebne do efektywnego obsługi każdego etapu procesu potoku.