Indeksowanie wektorów binarnych na potrzeby wyszukiwania wektorów

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 Collection(Edm.Byte) spakowany typ binarny, aby jeszcze bardziej zmniejszyć zapotrzebowanie na miejsce do przechowywania i pamięć danych wektorowych. Tego typu danych można użyć do danych wyjściowych modeli, takich jak binarne modele osadzania Cohere Embed v3 lub dowolny inny model osadzania lub proces, który generuje wektory jako bajty binarne.

Istnieją trzy kroki konfigurowania indeksu dla wektorów binarnych:

  • Dodawanie algorytmu wyszukiwania wektorów, który określa odległość Hamming dla porównania wektorów binarnych
  • Dodawanie profilu wektorowego wskazującego algorytm
  • Dodawanie pola wektorowego typu Collection(Edm.Byte) i przypisywanie odległości Hamming

W tym artykule użyto interfejsów API REST na potrzeby ilustracji, ale możesz również użyć Azure SDK lub portalu Azure, aby dodać pole binarne do indeksu. Typ danych binarnych można przypisać do pól przy użyciu Indeksy - Utwórz lub Indeksy - Utwórz Lub Aktualizuj interfejsów API REST.

Wskazówka

Jeśli badasz obsługę wektorów binarnych pod kątem zmniejszonego użycia, możesz również rozważyć funkcje kwantyzacji wektorów oraz redukcji pamięci w Wyszukiwanie AI platformy Azure. Dane wejściowe to wektory osadzeń float32 lub float16. Dane wyjściowe są przechowywane w znacznie mniejszym formacie. Aby uzyskać więcej informacji, zobacz Kompresuj przy użyciu kwantyzacji binarnej lub skalarnej i Przypisz wąskie typy danych.

Wymagania wstępne

  • Znajomość tworzenia indeksu i dodawania pól wektorów.

  • Wektory binarne, z jednym bitem na wymiar, spakowane w wartościach uint8 z ośmioma bitami na wartość. Te wektory można uzyskać przy użyciu modeli, które bezpośrednio generują spakowane wektory binarne lub kwantyzując wektory binarne w aplikacji klienckiej podczas indeksowania i pobierania.

Ograniczenia

  • Brak obsługi portalu Azure w kreatorze Importuj dane.

  • Brak obsługi pól binarnych w umiejętności AML używanych do zintegrowanej wektoryzacji modeli z katalogu modeli Microsoft Foundry.

Dodawanie algorytmu wyszukiwania wektorowego i profilu wektora

Algorytmy wyszukiwania wektorowego tworzą struktury nawigacji zapytań podczas indeksowania. W przypadku pól wektorów binarnych system używa metryki odległości Hamming do przeprowadzania porównań wektorów.

Aby skonfigurować wyszukiwanie wektorów binarnych:

  1. Skonfiguruj żądanie Indeksy ‒ utworzenie lub aktualizacja (interfejs API REST).

  2. W schemacie indeksu dodaj sekcję vectorSearch, która określa profile i algorytmy.

  3. Dodaj co najmniej jeden algorytm wyszukiwania wektorowego , który używa metryki podobieństwa klasy hamming. Algorytm hierarchicznych małych światów (HNSW) jest powszechny, ale można również używać odległości Hamming z wyczerpującym K najbliższych sąsiadów (KNN).

  4. Dodaj co najmniej jeden profil wektorów określający algorytm.

W poniższym przykładzie przedstawiono podstawową vectorSearch konfigurację.

  "vectorSearch": { 
    "profiles": [ 
      { 
        "name": "myHnswProfile", 
        "algorithm": "myHnsw", 
        "compression": null, 
        "vectorizer": null 
      } 
    ], 
    "algorithms": [ 
      { 
        "name": "myHnsw", 
        "kind": "hnsw", 
        "hnswParameters": { 
          "metric": "hamming" 
        } 
      }, 
      { 
        "name": "myExhaustiveKnn", 
        "kind": "exhaustiveKnn", 
        "exhaustiveKnnParameters": { 
          "metric": "hamming" 
        } 
      } 
    ] 
  }

Dodawanie pola binarnego do indeksu

Kolekcja pól indeksu musi zawierać pole dla klucza dokumentu, pól wektorów i innych pól potrzebnych w scenariuszach wyszukiwania hybrydowego.

Pola binarne używają typu Collection(Edm.Byte) i zawierają osadzenia w postaci zapakowanej. Jeśli na przykład oryginalny wymiar osadzania to 1024, spakowana długość wektora binarnego to ceiling(1024 / 8) = 128. Spakowany format można uzyskać, ustawiając właściwość vectorEncoding w polu.

Aby dodać pole wektora binarnego do indeksu:

  1. Dodaj pole do kolekcji pól i nadaj mu nazwę.

  2. Ustaw typ danych na Collection(Edm.Byte).

  3. Ustaw vectorEncoding wartość na packedBit dla kodowania binarnego.

  4. Ustaw dimensions na 1024. Określ oryginalny (rozpakowany) wymiar wektora.

  5. Ustaw vectorSearchProfile na profil, który zdefiniowałeś w poprzednim kroku.

  6. Ustaw searchable na true.

Poniższa definicja pola jest przykładem pola wektora binarnego w schemacie indeksu.

  "fields": [ 
    . . . 
    { 
      "name": "my-binary-vector-field", 
      "type": "Collection(Edm.Byte)", 
      "vectorEncoding": "packedBit", 
      "dimensions": 1024, 
      "vectorSearchProfile": "myHnswProfile",
      "searchable": true
    },
   . . . 
  ]
  • Przejrzyj azure-search-vector-samples repozytorium dla pełnych przepływów pracy obejmujących definicję schematu, wektoryzację, indeksowanie i zapytania.

  • Przejrzyj kod demonstracyjny wyszukiwania wektorów dla C#, Python i JavaScript.