1. Zanim zaczniesz
Zanim przejdziesz dalej, zapoznaj się z kilkoma informacjami.
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ć agentów Vertex AI
- Jak korzystać z 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 wyświetlać trafne wyniki dla zapytań użytkowników. Jest to możliwe dzięki technice zwanej generowaniem rozszerzonym przez wyszukiwanie w zapisanych informacjach (RAG), która jest kluczową techniką w ramach współczesnej sztucznej inteligencji.
RAG pobiera najpierw odpowiednie fragmenty z korpusu dokumentów. Wykorzystujemy do tego różne metody, takie 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. Hallucination to termin używany do opisania generowania tekstu, które nie jest poparte 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ż generowany tekst zawsze opiera się na dowodach z korpusu dokumentów. Dzięki temu jest to bardziej wiarygodne źródło informacji.
RAG to potężna technika stosowana w różnych aplikacjach, m.in. w wyszukiwarkach, chatbotach i systemach odpowiadających na pytania. W przyszłości będzie ona odgrywać coraz większą rolę w AI.
Oto kilka przykładów zastosowania RAG w praktyce:
- Wiele systemów wyszukiwania wykorzystuje funkcję RAG do generowania wyników wyszukiwania pasujących do zapytania użytkownika.
- Chatboty używają RAG do generowania odpowiedzi na pytania użytkowników, które są przydatne i zachęcają do interakcji.
- Systemy do udzielania odpowiedzi na pytania korzystają z RAG, aby generować dokładne i wyczerpujące odpowiedzi na pytania użytkowników.
RAG to wszechstronna technika, która może służyć do generowania tekstu w różnych domenach i aplikacjach. To zaawansowane narzędzie, dzięki któremu AI może zwiększać inteligencję i przydatne informacje.
W tym Codelab utworzymy system RAG, który pomoże Ci uzyskać odpowiedzi na pytania na podstawie przesłanego przez Ciebie zbioru tekstów. 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ć, dzielić, generować wektorów dystrybucyjnych, rozszerzać zapytań ani pobierać i rankingować kandydatów. 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 będziesz mieć wdrożony działający system RAG, który pomoże Ci znaleźć odpowiedzi na Twoje pytania, podając fakty i odpowiednie źródła.
Poznasz też, jak za pomocą interfejsów API wyszukiwarki Vertex AI tworzyć architekturę RAG w Google Cloud. Dowiesz się też, jak wdrożyć tę aplikację z architekturą RAG (z interfejsem front-end i back-end) w Cloud Run, czyli bezserwerowej platformie do wdrażania aplikacji w postaci kontenerów w Google Cloud.
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 zapytań na pasku wyszukiwania: użytkownicy mogą zadawać pytania na pasku wyszukiwania na podstawie przesłanego zbioru 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
- W konsoli Google Cloud na stronie selektora projektu wybierz lub utwórz projekt Google Cloud.
- 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.
- Użyjesz Cloud Shell – środowiska wiersza poleceń działającego w Google Cloud. Aby uzyskać do niego dostęp, u góry konsoli Google Cloud kliknij Aktywuj Cloud Shell.
- Po połączeniu z Cloud Shell sprawdź, czy jesteś już uwierzytelniony i czy projekt jest ustawiony na identyfikator Twojego projektu, używając tego polecenia:
gcloud auth list
- Uruchom to polecenie w Cloud Shell, aby sprawdzić, czy polecenie gcloud zna Twój projekt.
gcloud config list project
- Jeśli Twój projekt nie jest skonfigurowany, ustaw go za pomocą tego polecenia:
gcloud config set project <YOUR_PROJECT_ID>
- Sprawdź, czy te interfejsy API są włączone:
- Cloud Run
- Vertex AI
- Cloud Storage
Alternatywą dla polecenia gcloud jest konsola, do której możesz przejść za pomocą tego linku. Więcej informacji o poleceniach i sposobie korzystania z gcloud znajdziesz w dokumentacji.
3. Krok 1. Utwórz zasobnik Google Cloud Platform
- Otwórz konsolę i na pasku wyszukiwania wpisz Cloud Storage.
- Wybierz Cloud Storage z sugerowanych wyników.
- Kliknij Utwórz zasobnik.
- Podaj globalnie niepowtarzalną nazwę zasobnika.
- Kliknij Dalej.
- W sekcji Typ lokalizacji wybierz Wiele regionów.
- Pamiętaj, by w menu wybrać opcję
us (multiple regions in United States)
.
- Kliknij Utwórz zasobnik.
- Po utworzeniu zasobnika prześlij plik
alphabet-metadata.json
z repozytorium
4. Krok 2. Utwórz magazyn danych Vertex AI
- Na pasku wyszukiwania na stronie konsoli wpisz „Vertex AI Agent Builder”.
- Wybierz pierwszy produkt „Agent Builder”.
- Na stronie Kreator agentów kliknij „Magazyny danych”, jak pokazano na pasku nawigacyjnym po lewej stronie.
- Kliknij „Utwórz magazyn danych”.
- Wybierz Cloud Storage jako miejsce na dane.
- Kliknij „Wybierz” pod ikoną Cloud Storage
- Na karcie poniżej opcji „Folder” kliknij przycisk „Przeglądaj”.
- Wybierz zasobnik utworzony w kroku 1.
- Wśród opcji poniżej wybierz „Połączone nieuporządkowane dokumenty (plik JSONL z metadanymi)”.
- Kliknij Dalej
- Na stronie Konfiguracja jako lokalizację magazynu danych wybierz „globalną”.
- Nadaj magazynowi danych rozpoznawalną nazwę
- Kliknij Utwórz.
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.
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 „Wyszukiwarka” (możesz też tworzyć agentów, boty do rozmów, rekomendacje itp.).
- W sekcji Treść wybierz „Ogólne”. Możesz też wybrać Media lub Rekomendacje na podstawie magazynu danych oraz typu danych i systemów, które chcesz tworzyć.
- Pamiętaj, aby włączyć funkcje wersji Enterprise i Advanced LLM
- Podaj nazwę aplikacji
- Podaj nazwę firmy
- Upewnij się, że wybrany region to „Cały świat”.
- Kliknij „Dalej” .
- Na następnym ekranie wybierz magazyn danych utworzony w kroku 2.
- Kliknij „Utwórz”.
6. Krok 4. Przeprowadź konteneryzację 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 – powstanie implementacja interfejsu API w języku Python, która ułatwi tworzenie punktów końcowych, z którymi frontend będzie mógł działać bez zakłóceń.
- Frontend – zawiera aplikację opartą na reakcjach i udostępnia interfejs użytkownika. Zawiera on również 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 tworzenia 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 pomyślnym skompilowaniu kontenera Dockera uruchom to polecenie, aby otagować kontener odpowiednimi tagami i upewnić się, że przesyłasz wersję obrazu. Pamiętaj, że w kontenerach Dockera może być wiele wersji aplikacji, a co za tym idzie, wiele wersji jako tagów. Z punktu widzenia DevOps dobrym podejściem jest zawsze korzystanie z najnowszej stabilnej wersji.
docker tag your-image-name REGION-docker.pkg.dev/PROJECT-ID/REPOSITORY-NAME/IMAGE-NAME:TAG
- Po pomyślnym 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 ułatwia zarządzanie kontenerami Dockera i kontrolę wersji. Uruchom to polecenie, aby przesłać wyżej oznaczony kontener do usługi Google App Engine. Więcej informacji znajdziesz w tym artykule [ 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.
- 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 wdrożonego obrazu kontenera
- Wybierz tag kontenera i rozwiń go (zawsze wybieraj najnowsze wdrożone tagi, np.v1, v2 itd.).
- Kliknij obraz kontenera widoczny pod nazwą tagu w kontenerze.
- W obszarze Konfiguruj
- 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).
- W sekcji Uwierzytelnianie
- Upewnij się, że wybrana jest opcja „Zezwalaj na nieuwierzytelnione wywołania”.
- W sekcji Przydział procesora i ceny
- Wybierz „CPU jest przydzielany tylko podczas przetwarzania żądań”.
- Zmodyfikuj autoskalowanie usługi na 1 (do celów produkcyjnych zaleca się, aby minimalna liczba instancji uruchomionych do obsługiwania codziennego ruchu była możliwa; 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
- Po wdrożeniu będzie można wyświetlić publicznie dostępny URL, z którego można uzyskać dostęp do aplikacji internetowej
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.
- Zacznij wyszukiwać zapytania związane z przesłanym dokumentem
- Po wpisaniu zapytania i kliknięciu Szukaj powinny pojawić się wszystkie odpowiednie odpowiedzi z przesłanego dokumentu.
- Możesz pobawić się kodem backendu i dodać więcej konfiguracji, takich jak:
- Dodawanie fragmentów
- Dodawanie segmentów wydobywających
- Dodawanie odpowiedzi
- Dostosowanie wyników top-k, aby pomóc LLM w podsumowaniu odpowiedzi (coś w rodzaju przeglądu AI w wyszukiwarce Google)
- Możesz też 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:
- W konsoli Google Cloud otwórz stronę Zarządzanie zasobami.
- Na liście projektów wybierz projekt do usunięcia, a potem kliknij Usuń.
- W oknie wpisz identyfikator projektu i kliknij Wyłącz, aby usunąć projekt.
- 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ę szybko stworzyć gotowy system RAG, korzystając z najnowocześniejszych modeli opracowanych przez Google, aby uzyskiwać wyniki o jakości Google dla zapytań w wyszukiwarce. To laboratorium kodu służy tylko do celów demonstracyjnych. W przypadku zastosowań produkcyjnych należy skonfigurować dodatkowe zabezpieczenia i ograniczenia. Link do pełnego repozytorium znajdziesz tutaj. Korzystając z Google Cloud i zaledwie 5 kroków, możemy wygenerować kompleksowy system RAG, który w ciągu kilku minut zapewni Ci wyniki o jakości 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 robić 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.