Implementowanie typów danych wektorów i wyszukiwania wektorów

Ukończone

Program SQL Server 2025 obejmuje natywną obsługę typów danych wektorowych i wyszukiwania wektorów. Ta funkcja umożliwia przechowywanie osadzania wektorów o wysokim wymiarach wraz z danymi relacyjnymi i przeprowadzania wyszukiwań podobieństw, dzięki czemu można tworzyć aplikacje, które rozumieją relacje semantyczne w danych.

Wyszukiwanie wektorowe dotyczy ograniczeń w tradycyjnych zapytaniach bazy danych. Tradycyjne bazy danych doskonale sprawdzają się w dokładnych dopasowaniach i zapytaniach ustrukturyzowanych, ale mają trudności ze zrozumieniem kontekstu i znaczenia. Wyszukiwanie wektorowe zmienia się, umożliwiając zrozumienie semantyczne — możliwość znajdowania koncepcyjnie podobnych elementów nawet wtedy, gdy nie udostępniają dokładnych słów kluczowych. Na przykład wyszukiwanie "wygodnych butów do biegania" może znaleźć produkty opisane jako "amortyzowane obuwie sportowe", ponieważ ich wektorowe osadzanie przechwytuje podobne znaczenie semantyczne.

W przypadku deweloperów oznacza to, że można tworzyć inteligentne aplikacje bez zarządzania oddzielnymi wektorowymi bazami danych lub złożonymi procesami synchronizacji danych. Zachowując wektory wraz z danymi relacyjnymi w programie SQL Server, utrzymujesz zgodność z ACID, używasz istniejących zasad zabezpieczeń, używasz znanej składni T-SQL i upraszczasz architekturę. Ta integracja ma zastosowanie do scenariuszy, takich jak:

  • Semantyczne wyszukiwanie i zalecenia: Znajdowanie odpowiednich produktów, dokumentów lub zawartości na podstawie znaczenia, a nie tylko słów kluczowych
  • Systemy odpowiedzi na pytania: Wzmacniają działanie chatbotów i asystentów wirtualnych, które rozumieją zapytania w języku naturalnym dotyczące danych przedsiębiorstwa
  • Wykrywanie anomalii: Identyfikowanie nietypowych wzorców przez znalezienie punktów danych, które są semantycznie odległe od normalnego zachowania
  • Deduplikacja zawartości: Wykrywaj podobne lub zduplikowane elementy nawet wtedy, gdy są inaczej sformułowane
  • Aparaty personalizacji: Dopasowywanie preferencji użytkownika do produktów lub zawartości w oparciu o zniuansowane podobieństwo

Eksplorowanie typu danych wektora

Typ danych wektorów w programie SQL Server 2025 został zaprojektowany do wydajnego przechowywania tablic liczb zmiennoprzecinkowych. Wektory są często używane do reprezentowania osadzania generowanych przez modele sztucznej inteligencji, gdzie każdy wymiar przechwytuje określone funkcje lub semantyczne cechy danych.

Eksplorowanie kluczowych cech

  • Zoptymalizowany format przechowywania: Wektory są przechowywane w zoptymalizowanym formacie binarnym wewnętrznie, ale eksponowane jako tablice JSON w celu ułatwienia użycia i zgodności.
  • Elastyczna precyzja: Każdy element w wektorze może być przechowywany przy użyciu wartości zmiennoprzecinkowych o pojedynczej precyzji (4 bajtów) lub pół-bajtowej (2-bajtowej), co pozwala równoważyć dokładność i wydajność magazynowania.
  • Obsługa wymiarów: Program SQL Server 2025 obsługuje wektory z maksymalnie 1998 wymiarami dla pojedynczej precyzji i 3996 wymiarów dla półprecyzyjnej, przy użyciu szerokiej gamy modeli osadzania.

Tworzenie i przechowywanie wektorów

Wektory można tworzyć, rzutując tablice JSON na vector typ danych. Oto przykład:

-- Create a vector from a JSON array
DECLARE @v1 VECTOR(3) = '[1.0, -0.2, 30]';
DECLARE @v2 VECTOR(3) = JSON_ARRAY(1.0, -0.2, 30);

SELECT @v1 AS v1, @v2 AS v2;

Ten kod przedstawia dwa sposoby tworzenia wektora 3-wymiarowego: bezpośrednio rzutując literał ciągu JSON lub używając JSON_ARRAY funkcji. Obie metody generują ten sam wynik, przechowując wartości [1.0, -0.2, 30] w typie danych wektorowych.

Aby przechowywać wektory w tabeli:

CREATE TABLE products (
    product_id INT PRIMARY KEY,
    product_name NVARCHAR(100),
    description NVARCHAR(MAX),
    embedding VECTOR(1536)  -- Common dimension for OpenAI embeddings
);

Ten kod tworzy tabelę do przechowywania informacji o produkcie wraz z osadzeniem wektora o wymiarze 1536. Rozmiar wymiaru 1536 jest często używany w modelach osadzania tekstu interfejsu OpenAI, dzięki czemu ta tabela jest gotowa do przechowywania osadzonych elementów wygenerowanych na podstawie opisów produktów.

Konwertowanie wektorów na format JSON

Można łatwo konwertować wektory z powrotem na tablice JSON na potrzeby wyświetlania lub przetwarzania:

DECLARE @v VECTOR(3) = '[1.0, -0.2, 30]';
SELECT 
    CAST(@v AS NVARCHAR(MAX)) AS string_representation,
    CAST(@v AS JSON) AS json_representation;

Ten kod konwertuje wektor z powrotem na formaty czytelne. Element CAST to NVARCHAR(MAX) zwraca wektor jako ciąg, a jednocześnie CASTJSON zwraca go jako tablicę JSON, która jest przydatna do współdziałania z aplikacjami i interfejsami API.

Przeprowadź dokładne wyszukiwanie najbliższych sąsiadów (k-NN)

Dokładne wyszukiwanie najbliższego sąsiada (k-NN) obejmuje obliczanie odległości między wektorem zapytania a wszystkimi wektorami w zestawie danych, a następnie zwracanie k najbliższych dopasowań. Ta metoda gwarantuje dokładne wyniki, ale może być intensywnie obciążana obliczeniami dla dużych zestawów danych.

Użyj funkcji VECTOR_DISTANCE

Funkcja mierzy podobieństwo między dwoma VECTOR_DISTANCE wektorami przy użyciu określonej metryki odległości:

DECLARE @query_vector VECTOR(1536) = AI_GENERATE_EMBEDDINGS(
    N'Pink Floyd music style' 
    USE MODEL Ada2Embeddings
);

SELECT TOP (10) 
    product_id, 
    product_name,
    VECTOR_DISTANCE('cosine', @query_vector, embedding) AS distance
FROM products
ORDER BY distance;

To zapytanie generuje wektor dla tekstu "Pink Floyd music style" przy użyciu modelu Ada2Embeddings, a następnie znajduje 10 produktów z wektorami najbardziej podobnymi do zapytania. Funkcja VECTOR_DISTANCE oblicza odległość cosinusową między wektorem zapytania a wektorem osadzenia każdego produktu, z mniejszymi odległościami wskazującymi większe podobieństwo.

Wybieranie metryk odległości

Program SQL Server 2025 obsługuje kilka metryk odległości:

  • Podobieństwo cosinusu: Mierzy kąt między wektorami, idealny do osadzania tekstu
  • Odległość euklidesowa: Mierzy odległość liniową w przestrzeni wektorowej
  • Produkt kropkowy: Przydatne w przypadku znormalizowanych wektorów

Dokładne wyszukiwanie jest zalecane, gdy:

  • Masz mniej niż 50 000 wektorów do przeszukania
  • Predykaty zapytań filtrują zestaw danych do łatwego do zarządzania rozmiaru
  • Potrzebujesz doskonałego przypominania (dokładność 100%)
  • Dodatkowy koszt obliczeniowy jest akceptowalny

Implementowanie przybliżonego wyszukiwania najbliższego sąsiada (ANN)

W przypadku większych zestawów danych przybliżone wyszukiwanie najbliższego sąsiada (ANN) zapewnia równowagę między szybkością i dokładnością. Program SQL Server 2025 implementuje metodę ANN przy użyciu algorytmu DiskANN, który tworzy indeks oparty na grafie, umożliwiający wydajną nawigację wektorową.

Zrozumienie odwołania

Kompletność mierzy proporcję rzeczywistych najbliższych sąsiadów, które algorytm sztucznych sieci neuronowych (ANN) identyfikuje w porównaniu z dokładnym przeszukiwaniem. Wskaźnik trafności 1.0 (100%) wskazuje, że wyszukiwanie przybliżone zwraca te same wyniki co wyszukiwanie dokładne. W praktyce wartości przypomnienia powyżej 0,95 często zapewniają doskonałe wyniki dla aplikacji sztucznej inteligencji, oferując jednocześnie znaczne ulepszenia wydajności.

Tworzenie indeksów wektorów

Aby włączyć wyszukiwanie ANN, utwórz indeks wektora w kolumnie wektora :

CREATE VECTOR INDEX idx_product_embedding 
ON products(embedding);

Ten kod tworzy indeks wektorowy w kolumnie osadzania przy użyciu algorytmu DiskANN. Indeks poprawia wydajność przybliżonych wyszukiwań najbliższych sąsiadów w dużych zestawach danych, tworząc strukturę grafu na potrzeby wydajnej nawigacji wektorowej.

Indeksy wektorów w programie SQL Server 2025:

  • Używanie algorytmu DiskANN do wydajnego wyszukiwania opartego na grafach
  • Obsługa ograniczonej pamięci i zasobów procesora
  • Równoważenie operacji we/wy dysku, użycia pamięci i wydajności zapytań
  • Automatyczne aktualizowanie w miarę zmian danych

Użyj funkcji VECTOR_SEARCH

Funkcja VECTOR_SEARCH wykonuje przybliżone wyszukiwania najbliższych sąsiadów:

DECLARE @query_vector VECTOR(1536) = AI_GENERATE_EMBEDDINGS(
    N'Pink Floyd music style' 
    USE MODEL Ada2Embeddings
);

SELECT 
    t.product_id,
    t.product_name,
    s.distance
FROM
    VECTOR_SEARCH(
        TABLE = products AS t, 
        COLUMN = embedding, 
        SIMILAR_TO = @query_vector, 
        METRIC = 'cosine', 
        TOP_N = 10
    ) AS s
ORDER BY s.distance;

To zapytanie wykonuje przybliżone wyszukiwanie najbliższego sąsiada przy użyciu utworzonego wcześniej indeksu wektorowego. Funkcja VECTOR_SEARCH używa algorytmu DiskANN, aby znaleźć 10 najbardziej podobnych produktów bez skanowania wszystkich wektorów, zapewniając poprawę wydajności dużych zestawów danych przy zachowaniu wysokiej dokładności.

Rozważ korzyści z wydajności

Oferty wyszukiwania ANN:

  • Szybsze wykonywanie zapytań: Szczególnie w przypadku zestawów danych z milionami wektorów
  • Mniejsze zużycie zasobów: Zmniejszone użycie procesora i pamięci w porównaniu z dokładnym wyszukiwaniem
  • Skalowalność: Wydajnie obsługuje zestawy danych wektorów na dużą skalę
  • Wysoka czułość: Zazwyczaj osiąga wskaźniki czułości powyżej 95%, zapewniając wysoką jakość wyników.

Tworzenie scenariuszy wyszukiwania hybrydowego

Program SQL Server 2025 obsługuje łączenie wyszukiwania wektorów z tradycyjnymi operacjami SQL na potrzeby scenariuszy wyszukiwania hybrydowego.

Wyszukiwanie semantyczne można wykonywać przy użyciu wektorów, a także stosować tradycyjne filtry:

DECLARE @query_vector VECTOR(1536) = AI_GENERATE_EMBEDDINGS(
    N'comfortable running shoes' 
    USE MODEL Ada2Embeddings
);

SELECT 
    t.product_id,
    t.product_name,
    t.category,
    t.price,
    s.distance
FROM
    VECTOR_SEARCH(
        TABLE = products AS t, 
        COLUMN = embedding, 
        SIMILAR_TO = @query_vector, 
        METRIC = 'cosine', 
        TOP_N = 20
    ) AS s
WHERE 
    t.category = 'Footwear'
    AND t.price BETWEEN 50 AND 150
ORDER BY s.distance;

To wyszukiwanie hybrydowe łączy wyszukiwanie semantyczne podobieństwa z tradycyjnym filtrowaniem SQL. Po pierwsze, znajduje 20 najbardziej semantycznie podobnych produktów do "wygodnych butów do biegania", a następnie filtruje te wyniki, aby uwzględnić tylko przedmioty obuwia wyceniane między 50 USD a 150 USD. Takie podejście umożliwia precyzyjne określanie celu podczas korzystania z analizy semantycznej.

Połącz wyszukiwanie pełnotekstowe z wyszukiwaniem wektorowym w celu uzyskania kompleksowych wyników:

DECLARE @query_vector VECTOR(1536) = AI_GENERATE_EMBEDDINGS(
    N'sustainable materials' 
    USE MODEL Ada2Embeddings
);

SELECT 
    t.product_id,
    t.product_name,
    s.distance,
    fts.RANK AS text_rank
FROM
    VECTOR_SEARCH(
        TABLE = products AS t, 
        COLUMN = embedding, 
        SIMILAR_TO = @query_vector, 
        METRIC = 'cosine', 
        TOP_N = 50
    ) AS s
INNER JOIN CONTAINSTABLE(products, description, 'sustainable OR eco-friendly') AS fts
    ON t.product_id = fts.[KEY]
ORDER BY (s.distance * 0.6) + ((1.0 - fts.RANK/1000.0) * 0.4);

To zapytanie łączy wyszukiwanie wektorów z wyszukiwaniem pełnotekstowym. Znajduje produkty semantycznie podobne do "zrównoważonych materiałów" przy użyciu osadzania wektorów, a następnie łączy się z pełnotekstowymi wynikami wyszukiwania słów kluczowych "zrównoważony" lub "przyjaznych dla środowiska" w opisie. Klasyfikacja końcowa łączy oba wyniki z ważoną formułą (60% podobieństwo semantyczne, 40% dopasowanie słowa kluczowego).

Stosowanie najlepszych rozwiązań

Podczas implementowania wyszukiwania wektorów w programie SQL Server 2025:

  • Wybierz odpowiednią precyzję: Używaj półprecyzji w przypadku większych wymiarów, gdy przechowywanie jest problemem
  • Indeksuj strategicznie: Twórz indeksy wektorowe w kolumnach, które są często przeszukiwane
  • Monitorowanie jakości przypomnień: Przetestuj zapytania ANN, aby zapewnić akceptowalne wskaźniki przywołań dla przypadku użycia
  • Optymalizowanie zapytań: Użyj odpowiednich filtrów, aby zmniejszyć przestrzeń wyszukiwania przed operacjami wektorów
  • Operacje wsadowe: Generowanie i wstawianie osadzeń w partiach danych dla lepszej wydajności

Korzystając z tych możliwości wektorowych, można tworzyć aplikacje oparte na sztucznej inteligencji, które rozumieją relacje semantyczne, udostępniają inteligentne rekomendacje i dostarczają środowiska wyszukiwania języka naturalnego — wszystkie w ramach zaufanej platformy programu SQL Server.