Pobieranie rozszerzonej generacji (RAG) i indeksów

Pobieranie rozszerzonej generacji (RAG) to wzorzec łączący wyszukiwanie z dużymi modelami językowymi (LLM), dzięki czemu odpowiedzi są uziemione w danych. W tym artykule wyjaśniono, jak działa RAG w Microsoft Foundry, jaką rolę odgrywają indeksy oraz jak pobieranie agentyczne zmienia klasyczne wzorce RAG.

Modele językowe LLM są trenowane na podstawie danych publicznych dostępnych podczas trenowania. Jeśli potrzebujesz odpowiedzi na podstawie Twoich prywatnych danych lub często zmieniających się informacji, program RAG pomaga:

  • Pobieraj odpowiednie informacje z danych (często za pośrednictwem indeksu).
  • Podaj te informacje do modelu jako dane uziemienia.
  • Wygeneruj odpowiedź, która może zawierać cytaty z treści źródłowej.

Co to jest RAG?

Duże modele językowe (LLM) są trenowane na publicznie dostępnych danych z internetu, które były dostępne w czasie trenowania modelu. Dane publiczne mogą nie być wystarczające dla Twoich potrzeb. Na przykład możesz chcieć uzyskać odpowiedzi bazujące na prywatnych dokumentach lub być może potrzebujesz aktualnych informacji.

Funkcja RAG rozwiązuje ten problem, pobierając odpowiednią zawartość z danych i dołączając ją do danych wejściowych modelu. Następnie model może wygenerować odpowiedzi uziemione w pobranej zawartości.

Kluczowe pojęcia dotyczące programu RAG:

  • Dane uziemienia: pobrana zawartość dostarczana do modelu w celu zmniejszenia zgadywania.
  • Indeks: struktura danych zoptymalizowana pod kątem pobierania (słowo kluczowe, semantyka, wektor lub wyszukiwanie hybrydowe).
  • Osadzenia: liczbowe reprezentacje zawartości, które są używane do wyszukiwania podobieństw wektorowych. Zobacz Omówienie osadzania.
  • Komunikat systemowy i monity: instrukcje, które prowadzą do korzystania z pobranej zawartości przez model. Zobacz Inżynieria podpowiedzi i wiadomości systemów bezpieczeństwa.

Jak działa RAG?

RAG ma trzyetapowy przepływ:

  1. Pobieranie: gdy użytkownik zadaje pytanie, aplikacja wysyła zapytanie do indeksu lub magazynu danych w celu znalezienia odpowiedniej zawartości.
  2. Augmentacja: aplikacja łączy pytanie użytkownika z pobraną zawartością (danymi bazowymi) w komunikat.
  3. Generuj: model otrzymuje poszerzone polecenie i generuje odpowiedź opartą na pobranej zawartości, zmniejszając niedokładności i umożliwiając dokładne cytatowanie.

Diagram przedstawiający zapytanie użytkownika, pobieranie z magazynu danych i odpowiedź modelu uziemienia.

Co to jest indeks i dlaczego jest potrzebny jeden

Funkcja RAG działa najlepiej, gdy można szybko i spójnie pobierać odpowiednią zawartość. Indeks pomaga, organizując zawartość w celu wydajnego pobierania.

Wiele rozwiązań RAG używa indeksu obsługującego co najmniej jeden z tych trybów pobierania:

  • Wyszukiwanie słów kluczowych
  • Wyszukiwanie semantyczne
  • Wyszukiwanie wektorowe
  • Wyszukiwanie hybrydowe (słowo kluczowe + wektor, czasami z klasyfikacją semantyczną)

Indeks może również przechowywać pola poprawiające jakość cytatu (na przykład tytuły dokumentów, adresy URL lub nazwy plików).

Diagram przedstawiający pobieranie z indeksu i sposób dodawania pobranych fragmentów do wiersza polecenia modelu.

Program Foundry może połączyć projekt z usługą Wyszukiwanie AI platformy Azure oraz indeksem w celu wyszukiwania. W zależności od używanej funkcji i interfejsu API, te dane połączenia mogą być reprezentowane jako połączenie projektu lub identyfikator zasobu indeksu.

Wyszukiwanie AI platformy Azure jest zalecanym magazynem indeksów dla scenariuszy RAG. Wyszukiwanie AI platformy Azure obsługuje pobieranie danych wektorowych i tekstowych przechowywanych w indeksach wyszukiwania, a także odpytywanie innych źródeł, jeśli używasz pobierania agentowego. Zobacz Co to jest Wyszukiwanie AI platformy Azure?.

Agentowy RAG: nowoczesne podejście do pozyskiwania

Tradycyjne wzorce RAG często używają pojedynczego zapytania do pobierania informacji z danych. Agentowe pobieranie, znane również jako agentyczne RAG, jest ewolucją architektury wyszukiwania, która używa modelu do dzielenia złożonych danych wejściowych na wiele ukierunkowanych zapytań, uruchamiania ich równolegle i zwracania ustrukturyzowanych danych podstawowych, które skutecznie współpracują z modelami generowania odpowiedzi w czatach.

Agentowe pobieranie zapewnia kilka zalet w stosunku do klasycznej metody RAG:

  • Planowanie zapytań uwzględniające kontekst: wykorzystuje historię konwersacji, aby zrozumieć kontekst i intencję. Pytania uzupełniające utrzymują kontekst wcześniejszych wymian, dzięki czemu wieloprzejściowe rozmowy są bardziej naturalne.
  • Wykonywanie równoległe: uruchamia jednocześnie wiele ukierunkowanych podzapytania w celu uzyskania lepszego pokrycia. Zamiast pobierać wyniki z pojedynczego zapytania sekwencyjnie, wykonywanie równoległe zmniejsza opóźnienie i pobiera bardziej różnorodne i istotne wyniki.
  • Odpowiedzi ustrukturyzowane: zwraca dane uziemienia, cytaty i metadane wykonywania wraz z wynikami. Te ustrukturyzowane dane wyjściowe ułatwiają aplikacji dokładne przytaczanie źródeł i śledzenie przyczyn odpowiedzi.
  • Wbudowany semantyczny ranking: zapewnia optymalne znaczenie wyników. Klasyfikacja semantyczna filtruje szum i priorytetyzuje naprawdę istotne fragmenty, co jest szczególnie ważne w przypadku dużych zestawów danych.
  • Opcjonalna synteza odpowiedzi: może zawierać odpowiedzi sformułowane w języku LLM bezpośrednio w odpowiedzi na zapytanie. Alternatywnie możesz zwrócić nieprzetworzone, dosłowne fragmenty, które mają być przetwarzane przez aplikację.

Jeśli używasz Wyszukiwanie AI platformy Azure jako mechanizmu wyszukiwania, zobacz Agentowe wyszukiwanie i Quickstart: Agentowe wyszukiwanie.

Wybieranie podejścia w narzędziu Foundry

Funkcja Foundry obsługuje wiele wzorców do pracy z danymi prywatnymi. Wybierz zależnie od złożoności przypadku użycia i ilości potrzebnej kontroli:

  • Użyj RAG jeśli potrzebujesz odpowiedzi opartych na prywatnych lub często zmieniających się danych.
  • Użyj dostrajania, gdy musisz zmienić zachowanie modelu, styl lub wydajność zadań, zamiast dodawać nową wiedzę.
  • Użyj narzędzi agenta podczas kompilowania agenta, który wymaga pobierania jako narzędzia. Na przykład zobacz Narzędzie wyszukiwania plików dla agentów. Aby zamiast tego utworzyć kompletną aplikację RAG z pełną kontrolą, użyj SDK Foundry.

Przepływ pracy RAG w Foundry

Implementacja RAG w narzędziu Foundry zwykle obejmuje następujące etapy:

  • Przygotowywanie danych: organizuj i dzielij prywatne dokumenty lub bazę wiedzy na zawartość z możliwością wyszukiwania.
  • Konfigurowanie indeksu: utwórz indeks Wyszukiwanie AI platformy Azure lub użyj innej usługi pobierania, aby zorganizować zawartość w celu wydajnego wyszukiwania.
  • Połącz się z usługą Foundry: utwórz połączenie z projektu Foundry z indeksem lub usługą pobierania.
  • Zbuduj swoją aplikację RAG: Zintegruj mechanizm wyszukiwania z wywołaniami do modelu, korzystając z zestawu SDK Foundry lub interfejsów API REST.
  • Testowanie i ocena: Sprawdź, czy jakość pobierania jest dobra i czy odpowiedzi są dokładne i prawidłowo cytowane.

Zagadnienia dotyczące zabezpieczeń i prywatności

Systemy RAG mogą uwidaczniać poufne treści, jeśli nie projektujesz dostępu i ustalasz procedur monitorowania uważnie.

  • Zastosuj kontrolę dostępu w czasie pobierania. Jeśli używasz Wyszukiwanie AI platformy Azure jako źródła danych, możesz użyć kontroli dostępu na poziomie dokumentu z filtrami zabezpieczeń.
  • Preferuj Microsoft Entra ID zamiast kluczy interfejsu API dla środowiska produkcyjnego. Klucze interfejsu API są wygodne do programowania, ale nie są zalecane w scenariuszach produkcyjnych. Aby uzyskać poradnik dotyczący RBAC dla Wyszukiwanie AI platformy Azure, zobacz Połączenie z Wyszukiwanie AI platformy Azure przy użyciu ról.
  • Traktuj pobraną zawartość jako niezaufane dane wejściowe. Komunikat systemowy i logika aplikacji powinny zmniejszyć ryzyko wstrzyknięcia monitu z dokumentów i pobranych fragmentów. Zobacz Komunikaty dotyczące systemu bezpieczeństwa.

Zagadnienia dotyczące kosztów i opóźnień

RAG dodaje dodatkową pracę w porównaniu z żądaniem uwzględniającym jedynie model.

  • Koszty pobierania i opóźnienia: wykonywanie zapytań względem indeksu wprowadza dodatkowe obiegi i obciążenie procesora.
  • Tworzenie osadzeń a koszty i opóźnienia: Wyszukiwanie wektorowe wymaga tworzenia osadzeń zarówno w czasie indeksowania, jak i często podczas wykonywania zapytań.
  • Użycie tokenu: pobrane fragmenty zwiększają tokeny wejściowe, co może zwiększyć koszty.

Jeśli używasz Wyszukiwanie AI platformy Azure, przed wdrożeniem produkcyjnym potwierdź warstwę usługi i cennik. Jeśli używasz semantycznego lub hybrydowego pobierania, zapoznaj się z Wyszukiwanie AI platformy Azure cennikiem i limitami w dokumentacji Wyszukiwanie AI platformy Azure.

Ograniczenia i rozwiązywanie problemów

Znane ograniczenia

  • Jakość RAG zależy od przygotowywania zawartości, konfiguracji pobierania i projektowania monitów. Słaba strategia przygotowywania lub indeksowania danych ma bezpośredni wpływ na jakość odpowiedzi.
  • Jeśli wyszukiwanie zwraca nieistotne lub niekompletne fragmenty, model może nadal produkować niedokładne lub niekompletne odpowiedzi pomimo upewnienia się o wiarygodności.
  • Jeśli nie kontrolujesz dostępu do zawartości źródłowej, merytoryczne odpowiedzi mogą ujawniać poufne informacje z indeksu.

Typowe wyzwania i środki zaradcze

  • Niska jakość pobierania: jeśli indeks nie zwraca odpowiednich fragmentów, przejrzyj strategię fragmentowania danych, jakość modelu osadzeń i konfigurację wyszukiwania (słowo kluczowe vs. semantyka vs. hybryda).
  • Halucynacja pomimo uzasadnienia: nawet przy pobranej treści modele mogą nadal generować niedokładne odpowiedzi. Włącz cytaty i używaj czystych komunikatów systemowych oraz monitów o poinstruowanie modelu, aby trzymał się pobranej zawartości.
  • Problemy z opóźnieniami: Duże indeksy mogą spowalniać pobieranie. Rozważ strategię indeksowania, filtrowanie i ponowne klasyfikowanie, aby zmniejszyć liczbę przetworzonych fragmentów.
  • Przekroczono budżet tokenów: pobrane fragmenty mogą szybko wyczerpać limity tokenów. Zaimplementuj filtrowanie fragmentów, klasyfikację lub podsumowanie, aby pozostać w budżecie.

Aby uzyskać wskazówki dotyczące oceny skuteczności RAG, zobacz samouczki i przewodniki szybkiego startu w sekcji zawartości powiązanej poniżej.