Projekcje indeksów w usłudze Azure AI Search

Ważne

Projekcje indeksów są w publicznej wersji zapoznawczej zgodnie z dodatkowymi warunkami użytkowania. Jest ona dostępna za pośrednictwem witryny Azure Portal, 2023-10-01-Preview interfejsów API REST, witryny Azure Portal i bibliotek klienckich beta, które zostały zaktualizowane w celu uwzględnienia tej funkcji.

Projekcje indeksów są składnikiem definicji zestawu umiejętności definiującego kształt indeksu pomocniczego, który obsługuje wzorzec indeksu jeden do wielu, w którym zawartość z potoku wzbogacania może kierować wiele indeksów.

Projekcje indeksów przyjmują zawartość wzbogaconą przez sztuczną inteligencję wygenerowaną przez potok wzbogacania i indeksując ją do indeksu pomocniczego (innego niż ta, która jest domyślnie przeznaczona dla indeksatora) w usłudze wyszukiwania. Projekcje indeksów umożliwiają również przekształcenie danych przed ich indeksowaniem w sposób, który unikatowo umożliwia oddzielenie tablicy wzbogaconych elementów do wielu dokumentów wyszukiwania w indeksie docelowym, nazywanych również indeksowaniem "jeden do wielu". Indeksowanie "jeden do wielu" jest przydatne w scenariuszach fragmentowania danych, w których indeks podstawowy może być indeksem podstawowym dla nieugunkowanej zawartości i indeksu pomocniczego dla fragmentowanych fragmentów.

Jeśli w przeszłości korzystasz z umiejętności poznawczych, wiesz już, że zestawy umiejętności tworzą wzbogaconą zawartość. Zestawy umiejętności przenoszą dokument przez sekwencję wzbogaceń, które wywołują przekształcenia niepodzielne, takie jak rozpoznawanie jednostek lub tłumaczenie tekstu. Domyślnie jeden dokument przetwarzany w zestawie umiejętności jest mapowany na pojedynczy dokument w indeksie wyszukiwania. Oznacza to, że jeśli wykonasz fragment tekstu wejściowego, a następnie wykonasz wzbogacanie każdego fragmentu, wynik indeksu, gdy jest mapowany za pośrednictwem outputFieldMappings, jest tablicą wygenerowanych wzbogaceń. Projekcje indeksów umożliwiają zdefiniowanie kontekstu, w którym każdy fragment wzbogaconych danych ma być mapowany na własny dokument wyszukiwania. Dzięki temu można zastosować mapowanie "jeden do wielu" wzbogaconych danych dokumentu do indeksu wyszukiwania.

Definicja projekcji indeksu

Projekcje indeksu są definiowane wewnątrz definicji zestawu umiejętności i są definiowane głównie jako tablica selektorów, gdzie każdy selektor odpowiada innego indeksu docelowego w usłudze wyszukiwania. Każdy selektor wymaga następujących parametrów w ramach jego definicji:

  • targetIndexName: nazwa indeksu w usłudze wyszukiwania, do którego indeksuje dane projekcji indeksu.
  • parentKeyFieldName: nazwa pola w indeksie docelowym, który zawiera wartość klucza dla dokumentu nadrzędnego.
  • sourceContext: adnotacja wzbogacania, która definiuje stopień szczegółowości mapowania danych na poszczególne dokumenty wyszukiwania. Aby uzyskać więcej informacji, zobacz Kontekst umiejętności i język adnotacji wejściowych.
  • mappings: tablica mapowań wzbogaconych danych na pola w indeksie wyszukiwania. Każde mapowanie składa się z następujących elementów:
    • name: nazwa pola w indeksie wyszukiwania, do którego powinny być indeksowane dane,
    • source: ścieżka adnotacji wzbogacania, z którą powinny zostać pobrane dane.

Każda z nich mapping może również rekursywnie definiować dane za pomocą opcjonalnego sourceContext pola i inputs , podobnie jak w przypadku magazynu wiedzy lub umiejętności kształtowania. Te parametry umożliwiają indeksowanie danych w polach typu Edm.ComplexType w indeksie wyszukiwania.

Indeks zdefiniowany w parametrze targetIndexName ma następujące wymagania:

  • Przed utworzeniem zestawu umiejętności zawierającego definicję projekcji indeksu należy już utworzyć w usłudze wyszukiwania.
  • Musi zawierać pole o nazwie zdefiniowanej w parametrze parentKeyFieldName . To pole musi mieć typ Edm.String, nie może być polem klucza i musi mieć filtrowalne ustawienie true.
  • Pole klucza musi mieć ustawioną wartość true i być zdefiniowane za pomocą analizatora keyword .
  • Musi zawierać pola zdefiniowane dla każdego ze zdefiniowanych namew mappingspliku , z których żaden nie może być polem klucza.

Oto przykładowy ładunek definicji projekcji indeksu, którego można użyć do projekcji poszczególnych stron wyjściowych według umiejętności Dzielenie jako własnych dokumentów w indeksie wyszukiwania.

"indexProjections": {
    "selectors": [
        {
            "targetIndexName": "myTargetIndex",
            "parentKeyFieldName": "ParentKey",
            "sourceContext": "/document/pages/*",
            "mappings": [
                {
                    "name": "chunk",
                    "source": "/document/pages/*"
                }
            ]
        }
    ]
}

Obsługa dokumentów nadrzędnych

Ponieważ projekcje indeksów skutecznie generują dokumenty podrzędne dla każdego dokumentu "nadrzędnego", który jest uruchamiany za pomocą zestawu umiejętności, możesz również wybrać następujące opcje dotyczące obsługi indeksowania dokumentów nadrzędnych.

  • Aby zachować dokumenty nadrzędne i podrzędne w oddzielnych indeksach, upewnij się, że targetIndexName definicja indeksatora różni się od zdefiniowanego targetIndexName w selektorze projekcji indeksu.

  • Aby indeksować dokumenty nadrzędne i podrzędne w tym samym indeksie, należy upewnić się, że schemat indeksu docelowego działa zarówno ze zdefiniowanymi fieldMappings , jak i outputFieldMappings w definicji indeksatora oraz mappings selektorem projekcji indeksu. Następnie wystarczy podać to samo targetIndexName dla definicji indeksatora i selektora projekcji indeksu.

  • Aby zignorować dokumenty nadrzędne i tylko dokumenty podrzędne indeksu, nadal musisz podać targetIndexName element w definicji indeksatora (możesz po prostu podać ten sam, który jest używany dla selektora projekcji indeksu). Następnie zdefiniuj oddzielny parameters obiekt obok selectors definicji z kluczem ustawionym projectionMode na skipIndexingParentDocuments, jak pokazano poniżej:

    "indexProjections": {
        "selectors": [
            ...
        ],
        "parameters": {
            "projectionMode": "skipIndexingParentDocuments"
        }
    }
    

Wersja 2023-10-01-Preview interfejsu API REST może służyć do tworzenia projekcji indeksów za pomocą dodatków do zestawu umiejętności.

Cykl życia zawartości

Jeśli źródło danych indeksatora obsługuje śledzenie zmian i wykrywanie usuwania, proces indeksowania może zsynchronizować indeksy podstawowe i pomocnicze w celu pobrania tych zmian.

Za każdym razem, gdy uruchamiasz indeksator i zestaw umiejętności, projekcje indeksu są aktualizowane, jeśli zestaw umiejętności lub bazowe dane źródłowe uległy zmianie. Wszelkie zmiany pobierane przez indeksator są propagowane przez proces wzbogacania do projekcji w indeksie, zapewniając, że przewidywane dane są bieżącą reprezentacją zawartości w źródle danych źródłowych.

Uwaga

Chociaż można ręcznie edytować dane w przewidywanych dokumentach przy użyciu interfejsu API wypychania indeksu, wszystkie edycje zostaną zastąpione przy następnym wywołaniu potoku, przy założeniu, że dokument w danych źródłowych zostanie zaktualizowany.

Prognozowana wartość klucza

Każdy dokument projekcji indeksu zawiera unikatowy klucz identyfikujący generowany przez indeksator w celu zapewnienia unikatowości i umożliwienia prawidłowego śledzenia zmian i usuwania. Ten klucz zawiera następujące segmenty:

  • Losowy skrót gwarantujący unikatowość. Ten skrót zmienia się, jeśli dokument nadrzędny jest aktualizowany między przebiegami indeksatora.
  • Klucz dokumentu nadrzędnego.
  • Ścieżka adnotacji wzbogacania, która identyfikuje kontekst wygenerowany przez ten dokument.

Na przykład w przypadku podzielenia dokumentu nadrzędnego z wartością klucza "123" na cztery strony, a następnie każda z tych stron jest projektowana jako własny dokument za pośrednictwem projekcji indeksu, klucz trzeciej strony tekstu będzie wyglądać podobnie jak "01f07abfe7ed_123_pages_2". Jeśli dokument nadrzędny zostanie zaktualizowany w celu dodania piątej strony, nowy klucz trzeciej strony może na przykład być "9d800bdacc0e_123_pages_2", ponieważ losowa wartość skrótu zmienia się między indeksatorem, mimo że pozostałe dane projekcji nie uległy zmianie.

Zmiany lub dodatki

Jeśli dokument nadrzędny zostanie zmieniony tak, aby dane w projekcie dokumentu indeksu uległy zmianie (przykładem może być zmiana wyrazu na określonej stronie, ale nie dodano żadnych nowych stron sieciowych), dane w indeksie docelowym dla tej konkretnej projekcji zostaną zaktualizowane w celu odzwierciedlenia tej zmiany.

Jeśli dokument nadrzędny zostanie zmieniony w taki sposób, że do dokumentu zostaną dodane nowe przewidywane dokumenty podrzędne, których wcześniej nie było (przykładem może być dodanie co najmniej jednej strony wartej tekstu do dokumentu), te nowe dokumenty podrzędne zostaną dodane przy następnym uruchomieniu indeksatora.

W obu tych przypadkach wszystkie przewidywane dokumenty są aktualizowane, aby mieć nową wartość skrótu w kluczu, niezależnie od tego, czy dana zawartość została zaktualizowana.

usunięcia

Jeśli dokument nadrzędny zostanie zmieniony tak, że dokument podrzędny wygenerowany przez projekcje indeksu nie istnieje (przykładem może być skrócenie tekstu, więc istnieje mniej fragmentów niż wcześniej), odpowiedni dokument podrzędny w indeksie wyszukiwania zostanie usunięty. Pozostałe dokumenty podrzędne również otrzymują aktualizację klucza w celu uwzględnienia nowej wartości skrótu, nawet jeśli ich zawartość nie zmieniła się w inny sposób.

Jeśli dokument nadrzędny zostanie całkowicie usunięty ze źródła danych, odpowiednie dokumenty podrzędne zostaną usunięte tylko wtedy, gdy usunięcie zostanie wykryte przez definicję dataDeletionDetectionPolicy źródła danych. Jeśli nie masz skonfigurowanego dokumentu nadrzędnego dataDeletionDetectionPolicy i musisz usunąć go ze źródła danych, należy ręcznie usunąć dokumenty podrzędne, jeśli nie są już potrzebne.