Strona główna / Artykuły

Podstawowe pytania i odpowiedzi dotyczące Azure AI Search oraz agentów Foundry w formacie PDF

Utwórz indeks plików PDF z kursami prywatnymi zawierającymi embeddingi, połącz agenta Foundry z indeksem wektorowym oraz napraw błędy w autoryzacji i instrukcjach, które sprawiają, że RAG wydaje się niepracować.

Wydawca: REACTAPP.TOP9 min czytania2147 słów

Źródła: Building a Grounded RAG Agent on Azure AI Search and Azure AI Foundry

Wprowadzenie

Organizacja zajmująca się szkoleniami z zakresu kryminologii cyfrowej dysponuje latami materiałów edukacyjnych w formacie PDF – slajdami, ćwiczeniami laboratoryjnymi oraz rozdziałami referencyjnymi. Analitycy potrzebują jednego konkretnego pojęcia zawartego w dziesiątkach tych materiałów. Wyszukiwanie słów kluczowych w rozproszonych plikach jest powolne i niewydajne. Pożądanym produktem są proste pytania i odpowiedzi oparte na tych materiałach, a nie parafraza zwykłego podręcznika.

Tak właśnie wygląda podejście RAG: pobieranie istotnych fragmentów z prywatnej bazy dokumentów i wykorzystywanie ich do generowania odpowiedzi. Ta implementacja realizuje ten model w całości na platformie Azure – Azure AI Search indeksuje rzeczywiste pliki PDF z użyciem embeddingów, a także agent Azure AI Foundry odpowiada na pytania na podstawie tego indeksu, a nie ogólnej wiedzy.

Stało się to również narracją dotyczącą usuwania błędów. Prawie nic nie zawiodło z powodu błędnego pomysłu; problemy wynikały z drobnych niezgodności pomiędzy zasobami, modelami autoryzacji oraz domyślnym zachowaniem agenta. Te punkty konfliktu są dokumentowane, a nie eliminowane.

Rozumienie architektury

Cztery usługi Azure są odpowiedzialne za cztery zadania.

Blob Storage przechowuje dokumenty źródłowe — w tym pliki PDF używane do analizy; każdy zbiór danych z prywatnego domeny mieści się w tym samym formacie.

Azure AI Search indeksuje i wyszukuje dane. Narzędzie to dzieli dokumenty na fragmenty, wywołuje model embeddingowy i przechowuje tekst wraz z wektorami. Podczas wyszukiwania serwis zwraca fragmenty semantycznie podobne, a nie tylko te zawierające określone słowa kluczowe.

Azure AI Foundry hostuje modele oraz agenta: implementację typu embedding do wektorowania indeksów/zapytań oraz implementację do rozmów służącą do generowania odpowiedzi. Agent otacza model do rozmów źródłem wiedzy oraz instrukcjami.

Managed Identity i RBAC określają, kto może wykonywać jakie zapytania. Połączenia (Search→Blob, Search→embeddings, agent→index) powinny preferować role o określonym zakresie zamiast kluczy wbudowanych. Ta wersja nie osiągnęła pełnie wolnego od kluczy łańcucha; ten brak jest opisany poniżej.

Etap pierwszy: dokumenty źródłowe

Prywatny kontener blob (knowledge-docs) otrzymał pliki PDF z kursu. Dostęp pozostał prywatny – bez możliwości czytania anonimowego – zgodnie z podejściem traktującym materiały jako poufne.

Etap drugi: implementacja modeli w Azure AI Foundry

Dwie implementacje w ramach projektu Foundry:

  • Chat (chat-deploy) do generowania odpowiedzi
  • Embeddingi (embed-deploy, text-embedding-3-small) dla wektorów dokumentów i zapytań
  • Należy upewnić się, że oba istnieją, zanim podłączy się zestawy umiejętności lub agenty do wyszukiwania; brak takich implementacji powoduje późniejsze trudne do zdiagnozowania błędy indeksacji.

    Etap trzeci: Azure AI Search i zindeksowany wektorowo zbiór danych

    Należy utworzyć usługę wyszukiwania, a następnie indeks, którego pola zawierają tekst w fragmentach, wektory oraz metadane dokumentów. Należy do niego dodać zestaw umiejętności, który:

    1. Pobiera pliki z knowledge-docs
    2. Dzieli je na nakładające się fragmenty
    3. Wywołuje implementację embeddingów
    4. Zapisuje wektory do indeksu

    Osoby odpowiedzialne za indeksację potrzebują uprawnień do odczytu plików oraz do wywoływania punktu końcowego embeddingów. Przypisanie ról, które wydają się „prawie poprawne”, nadal powoduje błędy w czasie działania — należy sprawdzić dokładne identyfikatory zasobów.

    Web Api response status: 'NotFound'
    DeploymentNotFound: The API deployment for this resource does not exist.
    
    Web Api response status: 'Unauthorized' (401)
    Access denied due to invalid subscription key or wrong API endpoint.
    
    Access denied when connecting to the MCP server ... HTTP 403 Forbidden
    
    You are an assistant that answers questions about digital forensics course material.
    For every user question, you MUST first search the connected knowledge base before answering.
    Only answer using information retrieved from the knowledge base.
    If the knowledge base returns no relevant results, say so explicitly rather than answering from general knowledge.
    

    Etap czwarty: błędy indeksowania i ich znaczenie

    Indeksowanie rzadko zawodzi z powodu jednego wyraźnego problemu. Częste przyczyny to:

    • Skillset nie może dotrzeć do środowiska uruchomienia embeddingów (błędne uwierzytelnienie lub nieprawidłowy endpoint)
    • Harmonogram uruchamiania indeksatora działa, ale dokumenty pozostają na poziomie zero (błąd w ścieżce kontenera lub odniesieniu do skillset)
    • Wektory są zapisywane z niewłaściwymi wymiarami (niezgodność modelu pomiędzy schematem indeksu a środowiskiem uruchomienia)

    Każdy taki przypadek należy traktować jako błąd konfiguracji, a nie awarię związaną z koncepcją RAG. Zapisz historię wykonywania indeksatora przed zmianą trzech ustawień jednocześnie.

    Etap piąty: połączenie indeksu z agentem

    W Foundry należy dołączyć indeks wyszukiwania jako źródło wiedzy dla agenta. Instrukcje powinny wymagać cytowania odnalezionych fragmentów oraz odrzucenia wyników, gdy indeks nie zwraca żadnych istotnych informacji. Przetestuj to pytaniem, na które odpowiedź znajduje się tylko na jednej stronie PDF – sukces oznacza poprawne cytowanie, a nie trafną domysłową odpowiedź.

    Etap szósty: dwa problemy behawioralne

    Poza kwestiami konfiguracyjnymi pojawiły się dwa problemy behawioralne:

    1. Zbyt chętne rozwiązania awaryjne — model czatowy odpowiadał na podstawie wcześniejszej wiedzy, gdy wyniki wyszukiwania były puste. Należy udoskonalić instrukcje oraz, tam gdzie to możliwe, sprawdzenia poprawności informacji, aby puste wyniki wyszukiwania skutkowały komunikatem „nie ma tego w korpusie”.
    2. Niespójność autoryzacji — niektóre łącza nadal używały kluczy, podczas gdy inne wykorzystywały zarządzane tożsamości. Mieszana autoryzacja utrudnia rotację kont i uniemożliwia stwierdzenie, które konto faktycznie odniosło sukces.

    Ani jedno z nich nie jest polem wyboru w portalu; oba stanowią decyzje dotyczące produktu, zakodowane w instrukcjach i projekcie identyfikacji.

    Co tak naprawdę dzieje się w tle

    Zadanie użytkownika jest wplecione, funkcja wyszukiwania zwraca najważniejsze fragmenty, prompt agenta otrzymuje te fragmenty wraz z instrukcjami, a model czatowy generuje odpowiedź ograniczoną (w idealnym przypadku) do tego kontekstu. Przechowywanie plików w formacie blob nigdy nie komunikuje się bezpośrednio z agentem; funkcja wyszukiwania stanowi granicę dostępu do danych. Foundry pełni rolę narzędzia do orkiestracji i hostowania modeli.

    Wyzwania i wnioski

    • Niezbędne jest sprawdzenie dostępności regionu i modelu przed utworzeniem zasobu.
    • Rozmiar wektorów embedding w schemacie indeksu musi dokładnie odpowiadać wybranemu modelowi embedding.
    • Błędy RBAC wyglądają jak puste indeksy, dopóki nie przejrzysz szczegółów indeksatora.
    • Instrukcje dla agenta są elementem zapewniającym poprawność działania, a nie tylko dekoracją.
  • Zdokumentuj model autoryzacji, który faktycznie wykorzystujesz, włączając klucze tymczasowe.
  • Główne wnioski

    Azure RAG składa się z serii małych kontraktów: ochrona prywatności plików, uprawnienia do wstawiania treści z zestawu umiejętności, schemat indeksu↔wymiary modelu, przypinanie wiedzy agenta oraz polityka generowania odpowiedzi opartych na faktach. Jeśli te elementy będą poprawne, architektura będzie prosta – w pozytywnym sensie. Jeśli coś pominiesz, będziesz debugować przez dni, wierząc, że „RAG nie działa”.

    Wskazówka operacyjna: przechowuj jednostronicowy przewodnik, w którym wymienione są dokładne nazwy zasobów, nazwy implementacji (a nie nazwy modeli bazowych), nazwa indeksu, nazwa zestawu umiejętności oraz zarządzane tożsamości lub klucze używane na każdym etapie. Gdy indeksator zawiedzie o godzinie 02:00, ta strona pomoże szybciej niż analiza skrínów z portalu. Dodaj cotygodniową zadanie, które zadaje trzy kluczowe pytania, na które odpowiedzi znajdują się na określonych stronach, i zatrzymaj proces budowy, jeśli jakość odpowiedzi się pogorszy.

    Wskazówka operacyjna: przechowuj jednostronicowy przewodnik, w którym wymienione są dokładne nazwy zasobów, nazwy implementacji (a nie nazwy modeli bazowych), nazwa indeksu, nazwa zestawu umiejętności oraz zarządzane tożsamości lub klucze używane na każdym etapie. Gdy indeksator zawiedzie o godzinie 02:00, ta strona pomoże uniknąć konieczności analizy na podstawie skrínów z portalu. Dodaj cotygodniową zadanie, które zadaje trzy kluczowe pytania, na które odpowiedzi znajdują się na znanych stronach, i które powoduje porzucenie procesu budowy w przypadku pogorszenia spójności danych.

    Wskazówka operacyjna: przechowuj jednostronicowy przewodnik, w którym wymienione są dokładne nazwy zasobów, nazwy implementacji (a nie nazwy modeli bazowych), nazwa indeksu, nazwa zestawu umiejętności oraz zarządzane tożsamości lub klucze używane na każdym etapie. Gdy indeksator zawiedzie o godzinie 02:00, ta strona pomoże uniknąć konieczności analizy na podstawie skrínów z portalu. Dodaj cotygodniową zadanie, które zadaje trzy kluczowe pytania, na które odpowiedzi znajdują się na znanych stronach, i które powoduje porzucenie procesu budowy w przypadku pogorszenia spójności danych.

    Wskazówka operacyjna: przechowuj jednostronicowy przewodnik, w którym wymienione są dokładne nazwy zasobów, nazwy implementacji (a nie nazwy modeli bazowych), nazwa indeksu, nazwa zestawu umiejętności oraz zarządzane tożsamości lub klucze używane na każdym etapie. Gdy indeksator zawiedzie o godzinie 02:00, ta strona pomoże uniknąć konieczności analizy na podstawie skrínów z portalu. Dodaj cotygodniową zadanie, które zadaje trzy kluczowe pytania, na które odpowiedzi znajdują się na znanych stronach, i które powoduje porzucenie procesu budowy w przypadku pogorszenia spójności danych.

    Wskazówka operacyjna: przechowuj jednostronicowy przewodnik, w którym wymienione są dokładne nazwy zasobów, nazwy implementacji (a nie nazwy modeli bazowych), nazwa indeksu, nazwa zestawu umiejętności oraz zarządzane tożsamości lub klucze używane na każdym etapie. Gdy indeksator zawiedzie o godzinie 02:00, ta strona pomoże uniknąć konieczności analizy na podstawie skrínów z portalu. Dodaj cotygodniową zadanie, które zadaje trzy kluczowe pytania, na które odpowiedzi znajdują się na znanych stronach, i które powoduje porzucenie procesu budowy w przypadku pogorszenia spójności danych.

    Wskazówka operacyjna: przechowuj jednostronicowy przewodnik, w którym wymienione są dokładne nazwy zasobów, nazwy implementacji (a nie nazwy modeli bazowych), nazwa indeksu, nazwa zestawu umiejętności oraz zarządzane tożsamości lub klucze używane na każdym etapie. Gdy indeksator zawiedzie o godzinie 02:00, ta strona pomoże uniknąć konieczności analizy na podstawie skrínów z portalu. Dodaj cotygodniową zadanie, które zadaje trzy kluczowe pytania, na które odpowiedzi znajdują się na znanych stronach, i które powoduje porzucenie procesu budowy w przypadku pogorszenia spójności danych.

    Wskazówka operacyjna: przechowuj jednostronicowy przewodnik, w którym wymienione są dokładne nazwy zasobów, nazwy implementacji (a nie nazwy modeli bazowych), nazwa indeksu, nazwa zestawu umiejętności oraz zarządzane tożsamości lub klucze używane na każdym etapie. Gdy indeksator zawiedzie o godzinie 02:00, ta strona pomoże uniknąć konieczności analizy na podstawie skrínów z portalu. Dodaj cotygodniową zadanie, które zadaje trzy kluczowe pytania, na które odpowiedzi znajdują się na znanych stronach, i które powoduje porzucenie procesu budowy w przypadku pogorszenia spójności danych.

    Wskazówka operacyjna: przechowuj jednostronicowy przewodnik, w którym wymienione są dokładne nazwy zasobów, nazwy implementacji (a nie nazwy modeli bazowych), nazwa indeksu, nazwa zestawu umiejętności oraz zarządzane tożsamości lub klucze używane na każdym etapie. Gdy indeksator zawiedzie o godzinie 02:00, ta strona pomoże uniknąć konieczności analizy na podstawie skrínów z portalu. Dodaj cotygodniowe zadanie, które zadaje trzy kluczowe pytania, na które odpowiedzi znajdują się na znanych stronach, i które powoduje porzucenie procesu budowy, jeśli jakość danych się pogorszy.

    Wskazówka operacyjna: przechowuj jednostronicowy przewodnik, w którym wymienione są dokładne nazwy zasobów, nazwy implementacji (a nie nazwy modeli bazowych), nazwa indeksu, nazwa zestawu umiejętności oraz zarządzane tożsamości lub klucze używane na każdym etapie. Gdy indeksator zawiedzie o godzinie 02:00, ta strona pomoże uniknąć konieczności analizy na podstawie skrínów z portalu. Dodaj cotygodniowe zadanie, które zadaje trzy kluczowe pytania, na które odpowiedzi znajdują się na znanych stronach, i które powoduje porzucenie procesu budowy, jeśli jakość danych się pogorszy.

    Wskazówka operacyjna: przechowuj jednostronicowy przewodnik, w którym wymienione są dokładne nazwy zasobów, nazwy implementacji (a nie nazwy modeli bazowych), nazwa indeksu, nazwa zestawu umiejętności oraz zarządzane tożsamości lub klucze używane na każdym etapie. Gdy indeksator zawiedzie o godzinie 02:00, ta strona pomoże uniknąć konieczności analizy na podstawie skrínów z portalu. Dodaj cotygodniową zadanie, które zadaje trzy kluczowe pytania, na które odpowiedzi znajdują się na znanych stronach, i które powoduje porzucenie procesu budowy w przypadku pogorszenia spójności danych.

    Wskazówka operacyjna: przechowuj jednostronicowy przewodnik, w którym wymienione są dokładne nazwy zasobów, nazwy implementacji (a nie nazwy modeli bazowych), nazwa indeksu, nazwa zestawu umiejętności oraz zarządzane tożsamości lub klucze używane na każdym etapie. Gdy indeksator zawiedzie o godzinie 02:00, ta strona pomoże uniknąć konieczności analizy na podstawie skrínów z portalu. Dodaj cotygodniową zadanie, które zadaje trzy kluczowe pytania, na które odpowiedzi znajdują się na znanych stronach, i które powoduje porzucenie procesu budowy w przypadku pogorszenia spójności danych.

    Wskazówka operacyjna: przechowuj jednostronicowy przewodnik, w którym wymienione są dokładne nazwy zasobów, nazwy implementacji (a nie nazwy modeli bazowych), nazwa indeksu, nazwa zestawu umiejętności oraz zarządzane tożsamości lub klucze używane na każdym etapie. Gdy indeksator zawiedzie o godzinie 02:00, ta strona pomoże uniknąć konieczności analizy na podstawie skrínów z portalu. Dodaj cotygodniową zadanie, które zadaje trzy kluczowe pytania, na które odpowiedzi znajdują się na znanych stronach, i które powoduje porzucenie procesu budowy w przypadku pogorszenia spójności danych.

    Wskazówka operacyjna: przechowuj jednostronicowy przewodnik, w którym wymienione są dokładne nazwy zasobów, nazwy implementacji (a nie nazwy modeli bazowych), nazwa indeksu, nazwa zestawu umiejętności oraz zarządzane tożsamości lub klucze używane na każdym etapie. Gdy indeksator zawiedzie o godzinie 02:00, ta strona pomoże uniknąć konieczności analizy na podstawie skrínów z portalu. Dodaj cotygodniową zadanie, które zadaje trzy kluczowe pytania, na które odpowiedzi znajdują się na znanych stronach, i które powoduje porzucenie procesu budowy w przypadku pogorszenia spójności danych.

    Wskazówka operacyjna: przechowuj jednostronicowy przewodnik, w którym wymienione są dokładne nazwy zasobów, nazwy implementacji (a nie nazwy modeli bazowych), nazwa indeksu, nazwa zestawu umiejętności oraz zarządzane tożsamości lub klucze używane na każdym etapie. Gdy indeksator zawiedzie o godzinie 02:00, ta strona pomoże uniknąć konieczności analizy na podstawie skrínów z portalu. Dodaj cotygodniową zadanie, które zadaje trzy kluczowe pytania, na które odpowiedzi znajdują się na znanych stronach, i powoduje porzucenie procesu budowy, jeśli jakość danych się pogorszy.

    Wskazówka operacyjna: przechowuj jednostronicowy przewodnik, w którym wymienione są dokładne nazwy zasobów, nazwy implementacji (a nie nazwy modeli bazowych), nazwa indeksu, nazwa zestawu umiejętności oraz zarządzane tożsamości lub klucze używane na każdym etapie. Gdy indeksator zawiedzie o godzinie 02:00, ta strona pomoże uniknąć konieczności analizy na podstawie skrínów z portalu. Dodaj cotygodniową zadanie, które zadaje trzy kluczowe pytania, na które odpowiedzi znajdują się na znanych stronach, i powoduje porzucenie procesu budowy, jeśli jakość danych się pogorszy.

    Literatura pokrewna

    • Agentic RAG w Azure AI Search z pętlami planu, oceny i przepisywania — Hybrydowe wyszukiwanie w połączeniu z refleksją LangGraph, redukcją ACL, kontrolami ugruntowania oraz telemetrycznymi danymi sprawia, że proces pozyskiwania informacji w przedsiębiorstwach funkcjonuje w zamkniętym cyklu, a nie jest jednorazową operacją.
    • RAG od pierwszych zasad do trzech agentów Bedrock — Dlaczego metody oparte na wagach zawodzą przy danych prywatnych, jak działają embeddingi i mechanizm kosinusowy do wyszukiwania, oraz trzy stopniowe rozwiązania agentów od zarządzanych bazy wiedzy po samodzielne przetwarzanie danych.
  • Zasady bezpieczeństwa portalu Azure AI Foundry w porównaniu z kontrolami PII na poziomie aplikacji — Filtry portalu chronią przed próbami obejścia zabezpieczeń oraz klasami danych wrażliwych, których nie wykryła wcześniejsza warstwa Pythona — przetestuj je za pomocą rzeczywistych zapytań i zachowaj mechanizmy ochrony kodu dla reguł domeny.
  • Kredyty Azure OpenAI przy uruchamianiu: nazwy implementacji, regiony oraz higiena plików .env — Kredyty studenckie Azure czynią Azure OpenAI praktycznym narzędziem do laboratoriów RAG — jeśli wybierzesz odpowiedni region dla modelu, podaj nazwę implementacji i nigdy nie przechowuj kluczy.
  • Dwa zadania z użyciem LLM na jednej karcie GPU: vLLM LoRA, agenci oraz dopracowanie modeli w Azure ML — Obsługa ruchu interaktywnego i zbiorczego pochodzącego od agentów za pomocą jednej karty, z wykorzystaniem technologii LoRA, analiz w ClickHouse, plików typu Blob oraz treningu z wykorzystaniem Unsloth, wszystko to monitorowane w MLflow.
  • Microsoft Foundry przekształca wywołania API modeli w zorganizowane operacje sztucznej inteligencji — Przejście od jednorazowych zadań do katalogów, agentów, systemów RBAC, śledzenia procesów oraz oceny na zintegrowanej platformie Azure AI.
  • Production RAG na Azure: dzielenie na fragmenty, wyszukiwanie hybrydowe, filtry i cytaty — Wymagania przedsiębiorstw dotyczące wyszukiwania wymagają fragmentów uwzględniających strukturę, wyszukiwania hybrydowego, filtrów ACL, ponownego rankowania, spersonalizowanych promptów oraz oceny — a nie tylko demonstracji w formacie PDF.
  • APIM przed wywołaniami agentic Foundry z użyciem RBAC o minimalnych uprawnieniach — Wywołania modelu frontowego przy użyciu API Management, zarządzanej tożsamości, dostosowanych ról w warstwie danych oraz backendów Function App.