Projektowanie i opracowywanie rozwiązania RAG

Azure AI services
Azure AI Search
Azure OpenAI Service
Azure Machine Learning

Wzorzec generacji Retrieval-Augmented (RAG) to standardowe podejście do tworzenia aplikacji, które używają modeli językowych do przetwarzania określonych lub zastrzeżonych danych, których model jeszcze nie zna. Architektura jest prosta, ale projektowanie, eksperymentowanie i ocenianie rozwiązań RAG, które pasują do tej architektury, wiąże się z wieloma złożonymi zagadnieniami, które korzystają z rygorystycznego, naukowego podejścia.

Ten artykuł stanowi wprowadzenie do serii. Każdy artykuł z serii obejmuje konkretną fazę projektowania rozwiązania RAG.

Inne artykuły z tej serii obejmują następujące zagadnienia:

  • Jak określić, które dokumenty testowe i zapytania mają być używane podczas oceny
  • Jak wybrać strategię fragmentowania
  • Jak określić fragmenty, które należy wzbogacić i jak je wzbogacić
  • Jak wybrać odpowiedni model osadzania
  • Jak skonfigurować indeks wyszukiwania
  • Jak określić, które wyszukiwania, takie jak wektor, pełny tekst, hybrydowy i ręczne wyszukiwanie, należy wykonać
  • Jak ocenić każdy krok

Architektura RAG

Diagram przedstawiający architekturę wysokiego poziomu rozwiązania RAG, w tym przepływ żądania i potok danych.

Przepływ aplikacji RAG

Poniższy przepływ pracy opisuje przepływ wysokiego poziomu dla aplikacji RAG.

  1. Użytkownik wystawia zapytanie w inteligentnym interfejsie użytkownika aplikacji.
  2. Inteligentna aplikacja wykonuje wywołanie interfejsu API do orkiestratora. Orkiestrator można zaimplementować za pomocą narzędzi lub platform, takich jak Semantic Kernel, Przepływ monitów usługi Azure Machine Learning lub LangChain.
  3. Orkiestrator określa wyszukiwanie do wykonania w usłudze Azure AI Search i wystawia zapytanie.
  4. Orkiestrator pakuje pierwsze wyniki N z zapytania. Pakuje on najlepsze wyniki i zapytanie jako kontekst w wierszu polecenia i wysyła monit do modelu językowego. Koordynator zwraca odpowiedź na inteligentną aplikację, która ma być odczytywana przez użytkownika.

Przepływ potoku danych RAG

W poniższym przepływie pracy opisano przepływ wysokiego poziomu dla potoku danych, który dostarcza dane uziemienia dla aplikacji RAG.

  1. Dokumenty są wypychane lub pobierane do potoku danych.
  2. Potok danych przetwarza każdy dokument indywidualnie, wykonując następujące czynności:
    1. Dokument fragmentu: dzieli dokument na semantycznie istotne części, które idealnie mają pojedynczy pomysł lub koncepcję.
    2. Wzbogacanie fragmentów: dodaje pola metadanych tworzone przez potok na podstawie zawartości we fragmentach. Potok danych kategoryzuje metadane na odrębne pola, takie jak tytuł, podsumowanie i słowa kluczowe.
    3. Osadzanie fragmentów: używa modelu osadzania do wektorowania fragmentu i innych pól metadanych używanych do wyszukiwania wektorowego.
    4. Utrwalanie fragmentów: przechowuje fragmenty w indeksie wyszukiwania.

Zagadnienia dotyczące projektowania i oceny rag

Podczas projektowania rozwiązania RAG należy podejmować różne decyzje dotyczące implementacji. Na poniższym diagramie przedstawiono niektóre pytania, które należy zadać podczas podejmowania tych decyzji.

Diagram przedstawiający architekturę wysokiego poziomu rozwiązania RAG, w tym pytania, które należy zadać podczas projektowania rozwiązania.

Poniższa lista zawiera krótki opis tego, co należy zrobić w każdej fazie opracowywania rozwiązań RAG.

  • W fazie przygotowania należy wykonać następujące czynności:

    • Określ domenę rozwiązania. Jasno zdefiniuj wymagania biznesowe dotyczące rozwiązania RAG.
    • Zbieranie reprezentatywnych dokumentów testowych. Zbierz dokumenty testowe dla rozwiązania RAG, które są reprezentatywne dla kolekcji dokumentów.
    • Zbieranie zapytań testowych. Zbierz informacje i przetestuj zapytania oraz wygeneruj syntetyczne zapytania i zapytania, których dokumenty nie obejmują.
  • Podczas fazy fragmentowania należy wykonać następujące elementy:

    • Omówienie ekonomii fragmentowania. Dowiedz się, które czynniki należy wziąć pod uwagę podczas oceniania ogólnego kosztu rozwiązania fragmentowania dla kolekcji tekstu.
    • Przeprowadzanie analizy dokumentów. Zadaj następujące pytania, aby ułatwić podejmowanie decyzji podczas analizowania typu dokumentu:
      • Jakiej zawartości w dokumencie chcesz zignorować lub wykluczyć?
      • Jaką zawartość chcesz przechwycić we fragmentach?
      • Jak chcesz fragmentować zawartość?
    • Omówienie metod fragmentowania. Zapoznaj się z różnymi podejściami do fragmentowania, w tym podejściami opartymi na zdaniach, stałym rozmiarze i niestandardowymi albo przy użyciu rozszerzeń modelu językowego, analizy układu dokumentów i modeli uczenia maszynowego.
    • Dowiedz się, jak struktura dokumentu wpływa na fragmentowanie. Wybierz podejście fragmentujące na podstawie stopnia struktury, którą ma dokument.
  • Podczas fazy wzbogacania fragmentunależy wykonać następujące elementy:

    • Czyszczenie fragmentów. Zaimplementuj metody czyszczenia, aby wyeliminować różnice, które nie mają wpływu na znaczenie tekstu. Ta metoda obsługuje dopasowania zbliżenia.
    • Rozszerzanie fragmentów. Rozważ rozszerzenie danych fragmentów przy użyciu typowych pól metadanych i zrozumienie ich potencjalnych zastosowań w wyszukiwaniu. Dowiedz się więcej o powszechnie używanych narzędziach lub technikach generowania zawartości metadanych.
  • Podczas fazy osadzania należy wykonać następujące elementy:

    • Zrozumienie znaczenia modelu osadzania. Model osadzania może znacząco wpłynąć na trafność wyników wyszukiwania wektorowego.
    • Wybierz odpowiedni model osadzania dla twojego przypadku użycia.
    • Ocena modeli osadzania. Oceń modele osadzania, wizualizując osadzanie i obliczając odległości osadzania.
  • Podczas fazy pobierania informacji należy wykonać następujące elementy:

    • Utwórz indeks wyszukiwania. Zastosuj odpowiednie konfiguracje wyszukiwania wektorów do pól wektorów.
    • Omówienie opcji wyszukiwania. Rozważ różne typy wyszukiwań, w tym wektor, tekst pełnotekstowy, hybrydowy i ręczne wyszukiwanie. Dowiedz się, jak podzielić zapytanie na podzapytania i filtrowanie zapytań.
    • Ocenianie wyszukiwań. Użyj metod oceny pobierania, aby ocenić rozwiązanie wyszukiwania.
  • W fazie kompleksowej oceny modelu języka należy wykonać następujące elementy:

    • Omówienie metryk oceny modelu językowego. Istnieje kilka metryk, w tym uziemienie, kompletność, wykorzystanie i trafność, których można użyć do oceny odpowiedzi modelu językowego.
    • Omówienie podobieństwa i metryk oceny. Aby ocenić rozwiązanie RAG, możesz użyć metryk podobieństwa i oceny.
    • Zrozumienie znaczenia dokumentacji, raportowania i agregacji. Udokumentowanie hiperparametrów i wyników oceny. Agregowanie wyników z wielu zapytań i wizualizowanie wyników.
    • Użyj akceleratora eksperymentu RAG. Możesz użyć repozytorium RAG Experiment Accelerator GitHub, aby pomóc zespołowi znaleźć najlepsze strategie implementacji RAG, uruchamiając wiele eksperymentów, utrwalając i oceniając wyniki.

Podejście ustrukturyzowane

Ze względu na liczbę kroków i zmiennych ważne jest, aby postępować zgodnie ze strukturą procesu oceny dla rozwiązania RAG. Oceń wyniki każdego kroku i wprowadź zmiany na podstawie wymagań. Należy ocenić każdy krok niezależnie pod kątem optymalizacji, ale pamiętaj, że wynik końcowy jest tym, co klienci doświadczają. Przed określeniem własnych kryteriów akceptacji dla każdego kroku upewnij się, że rozumiesz wszystkie kroki tego procesu.

Współautorzy

Ten artykuł jest obsługiwany przez firmę Microsoft. Pierwotnie został napisany przez następujących współautorów.

Autorzy zabezpieczeń:

  • Raouf Aliouat | Inżynier oprogramowania II
  • Rob Bagby | Główny lider zawartości centrum architektury
  • Prabal Deb | Główny inżynier oprogramowania
  • Chad Kittel | Główny inżynier oprogramowania
  • Ritesh Modi | Główny inżynier
  • Ryan Pfalz | Starszy menedżer programu technicznego
  • Randy Thurman | Główny architekt rozwiązań w chmurze sztucznej inteligencji

Aby wyświetlić niepubalne profile serwisu LinkedIn, zaloguj się do serwisu LinkedIn.

Następne kroki