Wprowadzenie do bezserwerowego czatu sztucznej inteligencji z narzędziem RAG przy użyciu usługi LlamaIndex
Uprość tworzenie aplikacji sztucznej inteligencji za pomocą RAG przy użyciu własnych danych zarządzanych przez LlamaIndex, usługi Azure Functions i technologii bezserwerowych. Te narzędzia automatycznie zarządzają infrastrukturą i skalowaniem, co pozwala skupić się na funkcjach czatbotów. Funkcja LlamaIndex obsługuje potok danych przez cały czas od pozyskiwania do przesyłanej strumieniowo odpowiedzi.
Omówienie architektury
Przepływ aplikacji obejmuje:
- Użyj interfejsu czatu, aby wprowadzić polecenie.
- Wysyłanie monitu użytkownika do bezserwerowego interfejsu API za pośrednictwem wywołań HTTP.
- Otrzymanie monitu użytkownika, a następnie użycie struktury LlamaIndex do przetwarzania i przesyłania strumieniowego odpowiedzi. Bezserwerowy interfejs API używa silnika do nawiązywania połączenia z modelem językowym dużej skali Azure OpenAI (LLM) oraz indeksem wektorów z LlamaIndex.
Prosta architektura aplikacji do czatu jest pokazana na poniższym diagramie:
W tym przykładzie użyto LlamaIndex do generowania osadzeń i przechowywania ich we własnym magazynie wektorów. LlamaIndex zapewnia również integrację z innymi magazynami wektorów, w tym Azure AI Search. Ta integracja nie jest pokazana w tym przykładzie.
Gdzie znajduje się platforma Azure w tej architekturze?
Architektura aplikacji opiera się na następujących usługach i składnikach:
- azure OpenAI reprezentuje dostawcę sztucznej inteligencji, do którego wysyłamy zapytania użytkownika.
- LlamaIndex to struktura, która pomaga nam pozyskiwać, przekształcać i wektoryzować naszą zawartość (plik PDF) i utworzyć indeks wyszukiwania na podstawie naszych danych.
- azure Container Apps to środowisko kontenera, w którym jest hostowana aplikacja.
- Zarządzana tożsamość platformy Azure pomaga nam zapewnić najlepsze w swojej klasie zabezpieczenia i eliminuje potrzebę, abyś Ty jako deweloper musiał radzić sobie z poświadczeniami i kluczami interfejsu API.
LlamaIndex zarządza danymi od momentu pozyskania do momentu pobrania
Aby zaimplementować system RAG (Retrieval-Augmented Generation) przy użyciu obiektu LlamaIndex, następujące kluczowe kroki są zgodne z funkcją LlamaIndex:
Proces | Opis | LlamaIndex |
---|---|---|
Pozyskiwanie danych | Zaimportuj dane ze źródeł, takich jak pliki PDF, interfejsy API lub bazy danych. | ProstyCzytnikKatalogów |
Dokumenty podzielone na części | Podziel duże dokumenty na mniejsze fragmenty. | Dzielnik Zdań |
Tworzenie indeksu wektorowego | Utwórz indeks wektorów w celu efektywnego wyszukiwania podobieństwa. | VectorStoreIndex |
Pobieranie cykliczne (opcjonalne) z indeksu | Zarządzanie złożonymi zestawami danych za pomocą pobierania hierarchicznego. | |
Konwertowanie na aparat zapytań | Przekonwertuj indeks wektora na aparat zapytań. | asQueryEngine |
Zaawansowana konfiguracja zapytania (opcjonalnie) | Użyj agentów w systemie z wieloma agentami. | |
Zaimplementuj potok RAG | Zdefiniuj funkcję celu, która pobiera zapytania użytkownika i pobiera odpowiednie fragmenty dokumentu. | |
Wykonaj pobieranie | Przetwarzaj zapytania i ponownie uporządkuj dokumenty. | RetrieverQueryEngine, CohereRerank |
Warunki wstępne
Środowisko kontenera deweloperskiego jest dostępne ze wszystkimi zależnościami wymaganymi do ukończenia tego artykułu. Kontener deweloperski można uruchomić w usłudze GitHub Codespaces (w przeglądarce) lub lokalnie przy użyciu programu Visual Studio Code.
Aby użyć tego artykułu, potrzebne są następujące wymagania wstępne:
- Codespaces (zalecane)
- programu Visual Studio Code
- Subskrypcja platformy Azure — utwórz bezpłatną
- Uprawnienia konta platformy Azure — Twoje konto platformy Azure musi mieć uprawnienia Microsoft.Authorization/roleAssignments/write, takie jak administrator dostępu użytkowników lub właściciel.
- Konto usługi GitHub.
Otwieranie środowiska projektowego
Skorzystaj z poniższych instrukcji, aby wdrożyć wstępnie skonfigurowane środowisko programistyczne zawierające wszystkie wymagane zależności, aby ukończyć ten artykuł.
GitHub Codespaces uruchamia kontener deweloperski zarządzany przez GitHub z Visual Studio Code w wersji przeglądarkowej jako interfejsem użytkownika. W przypadku najprostszego środowiska programistycznego użyj usługi GitHub Codespaces, aby wstępnie zainstalować odpowiednie narzędzia deweloperskie i zależności, aby ukończyć ten artykuł.
Ważny
Wszystkie konta GitHub mogą korzystać z usługi Codespaces przez maksymalnie 60 darmowych godzin miesięcznie z 2 rdzeniami procesora. Aby uzyskać więcej informacji, zobacz zawarte co miesiąc miejsce do przechowywania oraz godziny rdzenia w Usługach GitHub Codespaces.
Otwórz plik w przestrzeni kodu.
Poczekaj na uruchomienie środowiska programistycznego. Ten proces uruchamiania może potrwać kilka minut.
W terminalu w dolnej części ekranu zaloguj się do platformy Azure przy użyciu interfejsu wiersza polecenia dla deweloperów platformy Azure.
azd auth login
Ukończ proces uwierzytelniania.
Pozostałe zadania w tym artykule mają miejsce w kontekście tego kontenera deweloperskiego.
Wdrażanie i uruchamianie
Przykładowe repozytorium zawiera wszystkie pliki kodu i konfiguracji potrzebne do wdrożenia bezserwerowej aplikacji czatu na platformie Azure. W poniższych krokach przedstawiono proces wdrażania przykładu na platformie Azure.
Wdrażanie aplikacji czatu na platformie Azure
Ważny
Zasoby platformy Azure utworzone w tej sekcji powodują natychmiastowe koszty, głównie z zasobu usługi Azure AI Search. Te zasoby mogą naliczać koszty nawet w przypadku przerwania działania polecenia przed jego pełnym wykonaniem.
Aby aprowizować zasoby platformy Azure i wdrożyć kod źródłowy, uruchom następujące polecenie interfejsu wiersza polecenia dla deweloperów platformy Azure:
azd up
Użyj poniższej tabeli, aby odpowiedzieć na pytania.
Wskazówka Odpowiedź Nazwa środowiska Utrzymuj krótką formę i pisz małymi literami. Dodaj swoją nazwę lub alias. Na przykład john-chat
. Jest ona używana jako część nazwy grupy zasobów.Subskrypcja Wybierz subskrypcję, w której chcesz utworzyć zasoby. Lokalizacja (na potrzeby hostingu) Wybierz lokalizację w pobliżu z listy. Lokalizacja modelu OpenAI Wybierz lokalizację w pobliżu z listy. Jeśli ta sama lokalizacja jest dostępna jako pierwsza lokalizacja, wybierz tę lokalizację. Poczekaj na wdrożenie aplikacji. Ukończenie wdrożenia może potrwać od 5 do 10 minut.
Po pomyślnym wdrożeniu aplikacji w terminalu zostaną wyświetlone dwa adresy URL.
Wybierz ten adres URL oznaczony
Deploying service webapp
, aby otworzyć aplikację czatu w przeglądarce.
Uzyskiwanie odpowiedzi z plików PDF przy użyciu aplikacji do czatu
Aplikacja do czatu jest wcześniej załadowana informacjami o normach fizycznych dotyczących krajowej poczty z pliku PDF oznaczonego jako katalog . Możesz użyć aplikacji do czatu, aby zadawać pytania dotyczące listu wysyłkowego i pakietów. Poniższe kroki przeprowadzą Cię przez proces korzystania z aplikacji do czatu.
W przeglądarce wybierz lub wprowadź Ile kosztuje wysłanie dużego pakietu do Francji?.
Funkcja LlamaIndex pobiera odpowiedź przy użyciu pliku PDF i przesyła strumieniowo odpowiedź.
Odpowiedź pochodzi z usługi Azure OpenAI z wpływem danych z plików PDF umieszczonych w magazynie wektorów LlamaIndex.
Czyszczenie zasobów
Aby wyczyścić zasoby, należy rozwiązać dwa kwestie:
- Zasoby Azure można wyczyścić za pomocą Azure Developer CLI, azd.
- Środowisko deweloperskie: albo GitHub Codespaces, albo DevContainers za pośrednictwem Visual Studio Code.
Czyszczenie zasobów platformy Azure
Zasoby platformy Azure utworzone w tym artykule są rozliczane z subskrypcją platformy Azure. Jeśli nie spodziewasz się, że te zasoby będą potrzebne w przyszłości, usuń je, aby uniknąć naliczania dodatkowych opłat.
Uruchom następujące polecenie interfejsu wiersza polecenia dla deweloperów platformy Azure, aby usunąć zasoby platformy Azure i usunąć kod źródłowy:
azd down --purge
Czyszczenie środowisk deweloperskich
Usunięcie środowiska GitHub Codespaces pozwala na maksymalne wykorzystanie bezpłatnych godzin na rdzeń przysługujących dla twojego konta.
Ważny
Aby uzyskać więcej informacji na temat uprawnień swojego konta GitHub, zobacz wliczone magazynowanie i godziny rdzeni w GitHub Codespaces na miesiąc.
Zaloguj się do pulpitu nawigacyjnego usługi GitHub Codespaces (https://github.com/codespaces).
Znajdź aktualnie uruchomione usługi Codespaces pochodzące z repozytorium
Azure-Samples/llama-index-javascript
GitHub.Otwórz menu kontekstowe
...
dla codespace, a następnie wybierz Usuń.
Uzyskiwanie pomocy
To przykładowe repozytorium oferuje informacje dotyczące rozwiązywania problemów.
Jeśli problem nie został rozwiązany, zgłoś swój problem do sekcji problemów repozytorium.