Samouczek: indeksowanie i wzbogacanie zaszyfrowanych obiektów blob na potrzeby wyszukiwania pełnotekstowego w usłudze Azure AI Search

W tym samouczku pokazano, jak za pomocą usługi Azure AI Search indeksować dokumenty, które zostały wcześniej zaszyfrowane przy użyciu klucza zarządzanego przez klienta w usłudze Azure Blob Storage.

Zwykle indeksator nie może wyodrębnić zawartości z zaszyfrowanych plików, ponieważ nie ma dostępu do klucza szyfrowania zarządzanego przez klienta w usłudze Azure Key Vault. Jednak korzystając z umiejętności niestandardowej DecryptBlobFile, a następnie umiejętności wyodrębniania dokumentów, można zapewnić kontrolowany dostęp do klucza w celu odszyfrowania plików, a następnie wyodrębnienia zawartości z nich. Dzięki temu można indeksować i wzbogacać te dokumenty bez naruszania stanu szyfrowania przechowywanych dokumentów.

Począwszy od wcześniej zaszyfrowanych całych dokumentów (tekstu bez struktury), takich jak PDF, HTML, DOCX i PPTX w usłudze Azure Blob Storage, ten samouczek używa klienta REST i interfejsów API REST wyszukiwania do wykonywania następujących zadań:

  • Zdefiniuj potok, który odszyfrowuje dokumenty i wyodrębnia z nich tekst.
  • Zdefiniuj indeks do przechowywania danych wyjściowych.
  • Wykonaj potok, aby utworzyć i załadować indeks.
  • Eksploruj wyniki przy użyciu wyszukiwania pełnotekstowego i składni kwerendy sformatowanej.

Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem otwórz bezpłatne konto .

Wymagania wstępne

Wdrożenie umiejętności niestandardowych tworzy aplikację funkcji platformy Azure i konto usługi Azure Storage. Ponieważ te zasoby są tworzone dla Ciebie, nie są one wymienione jako wymagania wstępne. Po zakończeniu pracy z tym samouczkiem pamiętaj, aby wyczyścić zasoby, aby nie być naliczane opłaty za usługi, których nie używasz.

Uwaga

Zestawy umiejętności często wymagają dołączania zasobu obejmującego wiele usług w usłudze Azure AI. Jak pisano, ten zestaw umiejętności nie jest zależny od usług azure AI i dlatego nie jest wymagany żaden klucz. Jeśli później dodasz wzbogacanie, które wywołują wbudowane umiejętności, pamiętaj, aby odpowiednio zaktualizować zestaw umiejętności.

1 — Tworzenie usług i zbieranie poświadczeń

Wdrażanie umiejętności niestandardowych

W tym przykładzie użyto przykładowego projektu DecryptBlobFile z repozytorium GitHub umiejętności usługi Azure Search Power Skills . W tej sekcji wdrożysz umiejętności w funkcji platformy Azure, aby można było jej używać w zestawie umiejętności. Wbudowany skrypt wdrażania tworzy zasób funkcji platformy Azure o nazwie rozpoczynający się od psdbf-function-app- i ładuje umiejętności. Zostanie wyświetlony monit o podanie subskrypcji i grupy zasobów. Pamiętaj, aby wybrać tę samą subskrypcję, w którym znajduje się wystąpienie usługi Azure Key Vault.

Operacyjnie umiejętność DecryptBlobFile przyjmuje adres URL i token SAS dla każdego obiektu blob jako dane wejściowe, a następnie zwraca pobrany, odszyfrowany plik przy użyciu kontraktu referencyjnego pliku oczekiwanego przez usługę Azure AI Search. Pamiętaj, że plik DecryptBlobFile wymaga klucza szyfrowania, aby przeprowadzić odszyfrowywanie. W ramach konfiguracji utworzysz również zasady dostępu, które udzielają dostępu funkcji DecryptBlobFile do klucza szyfrowania w usłudze Azure Key Vault.

  1. Kliknij przycisk Wdróż na platformie Azure znajdujący się na stronie docelowej DecryptBlobFile, który otworzy udostępniony szablon usługi Resource Manager w witrynie Azure Portal.

  2. Wybierz tę samą subskrypcję, w której istnieje wystąpienie usługi Azure Key Vault (ten samouczek nie będzie działać, jeśli wybierzesz inną subskrypcję).

  3. Wybierz istniejącą grupę zasobów lub utwórz nową. Dedykowana grupa zasobów ułatwia późniejsze czyszczenie.

  4. Wybierz pozycję Przejrzyj i utwórz, upewnij się, że akceptujesz warunki, a następnie wybierz pozycję Utwórz , aby wdrożyć funkcję platformy Azure.

    Zrzut ekranu przedstawiający stronę szablonu usługi ARM w witrynie Azure Portal.

  5. Poczekaj na zakończenie wdrożenia.

Musisz mieć aplikację funkcji platformy Azure zawierającą logikę odszyfrowywania i zasób usługi Azure Storage, który będzie przechowywać dane aplikacji. W następnych kilku krokach przyznasz aplikacji uprawnienia dostępu do magazynu kluczy i zbierzesz informacje potrzebne do wywołań REST.

Udzielanie uprawnień w usłudze Azure Key Vault

  1. Przejdź do usługi Azure Key Vault w portalu. Utwórz zasady dostępu w usłudze Azure Key Vault, które udzielają dostępu klucza do umiejętności niestandardowych.

  2. W okienku nawigacji po lewej stronie wybierz pozycję Zasady dostępu, a następnie wybierz pozycję + Utwórz, aby uruchomić kreatora Tworzenie zasad dostępu.

    Zrzut ekranu przedstawiający polecenie Zasady dostępu w okienku nawigacji po lewej stronie.

  3. Na stronie Uprawnienia w obszarze Konfigurowanie z szablonu wybierz pozycję Azure Data Lake Storage lub Azure Storage.

  4. Wybierz Dalej.

  5. Na stronie Podmiot zabezpieczeń wybierz wdrożone wystąpienie funkcji platformy Azure. Możesz go wyszukać przy użyciu prefiksu zasobu, który został użyty do utworzenia go w kroku 2, który ma domyślną wartość prefiksu psdbf-function-app.

  6. Wybierz Dalej.

  7. Na stronie Przeglądanie i tworzenie wybierz pozycję Utwórz.

Zbieranie informacji o aplikacji

  1. Przejdź do funkcji psdbf-function-app w portalu i zanotuj następujące właściwości potrzebne do wywołań REST:

  2. Pobierz adres URL funkcji, który można znaleźć w obszarze Podstawy na stronie głównej funkcji.

    Zrzut ekranu przedstawiający stronę przeglądu i sekcję Podstawy aplikacji funkcji platformy Azure.

  3. Pobierz kod klucza hosta, który można znaleźć, przechodząc do pozycji Klucze aplikacji, klikając, aby wyświetlić klucz domyślny i skopiować wartość.

    Zrzut ekranu przedstawiający stronę Klucze aplikacji funkcji platformy Azure.

  1. Zaloguj się do witryny Azure Portal i na stronie Przegląd usługi wyszukiwania uzyskaj nazwę usługi wyszukiwania. Nazwę usługi możesz potwierdzić, przeglądając adres URL punktu końcowego. Jeśli adres URL punktu końcowego to https://mydemo.search.windows.net, nazwa usługi to mydemo.

  2. W Ustawienia> Keys uzyskaj klucz administratora dla pełnych praw w usłudze. Istnieją dwa zamienne klucze administratora, które zapewniają ciągłość działania na wypadek konieczności przerzucania jednego. Możesz użyć klucza podstawowego lub pomocniczego na żądaniach dodawania, modyfikowania i usuwania obiektów.

    Uzyskiwanie nazwy usługi oraz kluczy administracyjnych i zapytań

Wszystkie żądania wymagają klucza api-key w nagłówku każdego żądania wysłanego do usługi. Prawidłowy klucz ustanawia relację zaufania dla poszczególnych żądań między aplikacją wysyłającą żądanie a usługą, która go obsługuje.

Konfigurowanie klienta REST

Utwórz zmienne dla punktów końcowych i kluczy:

Zmienna Gdzie to zrobić
admin-key Na stronie Klucze usługa wyszukiwania usługi Azure AI.
search-service-name Nazwa usługa wyszukiwania usługi Azure AI. Adres URL to https://{{search-service-name}}.search.windows.net.
storage-connection-string Na koncie magazynu na karcie Klucze dostępu wybierz pozycję key1> Połączenie ion ciąg.
storage-container-name Nazwa kontenera obiektów blob, który zawiera zaszyfrowane pliki do indeksowania.
function-uri W funkcji platformy Azure w obszarze Podstawy na stronie głównej.
function-code W funkcji platformy Azure, przechodząc do pozycji Klucze aplikacji, klikając, aby wyświetlić klucz domyślny i skopiować wartość.
api-version Pozostaw wartość 2020-06-30.
datasource-name Pozostaw wartość encrypted-blobs-ds.
index-name Pozostaw wartość encrypted-blobs-idx.
skillset-name Pozostaw wartość encrypted-blobs-ss.
indexer-name Pozostaw wartość encrypted-blobs-ixr.

Przeglądanie i uruchamianie każdego żądania

Użyj żądań HTTP, aby utworzyć obiekty potoku wzbogacania:

  • ŻĄDANIE PUT do utworzenia indeksu: ten indeks wyszukiwania zawiera dane używane i zwracane przez usługę Azure AI Search.

  • Żądanie POST utworzenia źródła danych: to źródło danych określa połączenie z kontem magazynu zawierającym zaszyfrowane pliki obiektów blob.

  • Żądanie PUT utworzenia zestawu umiejętności: zestaw umiejętności określa niestandardową definicję umiejętności dla funkcji platformy Azure, która odszyfruje dane pliku obiektów blob, oraz documentExtractionSkill w celu wyodrębnienia tekstu z każdego dokumentu po jego odszyfrowaniu.

  • Żądanie PUT utworzenia indeksatora: Uruchomienie indeksatora pobiera obiekty blob, stosuje zestaw umiejętności oraz indeksuje i przechowuje wyniki. To żądanie należy uruchomić ostatnio. Niestandardowa umiejętność w zestawie umiejętności wywołuje logikę odszyfrowywania.

Monitorowanie indeksowania

Indeksowanie i wzbogacanie rozpoczyna się zaraz po przesłaniu żądania Tworzenia indeksatora. W zależności od liczby dokumentów na koncie magazynu indeksowanie może zająć trochę czasu. Aby dowiedzieć się, czy indeksator jest nadal uruchomiony, wyślij żądanie Get Indexer Status (Pobierz stan indeksatora) i przejrzyj odpowiedź, aby dowiedzieć się, czy indeksator jest uruchomiony, czy też wyświetlić informacje o błędach i ostrzeżeniach.

Jeśli używasz warstwy Bezpłatna, oczekiwany jest następujący komunikat: "Could not extract content or metadata from your document. Truncated extracted text to '32768' characters". Ten komunikat jest wyświetlany, ponieważ indeksowanie obiektów blob w warstwie Bezpłatna ma limit 32K wyodrębniania znaków. Ten komunikat nie będzie widoczny dla tego zestawu danych w wyższych warstwach.

Wyszukiwanie zawartości

Po zakończeniu wykonywania indeksatora można uruchomić kilka zapytań, aby sprawdzić, czy dane zostały pomyślnie odszyfrowane i zindeksowane. Przejdź do usługa wyszukiwania usługi Azure AI w portalu i użyj eksploratora wyszukiwania, aby uruchamiać zapytania względem indeksowanych danych.

Czyszczenie zasobów

Gdy pracujesz we własnej subskrypcji, na końcu projektu warto usunąć zasoby, których już nie potrzebujesz. Uruchomione zasoby mogą generować koszty. Zasoby możesz usuwać pojedynczo lub jako grupę zasobów, usuwając cały zestaw zasobów.

Zasoby można znaleźć w portalu i zarządzać nimi, korzystając z linku Wszystkie zasoby lub Grupy zasobów w okienku nawigacji po lewej stronie.

Następne kroki

Teraz, gdy pomyślnie zaindeksujesz zaszyfrowane pliki, możesz wykonać iterację w tym potoku, dodając więcej umiejętności poznawczych. Pozwoli to wzbogacić i uzyskać dodatkowe szczegółowe informacje na temat danych.

Jeśli pracujesz z podwójnie zaszyfrowanymi danymi, warto zbadać funkcje szyfrowania indeksów dostępne w usłudze Azure AI Search. Mimo że indeksator potrzebuje odszyfrowanych danych do celów indeksowania, po utworzeniu indeksu można je zaszyfrować w indeksie wyszukiwania przy użyciu klucza zarządzanego przez klienta. Zapewni to, że dane są zawsze szyfrowane podczas magazynowania. Aby uzyskać więcej informacji, zobacz Konfigurowanie kluczy zarządzanych przez klienta na potrzeby szyfrowania danych w usłudze Azure AI Search.