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. Praktik ini sangat penting untuk skenario di mana data bersifat dinamis, seperti konten yang dihasilkan pengguna atau database yang sering diperbarui. Untuk informasi selengkapnya tentang beberapa strategi untuk terus memperbarui penyematan, lihat Database dan AI: solusi untuk menjaga penyematan tetap diperbarui.
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 4.096 byte + header 8 byte). Ukuran ini membatasi jumlah vektor yang pas dalam satu halaman menjadi satu.
Model penyematan apa yang harus saya gunakan, dan kapan?
Banyak model penyematan yang tersedia. Pilihannya tergantung pada kasus penggunaan spesifik Anda dan jenis data yang Anda proses. Beberapa model mendukung beberapa bahasa, sementara yang lain mendukung data multimodal (teks, gambar, dan banyak lagi). Beberapa model hanya tersedia secara online, sementara yang lain dapat berjalan 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 memerlukan lebih banyak sumber daya komputasi dan ruang penyimpanan. Dalam banyak kasus, memiliki lebih banyak dimensi tidak secara signifikan mengubah kualitas 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 harus menggunakan nilai floating-point presisi tunggal (4-byte) versus setengah presisi (2 byte) untuk vektor?
Ketika Anda menyimpan vektor embedding dalam database, Anda sering kali perlu menyeimbangkan efisiensi penyimpanan dengan keakuratan numerik saat memilih antara presisi tunggal (float32) dan presisi setengah (float16) float.
Untungnya, penyematan 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 berasal 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. Vektor ini adalah array angka floating-point di mana kebanyakan elemen tidak sama dengan 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 efisien dan dapat diskalakan. Mereka menggunakan teknik pengindeksan untuk mengoptimalkan performa pencarian.
Bagaimana jika saya memiliki lebih dari satu kolom yang ingin saya gunakan untuk menghasilkan penyematan?
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 kedua opsi ini dan pertimbangan desain database terkait, lihat Penyematan Pemodelan Yang Efisien dan Elegan.
Bagaimana dengan peringkat ulang?
Peringkat ulang meningkatkan relevansi hasil pencarian dengan mengevaluasi kembali hasil awal berdasarkan kriteria atau model tambahan. Di Mesin SQL Database, Anda dapat menerapkan peringkat ulang dengan menggabungkan pencarian vektor dengan pencarian teks lengkap (yang menyediakan peringkat BM25), atau dengan menggunakan kueri SQL tambahan atau model pembelajaran mesin untuk menyempurnakan hasil berdasarkan logika bisnis atau preferensi pengguna tertentu.
Untuk informasi selengkapnya, lihat Meningkatkan Kemampuan Pencarian dengan Pencarian Hibrid dan Peringkat Ulang RRF.
Teknik peringkat ulang yang lebih halus disebut peringkat ulang semantik. Peringkat ulang semantik bergantung pada model khusus (seringkali merupakan cross-encoder atau pendekatan interaksi akhir) untuk membandingkan setiap segmen kandidat terhadap kueri dan menetapkan skor relevansi terperinci. Dengan menilai kembali bagian-bagian ini, pemeringkat ulang memastikan bahwa hasil yang paling tepat, berguna, dan relevan naik ke atas.
Untuk sampel penggunaan model peringkat ulang, lihat Model Reranking Semantik dengan model Azure SQL, SQL Server 2025, dan Cohere Rerank.
Kapan saya harus menggunakan AI Search (sekarang AI Foundry) versus 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. Anda dapat melakukan pencarian vektor pada data tersebut. Ini adalah pilihan yang baik untuk skenario di mana Anda perlu mencari 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 Anda jalankan 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. Ini menggunakan pencarian vektor untuk deskripsi dan pencarian geospasial untuk lokasi, pemfilteran juga berdasarkan angka bintang, jumlah ulasan, kategori, dan atribut lainnya.
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) 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.