Optymalizowanie kosztów dla modelu cen bezserwerowego w Wyszukiwanie AI platformy Azure

Note

Wyszukiwanie AI platformy Azure jest dostępna za pośrednictwem portalu Azure, interfejsów API REST i Azure SDKs. Jest także 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.

Wyszukiwanie AI platformy Azure obsługuje dwa modele cenowe, z których każdy jest przeznaczony dla różnych wzorców obciążeń:

  • Dedykowane: stałe ceny mierzone przez jednostki wyszukiwania (SU). Wybierasz warstwę usługi, a opłata jest naliczana co godzinę na podstawie liczby przydzielonych jednostek.

  • Bezserwerowe (wersja zapoznawcza): cennik oparty na zużyciu, naliczany na podstawie jednostek obliczeniowych na godzinę (CU/hr) oraz za każdy GB/miesiąc magazynu indeksów.

Ważna

Warstwa bezserwerowa dewelopera jest obecnie dostępna w wersji zapoznawczej. Ta wersja zapoznawcza jest udostępniana bez umowy dotyczącej poziomu usług i nie jest zalecana w przypadku obciążeń produkcyjnych. Niektóre funkcje mogą nie być obsługiwane lub mogą mieć ograniczone możliwości. Aby uzyskać więcej informacji, zobacz Warunki dodatkowe korzystania z testowych wersji Microsoft Azure.

Naliczanie opłat za plan Serverless Developer rozpoczęło się 13 września 2026 r. Opłaty za użycie w dniu lub po tej dacie są wyświetlane na fakturze Azure. Opłaty za użycie nie są naliczane przed 13 września 2026 r. Warstwa bezserwerowa dewelopera nie obsługuje migracji do lub z innych warstw cenowych, a niektóre funkcje dostępne w innych warstwach nie są obsługiwane w publicznej wersji zapoznawczej. Limity usług, obsługiwane funkcje i szczegóły cennika mogą ulec zmianie przed ogólną dostępnością.

W wersji zapoznawczej model cen bezserwerowy jest obsługiwany tylko w określonych regionach.

Aby uzyskać więcej informacji na temat różnic w modelu cenowym i warstwie usług, zobacz Wybieranie modelu cenowego i warstwy usług.

Sposób określania kosztów w modelu bezserwerowym

Modele cenowe Dedicated i Serverless w różny sposób rozliczają pracę w usłudze wyszukiwania. Usługi dedykowane uruchamiają zapytania, indeksowanie i przetwarzanie wyników w ramach aprowizowanej pojemności, która została już zakupiona. Usługi bezserwerowe mierzą operacje obliczeniowe, pamięci i we/wy dysku, z których te operacje korzystają i konwertują to użycie na jednostki obliczeniowe (CU). W związku z tym optymalizacja wydajności bezpośrednio wpływa na koszt bezserwerowy.

Koszty bezserwerowe są powiązane z wykonywaniem obciążenia:

  • Zapytania i indeksowanie zużywają obliczenia mierzone w jednostkach obliczeniowych na godzinę (CU/h).
  • Aktywne indeksy zużywają moc obliczeniową w zależności od stopnia wykorzystania zasobów i tego, jak długo pozostają aktywne.
  • Indeks pozostaje aktywny przez 10 minut po ostatnim żądaniu zapytania lub indeksowania, zanim przejdzie on jako nieaktywny.
  • Nieaktywne indeksy nie mają minimalnej ani zarezerwowanej opłaty za zasoby obliczeniowe. Użycie zasobów obliczeniowych dla nieaktywnych indeksów jest skalowane do zera. Nie ma minimalnej opłaty za zasoby obliczeniowe, gdy indeks jest nieaktywny.
  • Opłaty za pamięć masową są naliczane oddzielnie na podstawie rozmiaru indeksu na dysku i obowiązują niezależnie od tego, czy indeks jest używany.
  • Wyszukiwanie agentowe wymaga zasobów obliczeniowych do obsługi zapytań wyszukiwania i orkiestracji wykonywanej w ramach usługi wyszukiwania.

Opłaty za przechowywanie przestają być naliczane dopiero po usunięciu indeksu.

Aby wyświetlić podział kosztów i stawki użycia dla bieżącego cyklu rozliczeniowego, wyświetl kartę Skala i koszt w portalu Azure.

Zrzut ekranu przedstawiający kartę Skala i koszt w Azure Portal pokazujący zakres czasu bieżącego cyklu rozliczeniowego, podział kosztów, szczegóły użycia jednostek obliczeniowych i użycia magazynu oraz stawki.

Jak rozmiar indeksu wpływa na użycie zasobów obliczeniowych

Chociaż indeks jest aktywny, Wyszukiwanie AI platformy Azure ocenia dwa skończone zasoby w celu określenia użycia zasobów obliczeniowych:

  • Całkowity rozmiar indeksu: łączna ilość miejsca zajmowana przez indeks na dysku, w tym tekst, metadane i wektory.
  • Rozmiar indeksu wektorowego: pamięć używana przez indeks wektora. Pamięć jest bardziej zasobochłonna niż dysk, dlatego rozmiar indeksu wektorowego ma większą wagę przy przeliczaniu na jednostki CU.

Usługa Wyszukiwanie AI platformy Azure nie sumuje dwóch wynikających kwot CU. Użycie zasobów obliczeniowych zależy od tego, która kwota jest wyższa. Na przykład rozmiar indeksu wektorowego może określać użycie obliczeniowe nawet wtedy, gdy całkowity rozmiar indeksu na dysku jest stosunkowo mały.

Aby zmniejszyć użycie zasobów obliczeniowych aktywnego indeksu, zidentyfikuj, który zasób generuje wyższą kwotę cu. Następnie zmniejsz całkowity rozmiar indeksu, rozmiar indeksu wektorowego lub oba te elementy. Indeksowany magazyn pozostaje oddzielną opłatą za GB/miesiąc.

Model cen bezserwerowy jest najbardziej opłacalny w przypadku obciążeń ze zmiennymi, sporadycznymi lub nieprzewidywalnymi ruchem, gdzie aprowizowana pojemność byłaby niedostatecznie wykorzystywana.

Ważna

Opłaty za bezserwerowe jednostki CU obejmują pracę wykonywaną w ramach usługi wyszukiwania, w tym zapytania, indeksowanie, przetwarzanie wyników oraz orkiestrację wyszukiwania agentowego. Wywołania modelu i inne operacje wykonywane poza usługą wyszukiwania nadal są rozliczane według istniejących liczników rozliczeniowych. Przykłady obejmują klasyfikację semantyczną, ponowne zapisywanie zapytań agentów, wyodrębnianie obrazów i wykonywanie umiejętności.

Omówienie jednostek obliczeniowych (CU)

Jednostka obliczeniowa (CU) reprezentuje mierzone zasoby systemowe wymagane do wykonywania operacji wyszukiwania i indeksowania w modelu bezserwerowym. Koszt CU zależy głównie od wykorzystania procesora CPU, pamięci i operacji wejścia/wyjścia, a w drugiej kolejności od rozmiaru indeksu i rozmiaru ładunku dokumentu, przy czym użycie jest rozliczane w jednostkach Compute Unit na godzinę (CU/h).

Obliczanie skalowania kosztów za pomocą:

  • Złożoność zapytań
  • Rozmiar indeksu (GB) i struktura
  • Rozmiar ładunku dokumentu (KB)
  • Liczba pól i pobranych wyników

Różne operacje mają różne profile kosztów:

  • Wyszukiwanie: Niski koszt. Pobieranie pojedynczego dokumentu według jego identyfikatora jest najbardziej wydajną operacją.
  • Wyszukiwanie słów kluczowych: niski koszt. Wyszukiwanie tekstu używa odwróconych indeksów, które są zoptymalizowane pod kątem szybkości i niskiego użycia zasobów obliczeniowych.
  • Wyszukiwanie wektorów: wysoki koszt. Zapytania wektorowe są kosztowne obliczeniowo, ponieważ wymagają obliczeń podobieństwa w wielowymiarowych osadzaniach. W porównaniu z wyszukiwaniem słów kluczowych zużywają znacznie więcej zasobów obliczeniowych.
  • Wyszukiwanie hybrydowe: łączy koszty wyszukiwania słów kluczowych i wyszukiwania wektorowego, ponieważ oba mechanizmy są uruchamiane dla każdego zapytania, plus niewielki dodatkowy narzut związany z Reciprocal Rank Fusion (RRF), aby scalić wyniki.

Monitorowanie użycia zasobów obliczeniowych

Monitorowanie zużycia zasobów obliczeniowych ułatwia identyfikowanie kosztownych operacji, optymalizowanie wzorców zapytań i szacowanie kosztów. Koszt jednostki obliczeniowej (CU) każdego żądania jest zwracany w nagłówku x-ms-azs-compute-units-consumed odpowiedzi HTTP jako liczba zmiennoprzecinkowa. Użyj tego nagłówka, aby zidentyfikować kosztowne operacje i zoptymalizować wzorce zapytań. Koszt CU każdego żądania można śledzić, sprawdzając nagłówki odpowiedzi HTTP i zdarzenia operacji w usłudze Azure Monitor. Aby uzyskać więcej wskazówek dotyczących dostępnych typów danych monitorowania i metod analizowania tych danych, zobacz Monitorowanie Wyszukiwanie AI platformy Azure.

  • Nagłówek: x-ms-azs-compute-units-consumed: <value>
  • Wartość: liczba zmiennoprzecinkowa reprezentująca zużyte jednostki CU.

Example:

Status: 200 OK
Content-Type: application/json
x-ms-azs-compute-units-consumed: 12.45

W tym przykładzie żądanie zużywało 12,45 jednostek obliczeniowych. Tej wartości można użyć do identyfikowania operacji o wysokim koszcie i porównywania względnego kosztu różnych wzorców zapytań.

Aby przejrzeć historyczne użycie zasobów obliczeniowych dla usługi wyszukiwania bezserwerowego, użyj metryk Azure Monitor w portalu Azure:

  1. Przejdź do usługi wyszukiwania.
  2. Wybierz pozycję Metryki.
  3. Wybierz + Dodaj metrykę.
  4. Z listy metryk wybierz pozycję Użycie jednostek obliczeniowych.
  5. Użyj wykresu, aby przeanalizować trendy użycia i zidentyfikować okresy zwiększonego użycia zasobów obliczeniowych.

Monitorowanie zagregowanego użycia pomaga zrozumieć ogólne koszty usług i zidentyfikować obciążenia, które zużywają najwięcej zasobów obliczeniowych. Opisy dostępnych metryk monitorowania można znaleźć w temacie Monitoring Data Reference (Dokumentacja danych monitorowania). Za pomocą dzienników usługi Azure Monitor można śledzić łączne użycie CU w czasie i korelować je z wolumenem zapytań i zmianami obciążenia.

Zrzut ekranu przedstawiający pulpit nawigacyjny monitorowania metryk dla bezserwerowych jednostek obliczeniowych w Azure Portal.

Konfigurowanie alertów dotyczących użycia zasobów obliczeniowych

Regułę alertu można utworzyć, aby otrzymywać powiadomienia, gdy użycie zasobów obliczeniowych osiągnie określony próg w portalu Azure.

  1. Przejdź do pozycji Alerty w usłudze wyszukiwania.
  2. Wybierz + Utwórz regułę alertu.
  3. W sekcji Warunek wybierz Użycie jednostek obliczeniowych jako sygnał.
  4. Zdefiniuj logikę alertu. Na przykład wyzwalacz, gdy łączne użycie jest większe niż określona wartość.
  5. Skonfiguruj Akcje, takie jak powiadomienia e-mail, SMS lub webhook.
  6. Wykonaj pozostałe kroki i wybierz pozycję Przejrzyj i utwórz.

Alerty pomagają aktywnie reagować na nieoczekiwane wzrosty użycia i zarządzać kosztami.

Zrzut ekranu przedstawiający tworzenie reguły alertu w Azure Portal.

Szacowanie kosztów bezserwerowych

Kalkulator cen platformy Azure i wskazówki dotyczące planowania pojemności opartego na jednostkach wyszukiwania (SU) nie mają zastosowania do usług korzystających z bezserwerowego modelu cenowego.

Aby oszacować koszty bezserwerowe:

  1. Przykładowe dane reprezentatywne dla indeksu.
  2. Uruchamianie typowych obciążeń indeksowania i wykonywania zapytań.
  3. Zarejestruj wartość zwróconą x-ms-azs-compute-units-consumed dla każdej operacji.
  4. Użyj metryk usługi Azure Monitor, aby mierzyć łączne użycie w czasie.
  5. Ekstrapoluj koszty na podstawie oczekiwanego ruchu produkcyjnego.

Użyj karty Skala i koszt w portalu Azure, aby wyświetlić bieżące użycie i szacować koszty.

Ponieważ to samo żądanie wykonywane względem tych samych danych zwykle generuje podobne zużycie zasobów obliczeniowych, reprezentatywne obciążenia mogą zapewnić niezawodną podstawę do szacowania kosztów.

Użycie bezserwerowe jest mierzone w sposób ciągły i agregowany na potrzeby rozliczeń. Użycie zasobów obliczeniowych jest śledzone przez całą minutę i emitowane tylko wtedy, gdy są używane zasoby obliczeniowe.

Podczas szacowania kosztów użyj wartości opłat za żądania, aby zrozumieć koszt poszczególnych operacji, oraz metryk usługi Azure Monitor, aby zrozumieć ogólne wzorce korzystania z usługi.

Użyj obu źródeł danych razem, aby zrozumieć koszty: dane dotyczące opłat za żądanie ułatwiają ocenę poszczególnych operacji, a metryki Azure Monitor pomagają zrozumieć zagregowane użycie usług w czasie. Aby uzyskać pełny obraz kosztów, należy również uwzględnić funkcje rozliczane oddzielnie od jednostek obliczeniowych.

Rozliczenia są oparte na agregowanym użyciu obliczeniowym, a nie na pojedynczych żądaniach. Użycie jest mierzone w odstępach jednej minuty i zaokrąglane do najbliższej 0,25 CU na minutę. Te jednominutowe interwały użycia gromadzą się w ciągu godziny w celu określenia rozliczanej kwoty CU/godziny. Wewnętrznie wykorzystanie jest agregowane z milijednostek obliczeniowych (mCU) do jednostek obliczeniowych (CU) i przeliczane na wykorzystanie godzinowe raportowane do celów rozliczeniowych.

Różne operacje zużywają różne ilości zasobów obliczeniowych. Ogólnie rzecz biorąc:

  • Wyszukiwanie słów kluczowych zwykle używa najmniejszych zasobów obliczeniowych.
  • Wyszukiwania wektorowe zwykle używają większej liczby zasobów obliczeniowych niż wyszukiwania słów kluczowych.
  • Wyszukiwania hybrydowe łączą wykonywanie wyszukiwania słów kluczowych i wektorów, więc zwykle używają większej ilości zasobów obliczeniowych niż każda z technik.

Rzeczywiste użycie zasobów obliczeniowych zależy od czynników, takich jak złożoność zapytania, rozmiar indeksu, ilość danych, konfiguracja wektora i liczba zwracanych wyników. Monitorowanie opłat za żądanie i agregowanie metryk użycia może pomóc zidentyfikować możliwości optymalizacji i lepiej przewidzieć koszty produkcji.

Obniżanie kosztów obliczeń dzięki optymalizacji

Wydajne zapytania i projektowanie indeksów zmniejszają zużycie zasobów obliczeniowych i obniżają koszty.

Optymalizowanie schematu

Schemat indeksu określa bazowe koszty zasobów obliczeniowych i magazynu:

  • Ogranicz atrybuty pól: Włączaj tylko te atrybuty (przeszukiwalne, filtrowalne, używane do grupowania aspektowego, sortowalne), które są potrzebne. Każdy atrybut zwiększa rozmiar indeksu i koszt indeksowania.
  • Spłaszcz typy złożone: Mapuj zagnieżdżone struktury JSON na proste pola lub, w miarę możliwości, kolekcje.
  • Ustaw wartość retrievable=false dla pól używanych wyłącznie do filtrowania lub sortowania: jeśli pole jest używane do filtrowania lub sortowania, ale nie musi być zwracane w wynikach, pozostaw je jako indeksowane i ustaw retrievable=false, aby zmniejszyć ilość miejsca zajmowanego na dysku oraz koszty magazynowania naliczane za GB/miesiąc.
  • Używaj pól tylko do pobierania, jeśli jest to możliwe: na przykład pola używane tylko do wyświetlania (np. adresy URL obrazów) nie powinny być przeszukiwalne.
  • Zmniejsz wymiary wektorów: wektory o wyższych wymiarach zwiększają koszty magazynowania i zapytań. W razie potrzeby używaj mniejszych modeli osadzania lub kwantyzacji.
  • Zminimalizuj rozmiar ładunku dokumentu przed indeksowaniem: większe dokumenty kosztują więcej do indeksowania. Usuń niepotrzebne pola, przycinaj długi tekst i usuwaj kod HTML przed wysłaniem dokumentów do indeksu.

Optymalizowanie żądań indeksowania

Sposób wysyłania danych do indeksu wpływa zarówno na koszt, jak i przepływność:

  • Używaj większych partii, jeśli to możliwe: indeksowanie wsadowe zmniejsza narzut związany z każdym żądaniem dzięki rozłożeniu kosztów sieciowych i przetwarzania na większą liczbę dokumentów. Ogólnie rzecz biorąc, wsady obejmujące do ok. 1000 dokumentów lub ok. 16 MB są bardziej efektywne pod względem wykorzystania CU niż wiele małych żądań. Jednak optymalny rozmiar partii zależy od obciążenia. Przetestuj, aby zrównoważyć przepływność, opóźnienia i niezawodność.

  • Indeksuj tylko nowe lub zmienione dane: unikaj pełnego ponownego indeksowania, jeśli to możliwe. Wysyłanie tylko nowych dokumentów i aktualizacji zmniejsza liczbę przetwarzanych dokumentów, obniża koszty obliczeń i zwiększa szybkość importowania.

  • Pomiń wyodrębnianie obrazów, chyba że jest to potrzebne: wyodrębnianie obrazów dodaje dodatkową pracę przetwarzania i może stać się oddzielnym czynnikiem kosztowym. Włącz go tylko dla dokumentów lub przepływów pracy, które rzeczywiście potrzebują zawartości obrazu.

  • Uwzględnij wzrost rozmiaru indeksu: jeśli to możliwe, utwórz mniejsze indeksy. Wraz ze wzrostem indeksowania koszty indeksowania rosną, ponieważ więcej danych musi być przechowywanych i utrzymywanych, a operacje wymagają większej ilości zasobów obliczeniowych. W przypadku bardzo dużych zestawów danych rozważ partycjonowanie danych w wielu indeksach, aby ułatwić zarządzanie wydajnością i kosztami. Chociaż koszty rosną wraz z rozmiarem indeksu, wzrost jest podlinijny. Większe indeksy kosztują więcej operacji, ale nie proporcjonalnie więcej.

Aby uzyskać więcej wskazówek, zobacz Tips, aby uzyskać lepszą wydajność w Wyszukiwanie AI platformy Azure.

Optymalizowanie operacji indeksatora

Użycie zasobów obliczeniowych indeksatora bezserwerowego zależy od pracy wykonywanej podczas każdego uruchomienia indeksatora. W przypadku źródeł zorientowanych na wiersz użyj liczby dokumentów przetwarzanych jako wskaźnik woluminu obciążenia. W przypadku źródeł opartych na plikach, takich jak Azure Blob Storage i Azure Data Lake Storage Gen2, monitoruj ilość przetworzonych danych źródłowych. Rzeczywiste użycie zasobów obliczeniowych zależy również od ładunków dokumentów, struktury indeksu, wzbogacania i innego przetwarzania wykonywanego podczas przebiegu.

Aby zmniejszyć użycie zasobów obliczeniowych indeksatora:

  • Użyj wykrywania zmian i indeksowania przyrostowego: przetwarzaj tylko nowe lub zmienione dane zamiast wielokrotnie indeksowania pełnego źródła danych.

  • Harmonogramy indeksatora o odpowiednim rozmiarze: wybierz harmonogram spełniający wymagania dotyczące aktualności danych. Użyj telemetrii jednostki obliczeniowej, aby ocenić wpływ częstotliwości harmonogramu.

  • Zmniejsz niepotrzebną zawartość dokumentu: usuń zawartość, która nie musi być indeksowana, i wyklucz pliki lub typy plików, które nie są wymagane.

  • Starannie określ zakres stosowania umiejętności wzbogacania: uruchamiaj je tylko dla pól i dokumentów, które wymagają wzbogacania, i unikaj generowania wyników, które nie są używane w dalszych etapach przetwarzania. Płatne umiejętności mogą wiązać się z oddzielnymi opłatami transakcyjnymi.

  • Monitorowanie nieudanych i powtarzanych uruchomień: indeksator może zużywać zasoby obliczeniowe na pracę wykonaną przed wystąpieniem niepowodzenia. Przejrzyj historię wykonywania i użycie jednostek obliczeniowych, aby zidentyfikować cykliczne błędy i wzorce ponawiania prób.

Optymalizowanie zapytań

Projektowanie zapytań jest podstawowym czynnikiem zmiennego kosztu:

  • Użyj $select polecenia , aby ograniczyć zwracane pola: zmniejsza to rozmiar ładunku i zasoby obliczeniowe wymagane do serializacji.

    GET /docs?search=test&$select=id,title,url
    
  • Użyj searchFields, aby ograniczyć zakres wyszukiwania tekstu: Ogranicz dopasowywanie podczas wykonywania zapytania do pól istotnych w danym scenariuszu. Każde dodatkowe pole z możliwością przeszukiwania zwiększa nakład pracy związany z wykonywaniem zapytań i może zwiększyć CU/h.

  • Używaj dokładnego dopasowania lub prostych zapytań na słowa kluczowe: zapytania rozmyte, z symbolami wieloznacznymi, regex i prefiksowe mogą wymuszać skanowanie dużych części indeksu i zużywać znacznie więcej CU/h. Używaj ich tylko wtedy, gdy potrzebujesz częściowego zachowania dopasowania i wybierz dokładne dopasowanie lub prostsze zapytania kluczowe wszędzie tam, gdzie to możliwe.

  • Użyj wyszukiwań zamiast wyszukiwań, jeśli to możliwe: pobieranie dokumentu według identyfikatora jest bardziej wydajne niż uruchamianie zapytania wyszukiwania. Jeśli znasz identyfikator dokumentu, użyj wyszukiwania zamiast zapytania wyszukiwania. Wyszukiwania są bardziej wydajne, ponieważ pobierają dokument bezpośrednio według klucza, podczas gdy zapytania wyszukiwania wywołują pełny potok zapytania (analizowanie, przechodzenie indeksu, ocenianie i klasyfikowanie), co zwiększa koszt obliczeń.

  • Unikaj głębokiego stronicowania ($skip): Duże $skip wartości zwiększają obliczenia, ponieważ aparat musi przetwarzać, oceniać i klasyfikować wyniki poprzedzające żądaną stronę. Na przykład $skip=5000 wymaga, aby silnik przetworzył co najmniej 5,000 wyników, które nie zostają zwrócone. Ten wybór zużywa dodatkowe jednostki obliczeniowe (CU) i może zwiększyć koszty. Zamiast tego użyj filtrów, aby zawęzić wynik set i $top, a tym samym ograniczyć liczbę zwracanych wyników. Odpowiedni rozmiar $top aplikacji lub interfejsu użytkownika. Chociaż $top nie zmienia liczby zgodnych dokumentów, mniejsza wartość zmniejsza liczbę wyników, które muszą być zbierane, sortowane i serializowane. Żądaj tylko tyle wyników, ile wymaga aplikacja, i unikaj wzorców stronicowania, które wymagają od aparatu przetwarzania dużej liczby nieużywanych wyników.

  • Zminimalizuj liczbę aspektów i zakres aspektów: żądaj tylko aspektów wyświetlanych w interfejsie użytkownika i zachowaj każdą wartość aspektu count tak małą, jak praktyczną. Aspekty wymagają agregacji poszczególnych zapytań, a wysokie liczby zwiększają koszt obliczeń.

  • Służy search.in do filtrowania: podczas filtrowania według listy identyfikatorów lub wartości użyj search.in funkcji zamiast wielu or warunków (na przykład id eq '1' or id eq '2'). Takie podejście jest bardziej wydajne i zmniejsza obciążenie obliczeniowe. Należy również unikać oznaczania pól o wysokiej kardynalności (czyli takich, które mają dużą liczbę unikatowych wartości, na przykład unikatowe identyfikatory lub opisy w postaci wolnego tekstu) jako filtrowalnych lub fasetowych, chyba że jest to wymagane, ponieważ zwiększa to rozmiar indeksu i koszt wykonywania zapytań.

Optymalizowanie żądań administracyjnych

Oprócz operacji wykonywania zapytań i indeksowania Wyszukiwanie AI platformy Azure obejmuje operacje administracyjne na poziomie obiektu i na poziomie usługi (takie jak pobieranie schematów indeksów lub statystyk usługi). Te żądania mają płaski koszt za żądanie. Chociaż każde żądanie ma niski koszt, powtarzające się lub niepotrzebne wywołania mogą z czasem się kumulować i zwiększać całkowite zużycie zasobów obliczeniowych.

  • Unikaj nadmiernych żądań administracyjnych: przechowuj metadane, takie jak schematy indeksów, w pamięci podręcznej po stronie klienta, zamiast wielokrotnie je pobierać. Na przykład pobieranie schematu indeksu przed każdą operacją zapisu wprowadza niepotrzebne koszty. W modelu bezserwerowym ten wzorzec bezpośrednio zwiększa opłaty za obliczenia, natomiast w przypadku usług dedykowanych wpływ jest często ukryty przez stałe rozliczenia godzinowe.

Optymalizowanie kosztów wektorów

Obciążenia wektorowe są zazwyczaj składnikiem o najwyższym koszcie w wyszukiwaniu modelu cen bezserwerowego, ponieważ mają wpływ zarówno na jednostki obliczeniowe (zapytania i indeksowanie), jak i magazyn (rozmiar wektora na dysku). Aby zmniejszyć koszty, zoptymalizuj zarówno sposób przechowywania wektorów, jak i sposób wykonywania zapytań.

Optymalizowanie magazynu i schematu wektorów

Pola wektorowe mogą znacznie zwiększyć rozmiar indeksu i koszt indeksowania. Użyj następujących technik, aby zmniejszyć obciążenie magazynu:

  • Użyj kompresji, aby zmniejszyć rozmiar wektora: Zastosuj kwantyzację, aby zmniejszyć zużycie pamięci masowej przy minimalnym wpływie na istotność. Na przykład kwantyzacja skalarna może zmniejszyć magazyn wektorów o maksymalnie 4× przy minimalnym wpływie na jakość wyszukiwania.

  • Wyłącz magazyn dla wektorów, gdy nie są potrzebne: ustaw wartość stored=false na polach wektorów, jeśli potrzebujesz tylko wektorów do wyszukiwania, a nie pobierania. Pozwala to uniknąć przechowywania oryginalnych wektorów w indeksie, co zmniejsza koszty magazynowania bez wpływu na zachowanie zapytań.

  • Używaj mniejszych wymiarów osadzania, jeśli to możliwe: wektory o wyższych wymiarach zwiększają zarówno koszt magazynowania, jak i zapytania. W przypadku obciążeń niekrytycznych użyj mniejszych modeli osadzania (na przykład 384 lub 768 wymiarów zamiast 1536), aby zmniejszyć koszty.

Optymalizowanie wykonywania zapytań wektorów

Zapytania wektorowe intensywnie korzystają z obliczeń, ponieważ wymagają obliczeń podobieństwa w strukturach danych o wysokim wymiarach.

  • Selektywne wyszukiwanie hybrydowe: zapytania hybrydowe uruchamiają zarówno słowo kluczowe, jak i pobieranie wektorów. Używaj tylko wtedy, gdy jest to konieczne dla istotności.

  • Zmniejsz wartość maxTextRecallSize dla zapytań hybrydowych: Ustawienie hybridSearch.maxTextRecallSize określa, ile wyników uszeregowanych przez BM25 trafia do mechanizmu Reciprocal Rank Fusion. Wartość domyślna to 1000 (zakres od 1 do 10 000). Zużycie zasobów obliczeniowych rośnie w przybliżeniu liniowo wraz z tą wartością, więc jej obniżenie jest jednym z najprostszych sposobów zmniejszenia kosztów w przypadku obciążeń hybrydowych.

  • Wartości około 500 często znacząco zmniejszają zapotrzebowanie na moc obliczeniową przy niewielkim spadku trafności.

  • Obniżenie tej wartości może spowodować utratę dopasowań słów kluczowych, których nie wychwytuje wyszukiwanie wektorowe, takich jak dokładne terminy, identyfikatory i akronimy.

  • Steruj liczbą kandydatów oddzielnie za pomocą parametru k w każdym zapytaniu wektorowym.

  • Przetestuj reprezentatywne zapytania i porównaj istotność, opóźnienie oraz nagłówek x-ms-azs-compute-units-consumed przed ostatecznym wybraniem wartości.

  • Zastosuj filtry przed zapytaniami wektorowymi: Zawęź zestaw kandydatów przed wyszukiwaniem wektorowym, aby zmniejszyć ilość przetworzonych danych. Zobacz Jak filtrowanie działa w zapytaniach wektorowych.

Obniżanie kosztów dzięki zminimalizowaniu użycia

Opłaty za model bezserwerowy są naliczane tylko za zużyte zasoby. Jeśli nie ma żadnych żądań, użycie zasobów obliczeniowych spada odpowiednio.

Aby zminimalizować koszty użycia:

  • Uruchamiaj zapytania tylko wtedy, gdy jest to konieczne.
  • Unikaj nadmiarowych lub zbyt często występujących żądań.
  • Monitoruj użycie i dostrajaj obciążenia na podstawie zapotrzebowania.

Tip

To samo zapytanie może charakteryzować się różnymi opóźnieniami i profilami zużycia CU w zależności od tego, czy usługa jest rozgrzana, czy zimna. Po upływie okresu bez ruchu odczytu lub zapisu użycie zasobów obliczeniowych w modelu cen bezserwerowym spadnie do zera. Następne żądanie może mieć większe opóźnienie i zużywać więcej jednostek CU, gdy ścieżki danych się rozgrzewają. Większe indeksy zwykle potrzebują więcej czasu na rozgrzanie niż mniejsze, więc efekty zimnego startu są często bardziej zauważalne w większych usługach.

Optymalizowanie kosztów magazynowania

Opłata za przechowywanie jest naliczana za każdy GB/miesiąc na podstawie rozmiaru indeksu na dysku, który może przekraczać rozmiar danych źródłowych. Aby zmniejszyć koszty magazynowania:

  • Usuń nieużywane indeksy.
  • Zminimalizuj przechowywane pola.
  • Projektuj schematy z uwzględnieniem nakładu pracy magazynu.
  • Używaj mechanizmów sugestii wybiórczo, ponieważ mogą one znacznie zwiększyć zajętość pamięci.

Aby uzyskać informacje o technikach specyficznych dla wektorów (kompresja, oczyszczanie i ustawienia magazynu), zobacz Optymalizowanie pod kątem magazynu i przetwarzania wektorów.

Aby uzyskać więcej wskazówek dotyczących kompromisów między wydajnością magazynowania a wydajnością zapytań, zobacz artykuł Wskazówki dotyczące lepszej wydajności w usłudze Wyszukiwanie AI platformy Azure.