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 obiektów blob, które zostały zaszyfrowane przy użyciu szyfrowania po stronie klienta biblioteki klienta usługi Azure Blob Storage, ponieważ indeksator 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
Usługa Azure AI Search w dowolnej warstwie lub regionie.
Azure Storage, Standardowa wydajność (ogólnego przeznaczenia w wersji 2).
Obiekty blob szyfrowane przy użyciu klucza zarządzanego przez klienta. Zobacz Samouczek: szyfrowanie i odszyfrowywanie obiektów blob przy użyciu usługi Azure Key Vault , jeśli chcesz utworzyć przykładowe dane.
Usługa Azure Key Vault w tej samej subskrypcji co usługa Azure AI Search. Magazyn kluczy musi mieć włączoną ochronę usuwania nietrwałego i przeczyszczania.
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.
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 z prefiksem 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ą funkcji DecryptBlobFile dostępu do klucza szyfrowania w usłudze Azure Key Vault.
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.
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ę).
Wybierz istniejącą grupę zasobów lub utwórz nową. Dedykowana grupa zasobów ułatwia późniejsze czyszczenie.
Wybierz pozycję Przejrzyj i utwórz, upewnij się, że akceptujesz warunki, a następnie wybierz pozycję Utwórz , aby wdrożyć funkcję platformy Azure.
Poczekaj na zakończenie tego procesu wdrożeniowego.
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
Przejdź do usługi Azure Key Vault w witrynie Azure Portal. Utwórz zasady dostępu w usłudze Azure Key Vault, które udzielają dostępu klucza do umiejętności niestandardowych.
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.
Na stronie Uprawnienia w obszarze Konfigurowanie z szablonu wybierz pozycję Azure Data Lake Storage lub Azure Storage.
Wybierz Dalej.
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.
Wybierz Dalej.
Na stronie Przeglądanie i tworzenie wybierz pozycję Utwórz.
Zbieranie informacji o aplikacji
Przejdź do funkcji psdbf-function-app w witrynie Azure Portal i zanotuj następujące właściwości potrzebne do wywołań REST:
Pobierz adres URL funkcji, który można znaleźć w obszarze Podstawy na stronie głównej funkcji.
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ść.
Uzyskiwanie klucza i adresu URL administratora dla usługi Azure AI Search
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 tomydemo
.W obszarze Klucze ustawień>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.
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>Parametry połączenia. |
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 witrynie Azure Portal i użyj Eksploratora wyszukiwania, aby uruchamiać zapytania dotyczące 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 witrynie Azure Portal 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. 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.