Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Uwaga
Wyszukiwanie AI platformy Azure jest dostępna za pośrednictwem portalu Azure, interfejsów API REST i Azure SDKs. Stanowi również podstawę Foundry IQ, zarządzanej warstwy wiedzy, która przekształca treści przedsiębiorstwa w bazy wiedzy wielokrotnego użytku z uwzględnieniem uprawnień dla agentów w portalu Microsoft Foundry.
Jeśli fragmentujesz zawartość dla wzorca RAG lub wektoryzacji, możesz określić projekcję indeksu, aby kontrolować indeksowanie jeden do wielu, gdzie zawartość źródłowa (jedna) jest przewidywana do jednego lub więcej indeksów (wiele). Intencją projekcji indeksu jest kontrolowanie, czy elementy dokumentu nadrzędnego, takie jak nazwa pliku lub data utworzenia:
- Powtórz dla każdego dziecka (fragmentu) w obrębie pojedynczego indeksu
- Są indeksowane jako autonomiczne dokumenty wyszukiwania w tym samym indeksie
- Lub są pozyskiwane do oddzielnych indeksów
Zalecamy powtarzanie pól nadrzędnych w jednym indeksie, ponieważ różne kształty dokumentu lub dzielenie zawartości na dwa indeksy mogą być trudne do wykonywania zapytań, szczególnie w przypadku wyszukiwania klasycznego, w którym sprzężenia indeksu nie są obsługiwane.
W Wyszukiwanie AI platformy Azure fragmentacja jest realizowana za pomocą umiejętności i w związku z tym zależy od indeksatorów. Aby zdefiniować projekcję indeksu, określ ją w zestawie umiejętności.
Wymagania wstępne
Wyszukiwanie AI platformy Azure, dowolną warstwę lub region.
Obsługiwane źródło danych zawierające zawartość, którą chcesz fragmentować.
Indeks (jeden lub wiele), który przyjmuje dane wyjściowe potoku indeksatora.
Umiejętność, która fragmentuje zawartość, taką jak umiejętność dzielenia tekstu.
Zestaw umiejętności zawiera projekcję indeksatora, która kształtuje dane dla indeksowania jeden do wielu. Zestaw umiejętności może również mieć inne umiejętności, takie jak umiejętność osadzania, taka jak AzureOpenAIEmbedding , jeśli twój scenariusz obejmuje wektoryzację zintegrowaną.
Wybieranie podejścia
Projekcje indeksu generują dokumenty podrzędne (fragmenty) dla każdego dokumentu nadrzędnego. Wybierz sposób obsługi zawartości nadrzędnej:
| Podejście | Opis | Konfiguracja |
|---|---|---|
| Pojedynczy indeks, powtarzające się pola nadrzędne (zalecane) | Pola nadrzędne są powtarzane dla każdego fragmentu. Wszystkie dokumenty mają jednolity kształt. | Ustaw zarówno indeksator targetIndexName, jak i projekcję indeksu targetIndexName do tego samego indeksu. Ustaw projectionMode na skipIndexingParentDocuments. |
| Pojedynczy indeks, mieszane kształty dokumentów | Dokumenty nadrzędne i fragmenty dokumentów współistnieją. Dokumenty nadrzędne mają pola fragmentów o wartości null. | Ustaw obie targetIndexName wartości na ten sam indeks. Ustaw projectionMode na includeIndexingParentDocuments (lub pomiń, ponieważ jest to domyślna). |
| Co najmniej dwa oddzielne indeksy | Indeks nadrzędny do przeszukiwania metadanych, indeks podrzędny do wyszukiwania. Brak łączenia podczas zapytania. | Ustaw indeksator targetIndexName na indeks nadrzędny. Skonfiguruj projekcję indeksu targetIndexName na indeks podrzędny. Tablica selectors określa ilość i skład indeksu podrzędnego. |
W przypadku większości scenariuszy RAG należy użyć pierwszego podejścia. Zobacz przykład klasycznego RAG.
Kroki implementacji zalecanego podejścia
- Utwórz indeks przeznaczony dla fragmentów z dołączonymi polami nadrzędnymi.
-
Utwórz zestaw umiejętności z umiejętnością fragmentowania i
indexProjections. - Utwórz indeksator wskazujący obsługiwane źródło danych.
Jeśli źródło danych obsługuje śledzenie zmian, indeksator automatycznie synchronizuje zmiany.
Tworzenie indeksu dla indeksowania jeden do wielu
Niezależnie od tego, czy tworzysz jeden indeks dla fragmentów, które powtarzają wartości pól nadrzędnych, czy oddzielne indeksy umiejscowienia pól nadrzędnych i podrzędnych, indeks podstawowy używany do wyszukiwania jest opracowany z myślą o fragmentach danych. Schemat indeksu musi zawierać następujące pola:
Pole klucza dokumentu unikatowo identyfikujące każdy dokument. Należy go zdefiniować jako typ
Edm.Stringz analizatoremkeyword.Pole kojarzące każdy fragment z elementem nadrzędnym. Musi być typu
Edm.String. Nie może to być pole klucza dokumentu i musi miećfilterableustawioną wartość true. Jest on określany jako parent_id w przykładach i jako projekcyjny klucz wartości w tym artykule.Inne pola zawartości, takie jak pola tekstowe lub wektoryzowane fragmenty.
Indeks musi istnieć w usłudze wyszukiwania przed utworzeniem zestawu umiejętności lub uruchomieniem indeksatora. Zdefiniowane selectors w zestawie umiejętności powinny zawierać te pola.
Schemat pojedynczego indeksu obejmujący pola nadrzędne i podrzędne
Pojedynczy indeks, oparty na fragmentach, gdzie zawartość nadrzędna powtarza się dla każdego fragmentu, jest przeważającym wzorcem dla scenariuszy wyszukiwania RAG i wektora. Możliwość skojarzenia właściwej zawartości nadrzędnej z każdym fragmentem można osiągnąć dzięki projekcjom indeksu.
Poniższy schemat jest przykładem spełniającym wymagania projekcji indeksu. W tym przykładzie:
- Polami nadrzędnymi są parent_id i tytuł i powtarzają się dla każdego fragmentu.
- Pola podrzędne są fragmentami wektorów i wektorów niewektorowych. Chunk_id jest identyfikatorem dokumentu tego indeksu.
Możesz użyć portalu Azure, interfejsów API REST lub Azure SDK, aby utworzyć indeks.
Użyj klienta REST lub narzędzia w portalu Azure, aby w wykonać akcję Dodaj indeks i użyć opcji JSON do utworzenia indeksu.
{
"name": "my_consolidated_index",
"fields": [
{"name": "chunk_id", "type": "Edm.String", "key": true, "filterable": true, "analyzer": "keyword"},
{"name": "parent_id", "type": "Edm.String", "filterable": true},
{"name": "title", "type": "Edm.String", "searchable": true, "filterable": true, "sortable": true, "retrievable": true},
{"name": "chunk", "type": "Edm.String","searchable": true,"retrievable": true},
{"name": "chunk_vector", "type": "Collection(Edm.Single)", "searchable": true, "retrievable": false, "stored": false, "dimensions": 1536, "vectorSearchProfile": "hnsw"}
],
"vectorSearch": {
"algorithms": [{"name": "hnsw", "kind": "hnsw", "hnswParameters": {}}],
"profiles": [{"name": "hnsw", "algorithm": "hnsw"}]
}
}
Dodawanie projekcji indeksu do zestawu umiejętności
Projekcje indeksów są definiowane w ramach definicji zestawu umiejętności i są głównie zdefiniowane jako tablica selectors, gdzie każdy selektor odpowiada innemu indeksowi docelowemu w usłudze wyszukiwania. Ta sekcja rozpoczyna się od składni i przykładów kontekstu, a następnie odwołania do parametrów.
Projekcje indeksów są ogólnie dostępne. Zalecamy najnowszy stabilny interfejs API:
Oto przykładowy obiekt danych definiujący rzutowanie indeksu, którego można użyć do rzutowania poszczególnych stron wyjściowych przez umiejętność Dzielenia tekstu jako własnych dokumentów w indeksie wyszukiwania.
Jeśli dokument nadrzędny zawiera metadane uprawnień dostępu na poziomie dokumentu, takie jak metadata_user_ids, metadata_group_idslub metadata_spo_site_url, zawierają te pola w elemecie mappings. Każdy fragment musi dziedziczyć te uprawnienia, aby filtry uprawnień mogły zostać zastosowane w czasie wykonywania zapytania. Aby uzyskać więcej informacji, zobacz Wybieranie miejsca wypełniania pól listy ACL (wersja zapoznawcza).
"indexProjections": {
"selectors": [
{
"targetIndexName": "my_consolidated_index",
"parentKeyFieldName": "parent_id",
"sourceContext": "/document/pages/*",
"mappings": [
{
"name": "chunk",
"source": "/document/pages/*",
"sourceContext": null,
"inputs": []
},
{
"name": "chunk_vector",
"source": "/document/pages/*/chunk_vector",
"sourceContext": null,
"inputs": []
},
{
"name": "title",
"source": "/document/title",
"sourceContext": null,
"inputs": []
}
]
}
],
"parameters": {
"projectionMode": "skipIndexingParentDocuments"
}
}
Referencja parametrów
| Parametry projekcji indeksu | Definicji |
|---|---|
selectors |
Tablica z parametrami głównego korpusu wyszukiwania, zwykle indeks zaprojektowany wokół fragmentów. Zawartość można wysyłać do wielu indeksów podrzędnych, określając wiele selektorów. Schematy indeksów muszą istnieć w usłudze wyszukiwania przed uruchomieniem indeksatora. |
parameters |
Słownik parametrów konfiguracyjnych specyficznych dla projekcji indeksu. |
Parametry mają następujące elementy w ramach ich definicji.
| Parametry | Definicji |
|---|---|
parameters.projectionMode |
Opcjonalny parametr zawierający instrukcje dla indeksatora. Prawidłowe wartości to includeIndexingParentDocuments i skipIndexingParentDocuments. Najlepszą wartością tego parametru jest skipIndexingParentDocuments. Należy go używać, gdy fragmentowane dokumenty są podstawowym elementem docelowym wyszukiwania. Jeśli nie ustawisz skipIndexingParentDocuments dla projectionMode, includeIndexingParentDocuments zostanie przyznane automatycznie, ponieważ jest to ustawienie domyślne. Dodaje dodatkowe dokumenty wyszukiwania w indeksie, które mają wartość null dla części, ale są wypełnione zawartością właściwą dla elementu nadrzędnego. Jeśli na przykład pięć plików PDF współtworzy 100 fragmentów indeksu, liczba dokumentów w indeksie wynosi 105. Pięć dokumentów utworzonych dla pól nadrzędnych ma wartości null dla pól fragmentów (podrzędnych), co sprawia, że znacznie różnią się one od większości dokumentów w indeksie. Z tego powodu zalecamy projectionMode ustawienie na skipIndexingParentDocuments. |
Selektory mają następujące elementy w ramach ich definicji.
| Selektory | Definicji |
|---|---|
selectors.targetIndexName |
Nazwa indeksu, do którego są mapowane dane indeksu. Jest to pojedynczy indeks fragmentowany z powtarzającymi się polami nadrzędnymi lub indeks podrzędny, jeśli używasz oddzielnych indeksów dla zawartości nadrzędnej-podrzędnej. |
selectors.parentKeyFieldName |
Nazwa pola zawierającego klucz dokumentu nadrzędnego. |
selectors.sourceContext |
Adnotacja wzbogacająca, która określa poziom szczegółowości mapowania danych do indywidualnych dokumentów wyszukiwawczych. Aby uzyskać więcej informacji, zobacz Kontekst umiejętności i język adnotacji wejściowych. |
selectors.mappings |
Tablica odwzorowań danych wzbogaconych do pól 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órej powinny zostać pobrane dane. Każdy mapping może również rekursywnie definiować dane za pomocą opcjonalnego pola sourceContext i inputs, podobnie jak w przypadku magazynu wiedzy lub umiejętności Shaper. W zależności od aplikacji te parametry umożliwiają kształtowanie danych na pola typu Edm.ComplexType w indeksie wyszukiwania. Niektóre LLM nie akceptują złożonego typu w wynikach wyszukiwania, więc używana LLM określa, czy mapowanie typu złożonego jest przydatne, czy nie. |
Parametr mappings jest ważny. Należy jawnie mapować każde pole w indeksie podrzędnym, z wyjątkiem pól identyfikatora, takich jak klucz dokumentu i identyfikator nadrzędny.
To wymaganie jest w przeciwieństwie do innych konwencji mapowania pól w Wyszukiwanie AI platformy Azure. W przypadku niektórych typów źródeł danych indeksator może niejawnie mapować pola na podstawie podobnych nazw lub znanych cech (na przykład indeksatory obiektów blob używają unikatowej ścieżki magazynu metadanych jako domyślnego klucza dokumentu). Jednak w przypadku projekcji indeksatora po stronie "wiele" relacji należy wyraźnie określić każde mapowanie pól.
Ważne
Nie twórz odwzorowania pól dla pola klucza nadrzędnego. W ten sposób zakłóca śledzenie zmian i synchronizowane odświeżanie danych.
Przeglądanie mapowań pól
Indeksatory są powiązane z trzema różnymi typami mapowań pól. Przed uruchomieniem indeksatora sprawdź mapowania pól i dowiedz się, kiedy należy używać każdego typu.
Mapowania pól są definiowane w indeksatorze i używane do mapowania pola źródłowego na pole indeksu. Mapowania pól są używane do ścieżek danych, które przenoszą dane ze źródła i przekazują je do indeksowania bez pośredniego etapu przetwarzania danych. Zazwyczaj indeksator może automatycznie mapować pola o tej samej nazwie i typie. Jawne mapowania pól są wymagane tylko wtedy, gdy występują rozbieżności. W indeksowaniu "jeden do wielu" i omówionych do tej pory wzorcach może nie być konieczne mapowanie pól.
Selectors.mappings są definiowane w zestawie funkcji i przypisywane do pól w indeksie podrzędnym. W przypadkach, gdy indeks podrzędny zawiera również pola nadrzędne (podobnie jak w rozwiązaniu skonsolidowanego indeksu), należy skonfigurować mapowania pól dla każdego pola zawierającego zawartość, w tym pola tytułu na poziomie nadrzędnym, przy założeniu, że tytuł ma być wyświetlany w każdym fragmentowanym dokumencie. Jeśli używasz oddzielnych indeksów nadrzędnych i podrzędnych, selektor powinien mieć mapowania pól tylko dla pól na poziomie podrzędnym.
Uwaga
Mapowania pól wyjściowych i mapowania selektorów akceptują wzbogacone węzły drzewa dokumentów jako dane wejściowe. Znajomość sposobu określania ścieżki do każdego węzła jest niezbędna do skonfigurowania ścieżki danych. Aby dowiedzieć się więcej na temat składni ścieżki, zapoznaj się z Odwołanie do ścieżki do wzbogaconych węzłów oraz definiowaniem zestawu umiejętności w kontekście przykładów.
Uruchamianie indeksatora
Po utworzeniu źródła danych, indeksów i zestawu umiejętności możesz utworzyć i uruchomić indeksator. Ten krok uruchamia pipeline do wykonania.
Możesz wykonać zapytanie względem indeksu wyszukiwania po zakończeniu przetwarzania w celu przetestowania rozwiązania.
Cykl życia zawartości
W zależności od bazowego źródła danych indeksator zwykle zapewnia ciągłe śledzenie zmian i wykrywanie usuwania. W tej sekcji wyjaśniono cykl życia treści dla indeksowania jeden-do-wielu w kontekście odświeżania danych.
W przypadku źródeł danych, które zapewniają śledzenie zmian i wykrywanie usuwania, proces indeksatora może pobierać zmiany w danych źródłowych. 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. Działanie odświeżania danych jest rejestrowane w prognozowanej wartości klucza dla każdego fragmentu. Ta wartość jest aktualizowana po zmianie danych bazowych.
Uwaga
Chociaż można ręcznie edytować dane w projektowanych dokumentach przy użyciu interfejsu API wypychania indeksu, należy tego unikać. Ręczne aktualizacje indeksu są zastępowane podczas następnego wywołania potoku, o ile dokument w danych źródłowych został zaktualizowany, a źródło danych ma włączone śledzenie zmian lub wykrywanie usuwania.
Zaktualizowana zawartość
Jeśli dodasz nową zawartość do źródła danych, nowe fragmenty lub dokumenty podrzędne zostaną dodane do indeksu podczas następnego uruchomienia indeksatora.
Jeśli zmodyfikujesz istniejącą zawartość w źródle danych, fragmenty są aktualizowane przyrostowo w indeksie wyszukiwania, jeśli używane źródło danych obsługuje wykrywanie śledzenia zmian i usuwania. Jeśli na przykład wyraz lub zdanie zmieni się w dokumencie, fragment w indeksie docelowym zawierającym ten wyraz lub zdanie zostanie zaktualizowany podczas następnego uruchomienia indeksatora. Inne typy aktualizacji, takie jak zmiana typu pola i niektóre przypisania, nie są obsługiwane dla istniejących pól. Aby uzyskać więcej informacji na temat dozwolonych aktualizacji, zobacz Aktualizowanie schematu indeksu.
Niektóre źródła danych, takie jak Azure Storage obsługują domyślnie śledzenie zmian i usuwania na podstawie znacznika czasu. Inne źródła danych, takie jak Microsoft OneLake, Azure SQL lub Azure Cosmos DB muszą być skonfigurowane do śledzenia zmian.
Usunięta zawartość
Jeśli zawartość źródłowa już nie istnieje (na przykład jeśli tekst zostanie skrócony, aby mieć mniej fragmentów), 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.
Prognozowana wartość klucza
Aby zapewnić integralność danych dla zaktualizowanej i usuniętej zawartości, odświeżanie danych w indeksowaniu "jeden do wielu" opiera się na przewidywanej wartości klucza po stronie "wiele". Jeśli używasz zintegrowanej wektoryzacji lub kreatora importu danych, prognozowana wartość klucza jest parent_id polem po stronie fragmentowanej lub "wiele" indeksu.
Przewidywana wartość klucza jest unikatowym identyfikatorem generowanym przez indeksator dla każdego dokumentu. Zapewnia unikatowość i umożliwia prawidłowe działanie ś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 w kolejnych uruchomieniach indeksatora.
- Klucz dokumentu nadrzędnego.
- Ścieżka adnotacji wzbogacania identyfikująca kontekst wygenerowanego dokumentu.
Jeśli na przykład podzielisz dokument nadrzędny z wartością klucza "aa1b22c33" na cztery strony, a następnie każda z tych stron będzie projektowana jako osobny dokument za pomocą projekcji indeksowych:
- aa1b22c33
- aa1b22c33_pages_0
- aa1b22c33_pages_1
- aa1b22c33_pages_2
Jeśli dokument nadrzędny jest aktualizowany w danych źródłowych, na przykład w wyniku większej liczby fragmentowanych stron, losowy skrót zmienia się, dodawane są kolejne strony, a zawartość każdego fragmentu jest aktualizowana tak, aby pasowała do tego, co znajduje się w dokumencie źródłowym.
Przykład oddzielnych indeksów nadrzędnych i podrzędnych
W tej sekcji przedstawiono przykład oddzielnych indeksów nadrzędnych i podrzędnych. Jest to nietypowy wzorzec, ale możliwe, że mogą istnieć wymagania aplikacji, które najlepiej spełniają przy użyciu tego podejścia. W tym scenariuszu projektujesz zawartość relacyjną między rodzicem a dzieckiem na dwa oddzielne indeksy.
Utwórz dwa schematy indeksu.
Każdy schemat zawiera pola dla swojego poziomu szczegółowości, z polem identyfikatora nadrzędnego wspólnym dla obu indeksów do użycia w zapycie wyszukiwania. Podstawowym korpusem wyszukiwania jest indeks podrzędny, jednak można wydać zapytanie wyszukiwawcze, aby pobrać pola nadrzędne dla każdego dopasowania w rezultacie. Wyszukiwanie AI platformy Azure nie obsługuje sprzężeń w czasie wykonywania zapytań, więc kod aplikacji lub warstwa aranżacji musi scalić lub sortować wyniki, które mogą być przekazywane do aplikacji lub procesu.
Indeks nadrzędny ma pole parent_id i tytuł. Parent_id jest kluczem dokumentu. Nie potrzebujesz konfiguracji wyszukiwania wektorowego, chyba że chcesz wektorować pola na poziomie dokumentu nadrzędnego.
{ "name": "my-parent-index", "fields": [ {"name": "parent_id", "type": "Edm.String", "key":true, "filterable": true}, {"name": "title", "type": "Edm.String", "searchable": true, "filterable": true, "sortable": true, "retrievable": true} ] }Indeks podrzędny zawiera pola fragmentowane oraz pole parent_id. Jeśli używasz zintegrowanej wektoryzacji, profilów scoringu, rankera semantycznego lub analizatorów, powinieneś ustawić je w indeksie podrzędnym.
{ "name": "my-child-index", "fields": [ {"name": "chunk_id", "type": "Edm.String", "key": true, "filterable": true, "analyzer": "keyword"}, {"name": "parent_id", "type": "Edm.String", "filterable": true}, {"name": "chunk", "type": "Edm.String","searchable": true,"retrievable": true}, {"name": "chunk_vector", "type": "Collection(Edm.Single)", "searchable": true, "retrievable": false, "stored": false, "dimensions": 1536, "vectorSearchProfile": "hnsw"} ], "vectorSearch": { "algorithms": [{"name": "hsnw", "kind": "hnsw", "hnswParameters": {}}], "profiles": [{"name": "hsnw", "algorithm": "hnsw"}] }, "scoringProfiles": [], "semanticConfiguration": [], "analyzers": [] }Zaktualizuj indeksator, aby określić indeks nadrzędny jako docelowy.
Definicja indeksatora określa składniki zestawu. W definicji indeksatora nazwa indeksu, która ma być podana, jest indeksem nadrzędnym. Jeśli potrzebujesz mapowań dla pól na poziomie nadrzędnym, zdefiniuj je w sekcji outputFieldMappings. W przypadku indeksowania "jeden do wielu", które używa oddzielnych indeksów, definicja indeksatora może wyglądać podobnie do poniższego przykładu.
{ "name": "my-indexer", "dataSourceName": "my-ds", "targetIndexName": "my-parent-index", "skillsetName" : "my-skillset", "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, }Dodaj
indexProjectionsdo zestawu umiejętności.Oto przykład definicji projekcji indeksu, która określa ścieżkę danych, która indeksator powinien używać do indeksowania zawartości. Określa nazwę indeksu podrzędnego w definicji projekcji indeksu. Specyfikuje również mapowania każdego pola podrzędnego lub na poziomie fragmentu. Jest to jedyne miejsce, w którym określono nazwę indeksu dziecięcego.
Zwróć uwagę, że
parametersparametr ma wartość null i używa wartości domyślnejincludeIndexingParentDocuments. Indeksator wypełnia indeks nadrzędny. Tablicaselectorssłuży do projekcji dokumentów fragmentów do indeksu podrzędnego."indexProjections": { "selectors": [ { "targetIndexName": "my-child-index", "parentKeyFieldName": "parent_id", "sourceContext": "/document/pages/*", "mappings": [ { "name": "chunk", "source": "/document/pages/*", "sourceContext": null, "inputs": [] }, { "name": "chunk_vector", "source": "/document/pages/*/chunk_vector", "sourceContext": null, "inputs": [] } ] } ], "parameters": {} }Uruchom indeksator. Jeśli wcześniej uruchomiono indeksator, pamiętaj, aby najpierw go zresetować.
Powinny istnieć dwa indeksy wypełnione odpowiednią zawartością. Wykonaj zapytanie dotyczące indeksów w Eksploratorze wyszukiwania, aby sprawdzić, czy każda z nich ma poprawną zawartość.
Następny krok
Fragmentowanie danych i indeksowanie jeden-do-wielu są częścią klasycznego wzorca RAG w Wyszukiwanie AI platformy Azure. Przejdź do poniższego samouczka i przykładowego kodu, aby dowiedzieć się więcej na ten temat.