Triển khai các loại dữ liệu vectơ và tìm kiếm vectơ
SQL Server 2025 bao gồm hỗ trợ gốc cho các kiểu dữ liệu vectơ và tìm kiếm vectơ. Tính năng này cho phép bạn lưu trữ các nhúng vectơ chiều cao cùng với dữ liệu quan hệ và thực hiện các tìm kiếm tương tự, giúp bạn có thể xây dựng các ứng dụng hiểu các mối quan hệ ngữ nghĩa trong dữ liệu của bạn.
Tìm kiếm vectơ giải quyết các hạn chế trong truy vấn cơ sở dữ liệu truyền thống. Cơ sở dữ liệu truyền thống vượt trội trong việc khớp chính xác và truy vấn có cấu trúc, nhưng chúng gặp khó khăn trong việc hiểu ngữ cảnh và ý nghĩa. Tìm kiếm vectơ thay đổi điều này bằng cách cho phép hiểu ngữ nghĩa — khả năng tìm các mục tương tự về mặt khái niệm ngay cả khi chúng không chia sẻ từ khóa chính xác. Ví dụ: tìm kiếm "giày chạy bộ thoải mái" có thể tìm thấy các sản phẩm được mô tả là "giày thể thao có đệm" vì nhúng vectơ của chúng có ý nghĩa ngữ nghĩa tương tự.
Đối với nhà phát triển, điều này có nghĩa là bạn có thể xây dựng các ứng dụng thông minh mà không cần quản lý cơ sở dữ liệu vectơ riêng biệt hoặc quy trình đồng bộ hóa dữ liệu phức tạp. Bằng cách giữ các vectơ cùng với dữ liệu quan hệ trong SQL Server, bạn duy trì tuân thủ ACID, sử dụng các chính sách bảo mật hiện có, sử dụng cú pháp T-SQL quen thuộc và đơn giản hóa kiến trúc của mình. Tích hợp này áp dụng cho các tình huống như:
- Tìm kiếm ngữ nghĩa và đề xuất: Tìm sản phẩm, tài liệu hoặc nội dung có liên quan dựa trên ý nghĩa thay vì chỉ từ khóa
- Hệ thống trả lời câu hỏi: Trao quyền cho chatbot và trợ lý ảo hiểu các truy vấn ngôn ngữ tự nhiên trên dữ liệu doanh nghiệp của bạn
- Phát hiện bất thường: Xác định các mẫu bất thường bằng cách tìm các điểm dữ liệu khác xa về mặt ngữ nghĩa so với hành vi bình thường
- Loại bỏ trùng lặp nội dung: Phát hiện các mục tương tự hoặc trùng lặp ngay cả khi chúng được diễn đạt khác nhau
- Công cụ cá nhân hóa: Khớp sở thích của người dùng với sản phẩm hoặc nội dung dựa trên sự tương đồng về sắc thái
Khám phá kiểu dữ liệu vectơ
Kiểu dữ liệu vectơ trong SQL Server 2025 được thiết kế để lưu trữ các mảng số dấu phẩy động một cách hiệu quả. Vectơ thường được sử dụng để biểu diễn các phần nhúng do mô hình AI tạo ra, trong đó mỗi thứ nguyên nắm bắt các tính năng cụ thể hoặc đặc điểm ngữ nghĩa của dữ liệu.
Khám phá các đặc điểm chính
- Định dạng lưu trữ được tối ưu hóa: Các vectơ được lưu trữ ở định dạng nhị phân được tối ưu hóa bên trong nhưng được hiển thị dưới dạng mảng JSON để dễ sử dụng và tương thích.
- Độ chính xác linh hoạt: Mỗi phần tử trong vectơ có thể được lưu trữ bằng cách sử dụng các giá trị dấu phẩy động có độ chính xác đơn (4 byte) hoặc nửa chính xác (2 byte), cho phép bạn cân bằng giữa độ chính xác và hiệu quả lưu trữ.
- Kích thước hỗ trợ: SQL Server 2025 hỗ trợ các vectơ có kích thước lên đến 1998 cho độ chính xác đơn và 3.996 kích thước cho độ chính xác một nửa, phù hợp với nhiều mô hình nhúng.
Tạo và lưu trữ vectơ
Bạn có thể tạo vectơ bằng cách truyền các mảng JSON sang vector loại dữ liệu. Dưới đây là ví dụ:
-- 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;
Mã này trình bày hai cách để tạo vectơ 3 chiều: bằng cách truyền trực tiếp ký tự chuỗi JSON hoặc bằng cách sử dụng JSON_ARRAY hàm. Cả hai phương pháp đều tạo ra cùng một kết quả, lưu trữ các giá trị [1.0, -0.2, 30] trong kiểu dữ liệu vectơ.
Để lưu trữ vectơ trong bảng:
CREATE TABLE products (
product_id INT PRIMARY KEY,
product_name NVARCHAR(100),
description NVARCHAR(MAX),
embedding VECTOR(1536) -- Common dimension for OpenAI embeddings
);
Mã này tạo một bảng để lưu trữ thông tin sản phẩm cùng với nhúng vectơ 1536 chiều. Kích thước kích thước 1536 thường được sử dụng với các mô hình nhúng văn bản của OpenAI, giúp bảng này sẵn sàng lưu trữ các phần nhúng được tạo từ mô tả sản phẩm.
Chuyển đổi vectơ sang JSON
Bạn có thể dễ dàng chuyển đổi vectơ trở lại mảng JSON để hiển thị hoặc xử lý:
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;
Mã này chuyển đổi một vectơ trở lại các định dạng có thể đọc được. Hàm CAST to NVARCHAR(MAX) trả về vectơ dưới dạng chuỗi, trong khi CAST to JSON trả về vectơ dưới dạng mảng JSON, rất hữu ích cho khả năng tương tác với các ứng dụng và API.
Thực hiện tìm kiếm hàng xóm gần nhất chính xác (k-NN)
Tìm kiếm hàng xóm gần nhất chính xác (k-NN) liên quan đến việc tính toán khoảng cách giữa vectơ truy vấn và tất cả các vectơ trong tập dữ liệu của bạn, sau đó trả về k kết quả khớp gần nhất. Phương pháp này đảm bảo kết quả chính xác nhưng có thể đòi hỏi nhiều tính toán đối với các bộ dữ liệu lớn.
Sử dụng chức VECTOR_DISTANCE năng
Hàm đo VECTOR_DISTANCE lường sự tương đồng giữa hai vectơ bằng cách sử dụng một chỉ số khoảng cách được chỉ định:
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;
Truy vấn này tạo nhúng cho văn bản "Phong cách âm nhạc Pink Floyd" bằng cách sử dụng mô hình Ada2Embeddings, sau đó tìm 10 sản phẩm có nhúng giống với truy vấn nhất. Hàm này VECTOR_DISTANCE tính toán khoảng cách cosin giữa vectơ truy vấn và nhúng của mỗi sản phẩm, với khoảng cách nhỏ hơn cho thấy sự tương đồng lớn hơn.
Chọn chỉ số khoảng cách
SQL Server 2025 hỗ trợ một số chỉ số khoảng cách:
- Sự tương đồng cosin: Đo góc giữa các vectơ, lý tưởng cho việc nhúng văn bản
- Khoảng cách Euclid: Đo khoảng cách đường thẳng trong không gian vectơ
- Sản phẩm chấm: Hữu ích cho các vectơ chuẩn hóa
Xác định thời điểm sử dụng tìm kiếm chính xác
Bạn nên tìm kiếm chính xác khi:
- Bạn có ít hơn 50.000 vectơ để tìm kiếm
- Vị ngữ truy vấn của bạn lọc tập dữ liệu theo kích thước có thể quản lý được
- Bạn yêu cầu khả năng thu hồi hoàn hảo (độ chính xác 100%)
- Chi phí tính toán bổ sung có thể chấp nhận được
Triển khai tìm kiếm lân cận gần nhất (ANN)
Đối với các bộ dữ liệu lớn hơn, tìm kiếm hàng xóm gần nhất (ANN) gần đúng cung cấp sự cân bằng giữa tốc độ và độ chính xác. SQL Server 2025 triển khai ANN bằng thuật toán DiskANN, thuật toán này tạo ra một chỉ mục dựa trên đồ thị để điều hướng vectơ hiệu quả.
Tìm hiểu về khả năng nhớ lại
Thu hồi đo lường tỷ lệ hàng xóm gần nhất thực sự mà thuật toán ANN xác định so với tìm kiếm chính xác. Thu hồi 1.0 (100%) có nghĩa là tìm kiếm gần đúng trả về kết quả giống như tìm kiếm chính xác. Trên thực tế, giá trị thu hồi trên 0,95 thường mang lại kết quả tuyệt vời cho các ứng dụng AI đồng thời mang lại những cải thiện đáng kể về hiệu suất.
Tạo chỉ mục vectơ
Để bật tìm kiếm ANN, hãy tạo chỉ mục vectơ trên cột vectơ của bạn:
CREATE VECTOR INDEX idx_product_embedding
ON products(embedding);
Mã này tạo chỉ mục vectơ trên cột nhúng bằng thuật toán DiskANN. Chỉ mục này cải thiện hiệu suất của các tìm kiếm lân cận gần nhất gần đúng trên các tập dữ liệu lớn bằng cách tạo cấu trúc biểu đồ để điều hướng vectơ hiệu quả.
Chỉ mục vectơ trong SQL Server 2025:
- Sử dụng thuật toán DiskANN để tìm kiếm dựa trên biểu đồ hiệu quả
- Hỗ trợ bộ nhớ và tài nguyên CPU hạn chế
- Cân bằng I/O ổ đĩa, mức sử dụng bộ nhớ và hiệu suất truy vấn
- Tự động cập nhật khi dữ liệu thay đổi
Sử dụng chức VECTOR_SEARCH năng
Chức năng này VECTOR_SEARCH thực hiện các tìm kiếm lân cận gần nhất:
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;
Truy vấn này thực hiện tìm kiếm hàng xóm gần nhất gần đúng bằng cách sử dụng chỉ mục vectơ đã tạo trước đó. Chức năng này VECTOR_SEARCH sử dụng thuật toán DiskANN để tìm 10 sản phẩm tương tự nhất mà không cần quét tất cả các vectơ, cung cấp cải thiện hiệu suất cho các bộ dữ liệu lớn trong khi vẫn duy trì độ chính xác cao.
Xem xét lợi ích hiệu suất
Tìm kiếm ANN cung cấp:
- Thực hiện truy vấn nhanh hơn: Đặc biệt đối với các bộ dữ liệu có hàng triệu vectơ
- Tiêu thụ tài nguyên thấp hơn: Giảm mức sử dụng CPU và bộ nhớ so với tìm kiếm chính xác
- Khả năng mở rộng: Xử lý các bộ dữ liệu vectơ quy mô lớn một cách hiệu quả
- Khả năng thu hồi cao: Thường đạt tỷ lệ thu hồi trên 95%, đảm bảo kết quả chất lượng
Xây dựng kịch bản tìm kiếm kết hợp
SQL Server 2025 hỗ trợ kết hợp tìm kiếm vectơ với các hoạt động SQL truyền thống cho các tình huống tìm kiếm kết hợp.
Kết hợp tìm kiếm ngữ nghĩa và từ khóa
Bạn có thể thực hiện tìm kiếm ngữ nghĩa bằng cách sử dụng vectơ đồng thời áp dụng các bộ lọc truyền thống:
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;
Tìm kiếm kết hợp này kết hợp tìm kiếm tương đồng ngữ nghĩa với lọc SQL truyền thống. Đầu tiên, nó tìm thấy 20 sản phẩm tương tự nhất về mặt ngữ nghĩa với "giày chạy bộ thoải mái", sau đó lọc các kết quả đó để chỉ bao gồm các mặt hàng giày dép có giá từ 50 USD đến 150 USD. Cách tiếp cận này cho phép nhắm mục tiêu chính xác trong khi sử dụng hiểu ngữ nghĩa.
Tích hợp tìm kiếm toàn văn và vector
Kết hợp tìm kiếm toàn văn với tìm kiếm vectơ để có kết quả toàn diện:
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);
Truy vấn này kết hợp tìm kiếm vectơ với tìm kiếm toàn văn bản. Nó tìm thấy các sản phẩm tương tự về mặt ngữ nghĩa với "vật liệu bền vững" bằng cách sử dụng nhúng vector, sau đó kết hợp với kết quả tìm kiếm toàn văn cho các từ khóa "bền vững" hoặc "thân thiện với môi trường" trong mô tả. Bảng xếp hạng cuối cùng kết hợp cả hai điểm số với một công thức có trọng số (60% tương tự ngữ nghĩa, 40% khớp từ khóa).
Áp dụng các phương pháp hay nhất
Khi triển khai tìm kiếm vectơ trong SQL Server 2025:
- Chọn độ chính xác phù hợp: Sử dụng độ chính xác một nửa cho kích thước lớn hơn khi lưu trữ là mối quan tâm
- Chỉ số chiến lược: Tạo chỉ mục vectơ trên các cột thường xuyên được tìm kiếm
- Theo dõi thu hồi: Kiểm tra các truy vấn ANN của bạn để đảm bảo tỷ lệ thu hồi có thể chấp nhận được cho trường hợp sử dụng của bạn
- Tối ưu hóa truy vấn: Sử dụng các bộ lọc thích hợp để giảm không gian tìm kiếm trước khi thao tác vectơ
- Hoạt động hàng loạt: Tạo và chèn nhúng theo lô để có hiệu suất tốt hơn
Bằng cách sử dụng các chức năng vectơ này, bạn có thể xây dựng các ứng dụng được hỗ trợ bởi AI để hiểu các mối quan hệ ngữ nghĩa, cung cấp các đề xuất thông minh và cung cấp trải nghiệm tìm kiếm ngôn ngữ tự nhiên—tất cả đều nằm trong nền tảng SQL Server đáng tin cậy.