Implementowanie funkcji RAG w przepływie monitu
Po przekazaniu danych do rozwiązania Microsoft Foundry i utworzeniu indeksu danych przy użyciu integracji z usługą Azure AI Search możesz zaimplementować wzorzec RAG z usługą Prompt Flow , aby utworzyć generacyjną aplikację sztucznej inteligencji.
Prompt Flow to platforma deweloperska do definiowania przepływów, które organizuje interakcje z usługą LLM.
Przepływ rozpoczyna się od jednego lub większej liczby danych wejściowych, zazwyczaj pytania lub monitu wprowadzonego przez użytkownika, a w przypadku iteracyjnych konwersacji historia czatu do tego momentu.
Przepływ jest następnie definiowany jako seria połączonych narzędzi, z których każda wykonuje określoną operację na danych wejściowych i innych zmiennych środowiskowych. Istnieje wiele typów narzędzi, które można uwzględnić w przepływie monitów, aby wykonywać zadania, takie jak:
- Uruchamianie niestandardowego kodu w języku Python
- Szukanie wartości danych w indeksie
- Tworzenie wariantów monitów — umożliwia zdefiniowanie wielu wersji monitu dla dużego modelu językowego (LLM), różne komunikaty systemowe lub monitowanie o sformułowanie oraz porównywanie i ocenianie wyników z każdego wariantu.
- Przesyłanie monitu do usługi LLM w celu wygenerowania wyników.
Na koniec przepływ ma co najmniej jedno wyjście, zazwyczaj zwracając wygenerowane wyniki z usługi LLM.
Używanie wzorca RAG w przepływie monitu
Kluczem do korzystania ze wzorca RAG w przepływie monitu jest użycie narzędzia odnośnika indeksu do pobierania danych z indeksu, aby kolejne narzędzia w przepływie mogły używać wyników do rozszerzania monitu używanego do generowania danych wyjściowych z usługi LLM.
Tworzenie przepływu czatu przy użyciu przykładu
Przepływ monitów udostępnia różne przykłady, których można użyć jako punktu początkowego do utworzenia aplikacji. Jeśli chcesz połączyć model RAG z modelem językowym w aplikacji, możesz sklonować wielorundowe pytania i odpowiedzi na podstawie twoich danych.
Przykład zawiera elementy niezbędne do uwzględnienia RAG i modelu językowego:
- Dołącz historię do danych wejściowych czatu, aby zdefiniować monit w postaci kontekstowej formy pytania.
- Wyszukaj odpowiednie informacje z danych przy użyciu indeksu wyszukiwania.
- Wygeneruj kontekst monitu przy użyciu pobranych danych z indeksu, aby rozszerzyć pytanie.
- Utwórz warianty monitów, dodając komunikat systemowy i tworząc struktury historii czatów.
- Prześlij monit do modelu językowego, który generuje odpowiedź w języku naturalnym.
Przyjrzyjmy się dokładniej każdemu z tych elementów.
Modyfikowanie zapytania za pomocą historii
Pierwszym krokiem przepływu jest węzeł modelu dużego języka (LLM), który pobiera historię czatu i ostatnie pytanie użytkownika i generuje nowe pytanie zawierające wszystkie niezbędne informacje. W ten sposób generujesz bardziej zwięzłe dane wejściowe przetwarzane przez pozostałą część przepływu.
Wyszukiwanie odpowiednich informacji
Następnie użyjesz narzędzia odnośnika indeksu, aby wykonać zapytanie dotyczące indeksu wyszukiwania utworzonego za pomocą zintegrowanej funkcji usługi Azure AI Search i znaleźć odpowiednie informacje ze źródła danych.
Napiwek
Dowiedz się więcej o narzędziu wyszukiwania indeksów.
Generowanie kontekstu zapytania
Dane wyjściowe narzędzia odnośnika indeksu to pobrany kontekst, którego chcesz użyć podczas generowania odpowiedzi dla użytkownika. Chcesz użyć danych wyjściowych w wierszu polecenia, który jest wysyłany do modelu językowego, co oznacza, że chcesz przeanalizować dane wyjściowe w bardziej odpowiednim formacie.
Dane wyjściowe narzędzia odnośnika indeksu mogą zawierać n pierwszych wyników (w zależności od ustawionych parametrów). Podczas generowania kontekstu monitu można użyć węzła języka Python do iterowania pobranych dokumentów ze źródła danych i łączenia ich zawartości i źródeł w jeden ciąg dokumentu. Ciąg będzie używany w podpowiedzi wysyłanej do modelu językowego w następnym etapie procesu.
Definiowanie wariantów monitu
Podczas tworzenia monitu, który chcesz wysłać do modelu językowego, możesz użyć wariantów do reprezentowania innej zawartości monitu.
W przypadku dołączania funkcji RAG w przepływie czatu twoim celem jest ugruntowanie odpowiedzi czatbota. Obok pobierania odpowiedniego kontekstu ze źródła danych możesz również wpłynąć na uzasadnienie odpowiedzi czatbota, poinstruując go, aby używał kontekstu i dążył do udzielania faktycznych odpowiedzi.
W przypadku wariantów monitu można podać różne komunikaty systemowe w treści, aby zbadać, która zawartość zapewnia największą solidność.
Rozmowa z kontekstem
Na koniec użyj węzła LLM, aby wysłać monit do modelu językowego w celu wygenerowania odpowiedzi przy użyciu odpowiedniego kontekstu pobranego ze źródła danych. Odpowiedź z tego węzła jest również wynikiem całego przepływu.
Po skonfigurowaniu przykładowego przepływu czatu w celu używania danych indeksowanych i wybranego modelu językowego możesz wdrożyć przepływ i zintegrować go z aplikacją, aby zaoferować użytkownikom środowisko agentyczne.