Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk: Database SQL SQL Server 2025 (17.x)
Azure SQL Database
Azure SQL Managed Instance
di Microsoft Fabric
Artikel ini berisi tanya jawab umum tentang vektor dan penyematan di SQL Database Engine.
Nota
Fitur vektor tersedia di Azure SQL Managed Instance yang dikonfigurasi dengan kebijakan Always-up-to-date .
Bagaimana cara terus menyematkan yang terbaru?
Perbarui embedding setiap kali data dasar yang mereka wakili berubah. Ini sangat penting untuk skenario di mana data bersifat dinamis, seperti konten yang dihasilkan pengguna atau database yang sering diperbarui. Untuk mengetahui lebih lanjut tentang beberapa strategi memperbarui embedding, lihat basis data dan AI: solusi dalam menjaga embedding selalu mutakhir.
Apa itu penyimpanan dan pemrosesan overhead untuk pencarian vektor?
Overhead untuk pencarian vektor terutama melibatkan penyimpanan jenis data vektor dan sumber daya komputasi yang diperlukan untuk pengindeksan dan pencarian. Jenis data vektor dirancang agar efisien dalam hal penyimpanan, tetapi overhead yang tepat dapat bervariasi berdasarkan ukuran - jumlah dimensi - vektor yang disimpan.
Untuk informasi selengkapnya tentang cara memilih ukuran vektor yang tepat, tinjau Menyematkan model dan dimensi: mengoptimalkan rasio penggunaan sumber daya performa.
Halaman data SQL Server dapat menyimpan hingga 8.060 byte, sehingga ukuran vektor memengaruhi berapa banyak vektor yang dapat disimpan dalam satu halaman. Misalnya, jika Anda memiliki vektor dengan 1.024 dimensi, dan setiap dimensi adalah float presisi tunggal (4 byte), ukuran total vektor adalah 4.104 byte (payload 4096 byte + header 8 byte). Ini membatasi jumlah vektor yang dapat pas dalam satu halaman menjadi satu.
Model penyematan apa yang harus saya gunakan, dan kapan?
Ada banyak model penyematan yang tersedia, dan pilihan mana yang akan digunakan tergantung pada kasus penggunaan tertentu dan jenis data yang sedang diproses. Beberapa model mendukung beberapa bahasa, sementara yang lain mendukung data multimodal (teks, gambar, dll.). Beberapa hanya tersedia secara online, yang lain dapat dijalankan secara lokal.
Selain model itu sendiri, pertimbangkan ukuran model dan jumlah dimensi yang dihasilkannya. Model yang lebih besar mungkin memberikan akurasi yang lebih baik tetapi membutuhkan lebih banyak sumber daya komputasi dan ruang penyimpanan, tetapi dalam banyak kasus memiliki lebih banyak dimensi tidak benar-benar mengubah kualitas sebanyak itu, untuk kasus penggunaan umum.
Untuk informasi selengkapnya tentang cara memilih model penyematan yang tepat, lihat Menyematkan model dan dimensi: mengoptimalkan rasio penggunaan sumber daya performa.
Bagaimana cara memutuskan kapan menggunakan nilai floating-point presisi tunggal (4-byte) atau presisi setengah (2-byte) untuk vektor?
Saat menyimpan vektor penyematan dalam database, pilihan antara float presisi tunggal (float32) dan setengah presisi (float16) sering kali berkaitan dengan menyeimbangkan efisiensi penyimpanan dengan ketelitian numerik.
Untungnya, embedding biasanya tidak terlalu sensitif terhadap perubahan kecil dalam presisi.
Penyematan adalah representasi vektor padat yang digunakan dalam tugas seperti pencarian semantik, sistem rekomendasi, dan pemrosesan bahasa alami. Vektor ini sering merupakan output dari jaringan neural, yang secara inheren toleran terhadap variasi numerik kecil. Akibatnya, mengurangi presisi dari float32 ke float16 biasanya berdampak minimal pada kualitas perbandingan kesamaan atau tugas hilir—terutama selama inferensi.
Penggunaan float16 dapat secara signifikan mengurangi penggunaan penyimpanan dan memori, yang sangat bermanfaat saat bekerja dengan himpunan data penyematan skala besar.
Bagaimana dengan vektor jarang?
Saat ini, jenis data vektor di SQL Database Engine dirancang untuk vektor padat, yang merupakan array angka floating-point di mana sebagian besar elemen bukan nol. Vektor jarang, yang berisi sejumlah besar elemen nol, tidak didukung secara asli.
Apa saja tolok ukur performa untuk pencarian vektor SQL?
Performa dapat sangat bervariasi berdasarkan kasus penggunaan tertentu, ukuran himpunan data, dan kompleksitas kueri. Namun, kemampuan pencarian vektor SQL Server dirancang agar efisien dan dapat diskalakan, memanfaatkan teknik pengindeksan untuk mengoptimalkan performa pencarian.
Bagaimana jika saya memiliki lebih dari satu kolom yang ingin saya gunakan untuk menghasilkan embedding?
Jika Anda memiliki beberapa kolom yang ingin Anda gunakan untuk menghasilkan penyematan, Anda memiliki dua opsi utama:
- Membuat satu penyematan untuk setiap kolom, atau
- Gabungkan nilai beberapa kolom ke dalam satu string lalu buat satu penyematan untuk string yang digabungkan tersebut.
Untuk informasi selengkapnya tentang dua opsi dan pertimbangan desain database terkait, lihat Penyematan Pemodelan Yang Efisien dan Elegan.
Bagaimana dengan peringkat ulang?
Peringkat ulang adalah teknik yang digunakan untuk meningkatkan relevansi hasil pencarian dengan mengevaluasi kembali hasil awal berdasarkan kriteria atau model tambahan. Di SQL Database Engine, Anda dapat menerapkan peringkat ulang dengan menggabungkan pencarian vektor dengan teks lengkap (yang menyediakan peringkat BM25) atau kueri SQL tambahan atau model pembelajaran mesin untuk menyempurnakan hasil berdasarkan logika bisnis atau preferensi pengguna tertentu.
Untuk informasi selengkapnya, tinjau Meningkatkan Kemampuan Pencarian dengan Pencarian Hibrid dan Peringkat Ulang RRF.
Kapan menggunakan AI Search (sekarang AI Foundry) vs menggunakan SQL untuk skenario pencarian vektor?
AI Search (sekarang AI Foundry) adalah layanan khusus yang dirancang untuk skenario pencarian tingkat lanjut, termasuk pencarian vektor, pemrosesan bahasa alami, dan wawasan berbasis AI. Ini menyediakan serangkaian fitur komprehensif untuk membangun aplikasi pencarian cerdas, seperti dukungan bawaan untuk berbagai model AI, algoritma peringkat tingkat lanjut, dan integrasi dengan layanan AI lainnya.
SQL Database Engine menyediakan kemampuan untuk menyimpan segala jenis data dan menjalankan segala jenis kueri: terstruktur dan tidak terstruktur, dan untuk melakukan pencarian vektor pada data tersebut. Ini adalah pilihan yang baik untuk skenario di mana Anda perlu melakukan pencarian di semua data ini bersama-sama, dan Anda tidak ingin menggunakan layanan terpisah untuk pencarian yang akan mempersulit arsitektur Anda. Mesin SQL Database menawarkan fitur keamanan perusahaan penting untuk memastikan data selalu dilindungi, seperti keamanan tingkat baris (RLS), masking data dinamis (DDM), Always Encrypted, tabel ledger yang tidak dapat diubah, dan enkripsi data transparan (TDE).
Berikut adalah contoh kueri tunggal yang dapat dijalankan di Azure SQL atau SQL Server yang menggabungkan data vektor, geospasial, terstruktur, dan tidak terstruktur sekaligus. Kueri sampel mengambil 50 restoran paling relevan berdasarkan deskripsi restoran, lokasi restoran, dan preferensi pengguna, menggunakan pencarian vektor untuk deskripsi dan pencarian geospasial untuk lokasi, pemfilteran juga berdasarkan angka bintang, jumlah ulasan, kategori dan sebagainya:
DECLARE @p AS GEOGRAPHY = GEOGRAPHY::Point(47.6694141, -122.1238767, 4326);
DECLARE @e AS VECTOR(1536) = AI_GENERATE_EMBEDDINGS('I want to eat a good focaccia' USE MODEL Text3Embedding);
SELECT TOP (50) b.id AS business_id,
b.name AS business_name,
r.id AS review_id,
r.stars,
r.review,
VECTOR_DISTANCE('cosine', re.embedding, @e) AS semantic_distance,
@p.STDistance(geo_location) AS geo_distance
FROM dbo.reviews AS r
INNER JOIN dbo.reviews_embeddings AS re
ON r.id = re.review_id
INNER JOIN dbo.business AS b
ON r.business_id = b.id
WHERE b.city = 'Redmond'
AND @p.STDistance(b.geo_location) < 5000 -- 5 km
AND r.stars >= 4
AND b.reviews >= 30
AND JSON_VALUE(b.custom_attributes, '$.local_recommended') = 'true'
AND VECTOR_DISTANCE('cosine', re.embedding, @e) < 0.2
ORDER BY semantic_distance DESC;
Dalam sampel sebelumnya, pencarian Exact Nearest Neighbor (ENN) digunakan untuk menemukan ulasan yang paling relevan berdasarkan jarak semantik penyematan, sekaligus memfilter berdasarkan jarak geospasial dan atribut bisnis lainnya. Kueri ini menunjukkan kekuatan menggabungkan pencarian vektor dengan kemampuan SQL tradisional untuk menciptakan pengalaman pencarian yang kaya dan efisien.
Jika Anda ingin menggunakan pencarian Perkiraan Tetangga Terdekat (ANN), Anda dapat membuat indeks vektor pada reviews_embeddings tabel dan menggunakan VECTOR_SEARCH fungsi untuk melakukan pencarian.
Di mana saya dapat menemukan lab mandiri untuk mempelajari selengkapnya tentang penyematan dan pencarian vektor?
Tinjau lab mandiri Azure SQL Cryptozoology AI Embeddings.