Tworzenie indeksatora w usłudze Azure AI Search

Użyj indeksatora, aby zautomatyzować importowanie i indeksowanie danych w usłudze Azure AI Search. Indeksator to nazwany obiekt w usłudze wyszukiwania, która łączy się z zewnętrznym źródłem danych platformy Azure, odczytuje dane i przekazuje je do aparatu wyszukiwania na potrzeby indeksowania. Użycie indeksatorów znacznie zmniejsza ilość i złożoność kodu, który należy napisać, jeśli używasz obsługiwanego źródła danych.

Indeksatory obsługują dwa przepływy pracy:

  • Indeksowanie oparte na tekście, wyodrębnianie ciągów i metadanych z zawartości tekstowej w scenariuszach wyszukiwania pełnotekstowego.

  • Indeksowanie oparte na umiejętnościach przy użyciu wbudowanych lub niestandardowych umiejętności, które dodają zintegrowane uczenie maszynowe do analizy obrazów i dużej, niezróżnionej zawartości, wyodrębniania lub wnioskowania tekstu i struktury. Indeksowanie oparte na umiejętnościach umożliwia wyszukiwanie zawartości, która w przeciwnym razie nie jest łatwo przeszukiwana pełnotekstowo. Aby dowiedzieć się więcej, zobacz Wzbogacanie sztucznej inteligencji w usłudze Azure AI Search.

Ten artykuł koncentruje się na podstawowych krokach tworzenia indeksatora. W zależności od źródła danych i przepływu pracy może być konieczna większa konfiguracja.

Wymagania wstępne

  • Obsługiwane źródło danych zawierające zawartość, którą chcesz pozyskać.

  • Źródło danych indeksatora, które konfiguruje połączenie z danymi zewnętrznymi.

  • Indeks wyszukiwania, który może akceptować dane przychodzące.

  • Należy stosować się do maksymalnych limitów dla warstwy usługi. Warstwa Bezpłatna umożliwia trzy obiekty każdego typu i 1–3 minuty przetwarzania indeksatora lub 3–10, jeśli istnieje zestaw umiejętności.

Wzorce indeksatora

Podczas tworzenia indeksatora definicja jest jednym z dwóch wzorców: indeksowania opartego na tekście lub wzbogacania sztucznej inteligencji z umiejętnościami. Wzorce są takie same, z wyjątkiem tego, że indeksowanie oparte na umiejętnościach ma więcej definicji.

Przykład indeksatora na potrzeby indeksowania opartego na tekście

Indeksowanie oparte na tekście dla wyszukiwania pełnotekstowego jest podstawowym przypadkiem użycia indeksatorów, a dla tego przepływu pracy indeksator wygląda podobnie do tego przykładu.

{
  "name": (required) String that uniquely identifies the indexer,
  "description": (optional),
  "dataSourceName": (required) String indicating which existing data source to use,
  "targetIndexName": (required) String indicating which existing index to use,
  "parameters": {
    "batchSize": null,
    "maxFailedItems": 0,
    "maxFailedItemsPerBatch": 0,
    "base64EncodeKeys": false,
    "configuration": {}
  },
  "fieldMappings": (optional) unless field discrepancies need resolution,
  "disabled": null,
  "schedule": null,
  "encryptionKey": null
}

Indeksatory mają następujące wymagania:

  • Właściwość "name" , która jednoznacznie identyfikuje indeksator w kolekcji indeksatora.
  • Właściwość "dataSourceName" wskazująca obiekt źródła danych. Określa połączenie z danymi zewnętrznymi.
  • Właściwość wskazująca "targetIndexName" docelowy indeks wyszukiwania.

Inne parametry są opcjonalne i modyfikują zachowania czasu wykonywania, takie jak liczba błędów do zaakceptowania przed niepowodzeniem całego zadania. Wymagane parametry są określane we wszystkich indeksatorach i są udokumentowane w dokumentacji interfejsu API REST.

Indeksatory specyficzne dla źródła danych dla obiektów blob, SQL i Azure Cosmos DB zapewniają dodatkowe "configuration" parametry dla zachowań specyficznych dla źródła. Jeśli na przykład źródłem jest usługa Blob Storage, można ustawić parametr filtrujący rozszerzenia plików: "parameters" : { "configuration" : { "indexedFileNameExtensions" : ".pdf,.docx" } }. Jeśli źródłem jest usługa Azure SQL, możesz ustawić parametr limitu czasu zapytania.

Mapowania pól są używane do jawnego mapowania pól źródłowych do miejsca docelowego, jeśli występują rozbieżności według nazwy lub typu między polem w źródle danych a polem w indeksie wyszukiwania.

Domyślnie indeksator jest uruchamiany natychmiast po utworzeniu go w usłudze wyszukiwania. Jeśli nie chcesz wykonywać indeksatora, ustaw wartość "disabled" true podczas tworzenia indeksatora.

Można również określić harmonogram lub ustawić klucz szyfrowania na potrzeby dodatkowego szyfrowania definicji indeksatora.

Przykład indeksatora na potrzeby indeksowania opartego na umiejętnościach

Indeksatory napędzają również wzbogacanie sztucznej inteligencji. Wszystkie powyższe właściwości i parametry mają zastosowanie, ale następujące dodatkowe właściwości są specyficzne dla wzbogacania sztucznej inteligencji: "skillSetName", , "cache""outputFieldMappings".

{
  "name": (required) String that uniquely identifies the indexer,
  "dataSourceName": (required) String, provides raw content that will be enriched,
  "targetIndexName": (required) String, name of an existing index,
  "skillsetName" : (required for AI enrichment) String, name of an existing skillset,
  "cache":  {
    "storageConnectionString" : (required if you enable the cache) Connection string to a blob container,
    "enableReprocessing": true
    },
  "parameters": { },
  "fieldMappings": (optional) Maps fields in the underlying data source to fields in an index,
  "outputFieldMappings" : (required) Maps skill outputs to fields in an index,
}

Wzbogacanie sztucznej inteligencji jest własnym obszarem tematycznym i jest poza zakresem tego artykułu. Aby uzyskać więcej informacji, zacznij od wzbogacania sztucznej inteligencji, zestawów umiejętności w usłudze Azure AI Search, tworzenia zestawu umiejętności, pól danych wyjściowych wzbogacania mapy i włączania buforowania na potrzeby wzbogacania sztucznej inteligencji.

Przygotowywanie danych zewnętrznych

Indeksatory współpracują z zestawami danych. Po uruchomieniu indeksatora łączy się ze źródłem danych, pobiera dane z kontenera lub folderu, opcjonalnie serializuje je w formacie JSON przed przekazaniem go do aparatu wyszukiwania na potrzeby indeksowania. W tej sekcji opisano wymagania dotyczące danych przychodzących na potrzeby indeksowania opartego na tekście.

Dane źródłowe Zadania
Dokumenty JSON Upewnij się, że struktura lub kształt danych przychodzących odpowiada schematowi indeksu wyszukiwania. Większość indeksów wyszukiwania jest dość płaska, gdzie kolekcja pól składa się z pól na tym samym poziomie. Jednak struktury hierarchiczne lub zagnieżdżone są możliwe za pomocą złożonych pól i kolekcji.
Relacyjne Podaj go jako spłaszczonego zestawu wierszy, w którym każdy wiersz staje się pełnym lub częściowym dokumentem wyszukiwania w indeksie.

Aby spłaszczać dane relacyjne do zestawu wierszy, należy utworzyć widok SQL lub utworzyć zapytanie zwracające rekordy nadrzędne i podrzędne w tym samym wierszu. Na przykład wbudowany przykładowy zestaw danych hoteli to baza danych SQL, która zawiera 50 rekordów (po jednym dla każdego hotelu) połączonych z rekordami pomieszczeń w powiązanej tabeli. Zapytanie, które spłaszcza dane zbiorcze w zestawie wierszy, osadza wszystkie informacje o pokoju w dokumentach JSON w każdym rekordzie hotelu. Informacje o osadzonym pomieszczeniu są generowane przez zapytanie, które używa klauzuli AUTO FOR JSON.

Aby dowiedzieć się więcej na temat tej techniki, możesz zdefiniować zapytanie zwracające osadzony kod JSON. Jest to tylko jeden przykład; można znaleźć inne podejścia, które generują ten sam wynik.
Pliki Indeksator zazwyczaj tworzy jeden dokument wyszukiwania dla każdego pliku, w którym dokument wyszukiwania składa się z pól zawartości i metadanych. W zależności od typu pliku indeksator może czasami analizować jeden plik w wielu dokumentach wyszukiwania. Na przykład w pliku CSV każdy wiersz może stać się autonomicznym dokumentem wyszukiwania.

Pamiętaj, że wystarczy ściągnąć dane z możliwością wyszukiwania i filtrowania:

  • Dane z możliwością wyszukiwania to tekst.
  • Dane z możliwością filtrowania są alfanumeryczne.

Usługa Azure AI Search nie może przeszukiwać danych binarnych w dowolnym formacie, chociaż może wyodrębnić i wywnioskować opisy tekstu plików obrazów (zobacz wzbogacanie sztucznej inteligencji) w celu utworzenia zawartości z możliwością wyszukiwania. Podobnie duży tekst można podzielić i przeanalizować według modeli języka naturalnego, aby znaleźć strukturę lub istotne informacje, generując nową zawartość, którą można dodać do dokumentu wyszukiwania.

Ze względu na to, że indeksatory nie naprawiają problemów z danymi, mogą być potrzebne inne formy czyszczenia danych lub manipulowania nimi. Aby uzyskać więcej informacji, zapoznaj się z dokumentacją produktu usługi Azure Database.

Przygotowywanie źródła danych

Indeksatory wymagają źródła danych określającego typ, kontener i połączenie.

  1. Upewnij się, że używasz obsługiwanego typu źródła danych.

  2. Utwórz definicję źródła danych. Poniższa lista to kilka najczęściej używanych źródeł danych:

  3. Jeśli źródłem danych jest baza danych, taka jak Azure SQL lub Cosmos DB, włącz śledzenie zmian. Usługa Azure Storage ma wbudowane śledzenie zmian we LastModified wszystkich obiektach blob, plikach i tabelach. Powyższe linki dla różnych źródeł danych wyjaśniają, które metody śledzenia zmian są obsługiwane przez indeksatory.

Przygotowywanie indeksu

Indeksatory wymagają również indeksu wyszukiwania. Pamiętaj, że indeksatory przekazują dane do aparatu wyszukiwania na potrzeby indeksowania. Podobnie jak indeksatory mają właściwości, które określają zachowanie wykonywania, schemat indeksu ma właściwości, które głęboko wpływają na sposób indeksowania ciągów (tylko ciągi są analizowane i tokenizowane).

  1. Rozpocznij od utworzenia indeksu wyszukiwania.

  2. Skonfiguruj atrybuty kolekcji pól i pól.

    Pola są jedynymi receptorami zawartości zewnętrznej. W zależności od tego, jak pola są przypisywane w schemacie, wartości dla każdego pola są analizowane, tokenizowane lub przechowywane jako ciągi dosłowne dla filtrów, wyszukiwania rozmytego i zapytań typowych.

    Indeksatory mogą automatycznie mapować pola źródłowe na pola indeksu docelowego, gdy nazwy i typy są równoważne. Jeśli nie można zamapować pola niejawnie, pamiętaj, że można zdefiniować jawne mapowanie pól, które informuje indeksator o sposobie kierowania zawartości.

  3. Przejrzyj przypisania analizatora w każdym polu. Analizatory mogą przekształcać ciągi. W związku z tym indeksowane ciągi mogą różnić się od przekazanych elementów. Możesz ocenić efekty analizatorów przy użyciu funkcji Analizuj tekst (REST). Aby uzyskać więcej informacji na temat analizatorów, zobacz Analizatory do przetwarzania tekstu.

Podczas indeksowania indeksator sprawdza tylko nazwy pól i typy. Nie ma kroku sprawdzania poprawności, który gwarantuje, że zawartość przychodząca jest poprawna dla odpowiedniego pola wyszukiwania w indeksie.

Tworzenie indeksatora

Gdy wszystko będzie gotowe do utworzenia indeksatora w usłudze wyszukiwania zdalnego, potrzebny jest klient wyszukiwania. Klientem wyszukiwania może być witryna Azure Portal, klient REST lub kod, który tworzy wystąpienie klienta indeksatora. Zalecamy korzystanie z witryny Azure Portal lub interfejsów API REST na potrzeby wczesnego programowania i testowania koncepcji.

  1. Zaloguj się w witrynie Azure Portal.

  2. Na stronie Przegląd usługi wyszukiwania wybierz jedną z dwóch opcji:

    • Kreator importu danych. Kreator jest unikatowy, ponieważ tworzy wszystkie wymagane elementy. Inne podejścia wymagają wstępnie zdefiniowanego źródła danych i indeksu.

    • Nowy indeksator — edytor wizualizacji do określania definicji indeksatora.

    Poniższy zrzut ekranu przedstawia, gdzie można znaleźć te funkcje w portalu.

    indeksator hoteli

Uruchamianie indeksatora

Domyślnie indeksator jest uruchamiany natychmiast po utworzeniu go w usłudze wyszukiwania. To zachowanie można zastąpić, ustawiając "disabled" wartość true w definicji indeksatora. Wykonywanie indeksatora to moment prawdy, w którym można dowiedzieć się, czy występują problemy z połączeniami, mapowaniami pól lub budową zestawu umiejętności.

Istnieje kilka sposobów uruchamiania indeksatora:

  • Uruchom polecenie podczas tworzenia indeksatora lub aktualizacji (ustawienie domyślne).

  • Uruchom polecenie na żądanie, gdy nie ma żadnych zmian w definicji lub poprzedzaj resetowanie w celu pełnego indeksowania. Aby uzyskać więcej informacji, zobacz Uruchamianie lub resetowanie indeksatorów.

  • Zaplanuj przetwarzanie indeksatora w celu wywołania wykonywania w regularnych odstępach czasu.

Zaplanowane wykonywanie jest zwykle implementowane w przypadku potrzeby indeksowania przyrostowego, dzięki czemu można pobrać najnowsze zmiany. W związku z tym planowanie ma zależność od wykrywania zmian.

Indeksatory są jednym z niewielu podsystemów, które tworzą overt wychodzące wywołania do innych zasobów platformy Azure. Jeśli chodzi o role platformy Azure, indeksatory nie mają oddzielnych tożsamości: połączenie z wyszukiwarki do innego zasobu platformy Azure jest wykonywane przy użyciu tożsamości zarządzanej przypisanej przez użytkownika systemu lub użytkownika usługi wyszukiwania. Jeśli indeksator łączy się z zasobem platformy Azure w sieci wirtualnej, należy utworzyć udostępniony link prywatny dla tego połączenia. Aby uzyskać więcej informacji na temat bezpiecznych połączeń, zobacz Zabezpieczenia w usłudze Azure AI Search.

Sprawdzanie wyników

Monitoruj stan indeksatora, aby sprawdzić stan . Pomyślne wykonanie nadal może zawierać ostrzeżenia i powiadomienia. Pamiętaj, aby sprawdzić powiadomienia o stanie powodzenia i niepowodzenia, aby uzyskać szczegółowe informacje o zadaniu.

W przypadku weryfikacji zawartości uruchom zapytania dotyczące wypełnionego indeksu, które zwracają całe dokumenty lub wybrane pola.

Wykrywanie zmian i stan wewnętrzny

Jeśli źródło danych obsługuje wykrywanie zmian, indeksator może wykrywać podstawowe zmiany w danych i przetwarzać tylko nowe lub zaktualizowane dokumenty na każdym uruchomieniu indeksatora, pozostawiając niezmienioną zawartość zgodnie z rzeczywistym działaniem. Jeśli historia wykonywania indeksatora wskazuje, że przebieg zakończył się pomyślnie z przetworzonymi dokumentami 0/0 , oznacza to, że indeksator nie znalazł żadnych nowych ani zmienionych wierszy ani obiektów blob w bazowym źródle danych.

Logika wykrywania zmian jest wbudowana w platformy danych. Sposób obsługi wykrywania zmian przez indeksator różni się w zależności od źródła danych:

Indeksatory śledzą ostatni dokument przetwarzany ze źródła danych za pomocą wewnętrznego górnego znaku wodnego. Znacznik nigdy nie jest uwidoczniony w interfejsie API, ale wewnętrznie indeksator śledzi, gdzie został zatrzymany. W przypadku wznowienia indeksowania przez zaplanowany przebieg lub wywołanie na żądanie indeksator odwołuje się do górnego limitu wody, aby mógł odebrać miejsce, w którym została przerwana.

Jeśli musisz wyczyścić wysoki znacznik wody, aby ponownie indeksować w całości, możesz użyć funkcji Resetuj indeksator. Aby uzyskać bardziej selektywne ponowne indeksowanie, użyj polecenia Resetuj umiejętności lub Resetuj dokumenty. Za pomocą interfejsów API resetowania można wyczyścić stan wewnętrzny, a także opróżnić pamięć podręczną, jeśli włączono wzbogacanie przyrostowe. Aby uzyskać więcej informacji i porównanie każdej opcji resetowania, zobacz Uruchamianie lub resetowanie indeksatorów, umiejętności i dokumentów.

Następne kroki