Tworzenie indeksatora 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.
Indeksator umożliwia automatyzowanie importowania i indeksowania 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 zawartości nieprzetworzonej (zwykły tekst lub wektory): wyodrębnianie ciągów i metadanych z zawartości tekstowej dla scenariuszy wyszukiwania pełnotekstowego. Wyodrębnia nieprzetworzona zawartość wektorów do wyszukiwania wektorów (na przykład wektorów w bazie danych Azure SQL Database lub kolekcji usługi Azure Cosmos DB). W tym przepływie pracy indeksowanie odbywa się tylko w przypadku istniejącej zawartości, którą podajesz.
Indeksowanie oparte na umiejętnościach: rozszerza indeksowanie za pomocą wbudowanych lub niestandardowych umiejętności, które tworzą lub generują nową zawartość z możliwością wyszukiwania. Można na przykład dodać zintegrowane uczenie maszynowe do analizy obrazów i tekstu bez struktury, wyodrębnianie lub wnioskowanie tekstu i struktury. Możesz też wykorzystać umiejętności, aby fragmentować i wektoryzować zawartość z tekstu i obrazów. Indeksowanie oparte na umiejętnościach tworzy lub generuje nową zawartość, która nie istnieje w zewnętrznym źródle danych. Nowa zawartość staje się częścią indeksu podczas dodawania pól do schematu indeksu, który akceptuje dane przychodzące. Aby dowiedzieć się więcej, zobacz Wzbogacanie sztucznej inteligencji w usłudze Azure AI Search.
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 minut, jeśli istnieje zestaw umiejętności.
Wzorce indeksatora
Podczas tworzenia indeksatora definicja jest jednym z dwóch wzorców: indeksowania opartego na zawartości lub indeksowania opartego na umiejętnościach. 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 zawartości
Indeksowanie oparte na zawartości na potrzeby wyszukiwania pełnotekstowego lub wektorowego jest podstawowym przypadkiem użycia indeksatorów. W tym przepływie 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, na przykład:
"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
Indeksowanie oparte na umiejętnościach używa wzbogacania sztucznej inteligencji do przetwarzania zawartości, która nie jest przeszukiwalna w postaci pierwotnej. 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
, , outputFieldMappings
cache
.
{
"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, mapowania wzbogaconych pól danych wyjściowych 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 | Dokumenty JSON mogą zawierać tekst, liczby i wektory. 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 dane jako spłaszczonego zestawu wierszy, w którym każdy wiersz staje się dokumentem pełnego lub częściowego 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 lub wektory
- Dane z możliwością filtrowania to tekst i liczby (pola niewektorowe)
Usługa Azure AI Search nie może przeszukiwać pełnotekstowych 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. Może również wykonywać wyszukiwanie wektorowe za pośrednictwem osadzania, w tym kwantyzowane osadzanie w formacie binarnym.
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.
Upewnij się, że używasz obsługiwanego typu źródła danych.
Utwórz definicję źródła danych. Poniżej przedstawiono kilka najczęściej używanych źródeł danych:
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. 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).
Rozpocznij od utworzenia indeksu wyszukiwania.
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.
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.
Zaloguj się do witryny Azure Portal, a następnie znajdź usługę wyszukiwania.
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.
Dodaj indeksator: edytor wizualizacji do określania definicji indeksatora.
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 aparatu wyszukiwania do innego zasobu platformy Azure jest wykonywane przy użyciu tożsamości zarządzanej przypisanej przez użytkownika lub systemu 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:
Usługa Azure Storage ma wbudowane wykrywanie zmian, co oznacza, że indeksator może automatycznie rozpoznawać nowe i zaktualizowane dokumenty. Magazyn obiektów blob, usługa Azure Table Storage i usługa Azure Data Lake Storage Gen2 sygnatura każdego obiektu blob lub aktualizacji wiersza z datą i godziną. Indeksator automatycznie używa tych informacji do określenia, które dokumenty mają być aktualizowane w indeksie. Aby uzyskać więcej informacji na temat wykrywania usuwania, zobacz Wykrywanie zmian i usuwania przy użyciu indeksatorów dla usługi Azure Storage.
Technologie bazy danych w chmurze udostępniają opcjonalne funkcje wykrywania zmian na ich platformach. W przypadku tych źródeł danych wykrywanie zmian nie jest automatyczne. Musisz określić w definicji źródła danych, która zasada jest używana:
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.