Pilih layanan Azure untuk pencarian vektor
Pencarian vektor adalah metode untuk menemukan informasi yang disimpan dalam database dalam bentuk vektor. Vektor adalah grup angka yang mewakili fitur atau karakteristik media, seperti teks atau gambar. Vektor adalah kemajuan signifikan atas metode pencarian berbasis kata kunci tradisional. Mereka menawarkan hasil yang lebih cepat dan lebih akurat dengan memahami hubungan semantik dalam informasi.
Azure menawarkan beberapa cara untuk menyimpan dan mencari data vektorisasi. Artikel ini membantu arsitek dan pengembang yang perlu memahami dan memilih layanan Azure yang tepat untuk pencarian vektor untuk aplikasi mereka.
Artikel ini membandingkan layanan berikut berdasarkan kemampuan pencarian vektor mereka:
- Pencarian Azure AI
- Azure Cosmos DB for NoSQL
- Azure Cosmos DB untuk MongoDB (vCore)
- Azure Cosmos DB for PostgreSQL
- Azure Database untuk PostgreSQL
- Azure SQL Database
Arsitek dan pengembang harus membandingkan layanan yang tersedia dari perspektif persyaratan sistem dalam Memilih layanan kandidat dan dalam matriks Kemampuan.
Memilih layanan kandidat
Bagian ini membantu Anda memilih layanan yang paling mungkin untuk kebutuhan Anda. Untuk mempersempit pilihan, mulailah dengan mempertimbangkan persyaratan sistem.
Persyaratan utama
Saat memutuskan apakah akan menggunakan solusi database tradisional atau Azure AI layanan Pencarian, pertimbangkan kebutuhan Anda dan apakah Anda dapat melakukan pencarian vektor langsung atau real time pada data Anda. Database relasional atau NoSQL tradisional paling cocok untuk skenario Anda jika Anda sering mengubah nilai di bidang vektorisasi dan perubahan perlu dicari secara real time atau mendekati real time. Demikian juga, menggunakan database yang ada mungkin menjadi solusi terbaik bagi Anda untuk memenuhi target performa Anda. Di sisi lain, jika beban kerja Anda tidak memerlukan pencarian vektor real time atau mendekati real time, dan Anda menerima pengelolaan indeks vektor, Pencarian AI dapat menjadi pilihan yang menarik.
Jika Anda memilih solusi database tradisional, jenis layanan database tertentu yang Anda putuskan untuk digunakan sebagian besar tergantung pada kumpulan keterampilan tim Anda dan database yang saat ini Anda operasikan. Jika Anda sudah menggunakan jenis database tertentu, seperti MongoDB misalnya, maka menggunakan jenis database yang sama mungkin menjadi solusi termampu untuk skenario Anda. Seperti yang ditunjukkan di bagian Matriks kemampuan, setiap layanan database memiliki beberapa kemampuan dan batasan unik untuk pencarian vektor. Tinjau informasi tersebut untuk memastikan bahwa jenis database pilihan Anda mendukung fungsionalitas yang Anda butuhkan.
Jika kekhawatiran biaya adalah faktor pendorong, mempertahankan desain Anda yang ada kemungkinan paling sesuai untuk skenario Anda karena memperkenalkan layanan baru atau instans lain dari layanan database dapat menambahkan biaya bersih dan kompleksitas baru. Menggunakan database Anda saat ini untuk pencarian vektor kemungkinan memengaruhi biaya Anda lebih murah daripada menggunakan layanan khusus.
Jika Anda memilih untuk menggunakan database tradisional alih-alih Pencarian AI, beberapa fitur pencarian tingkat lanjut tidak tersedia secara default. Misalnya, jika Anda ingin melakukan reranking atau pencarian hibrid, aktifkan fungsionalitas tersebut melalui Transact-SQL (T-SQL) atau pengodean lainnya.
Matriks kemampuan
Tabel di bagian ini meringkas perbedaan utama dalam kemampuan.
Fitur Dasar
Dukungan asli untuk jenis data vektor, perkiraan indeks vektor tetangga terdekat (ANN), batas dimensi vektor, beberapa bidang vektor, dan beberapa indeks vektor terkadang berbeda antara layanan. Persyaratan beban kerja Anda mungkin memerlukan beberapa fitur khusus ini. Pahami fitur vektor dasar setiap layanan Azure, seperti yang diperlihatkan dalam tabel berikut.
Kemampuan | Azure Cosmos DB for PostgreSQL | Azure Cosmos DB for NoSQL | Azure Cosmos DB untuk MongoDB (vCore) | Azure Database for PostgreSQL (Flex) | Pencarian Azure AI | Database Azure SQL |
---|---|---|---|---|---|---|
Pencarian vektor bawaan | Ya 1 | Ya | Ya 2 | Ya 1 | Ya 3 | Ya 4 |
Jenis data vektor | Ya | Ya | Ya | Ya | Ya | Tidak |
Batas dimensi 6 | 16.000 7 atau 2000 | 5058 atau 4096 | 2.000 | 16.000 7 atau 2000 | 3.072 | 1998 (pratinjau)5 |
Beberapa bidang vektor | Ya | Ya | No | Ya | Ya | Ya |
Beberapa indeks vektor | Ya | Ya | No | Ya | Ya | Ya |
- "pgvector" mendukung pencarian vektor, yang merupakan ekstensi PostgreSQL.
- Menggunakan pencarian vektor pada penyematan di Azure Cosmos DB untuk MongoDB vCore
- Vektor dalam Pencarian Azure AI
- Pencarian vektor asli tersedia dengan pratinjau adopsi awal Azure SQL Database
- Vektor dapat disimpan dalam kolom atau variabel VARBINARY(8000).
- Menyematkan model dari OpenAI, 1536 untuk text-embedding-ada-002 dan text-embedding-3-small, dan 3072 untuk text-embedding-3-large. Untuk model penyematan multimodal Azure AI Vision, 1024 untuk gambar dan teks.
- Vektor dapat memiliki hingga 16.000 dimensi. Tetapi indeks yang menggunakan "IVFFlat" dan "HNSW" mendukung vektor dengan hingga 2.000 dimensi.
- Vektor yang diindeks dengan jenis indeks datar dapat mencapai paling banyak 505 dimensi. Vektor yang diindeks dengan jenis indeks quantizedFlat atau DiskANN dapat mencapai paling banyak 4.096 dimensi.
Metode pencarian
Beban kerja sering kali perlu menggabungkan pencarian vektor dengan pencarian teks lengkap atau bahkan pencarian hibrid (pencarian teks lengkap atau pencarian semantik ditambah pencarian vektor). Kombinasi pencarian hibrid dan reranking mencapai akurasi tinggi untuk beban kerja. Anda dapat menerapkan pencarian hibrid dan reranking secara manual dengan kode Anda sendiri, atau Anda dapat mempertimbangkan bagaimana penyimpanan vektor Anda mendukung persyaratan beban kerja ini.
Metode pencarian | Azure Cosmos DB for PostgreSQL | Azure Cosmos DB for NoSQL | Azure Cosmos DB untuk MongoDB (vCore) | Azure Database for PostgreSQL (Flex) | Pencarian Azure AI | Database Azure SQL |
---|---|---|---|---|---|---|
Pencarian teks-lengkap | Ya 1 | No | Ya 2 | Ya 1 | Ya 3 | Ya 4 |
Pencarian hibrid | Ya 5 | Tidak | Tidak | Ya 5 | Ya 6 | Ya 7 |
Reranking bawaan | Tidak | No | No | Tidak | Ya 8 | No |
- Pencarian Teks Lengkap PostgreSQL
- Mencari dan mengkueri dengan indeks teks di Azure Cosmos DB untuk MongoDB vCore
- Mulai menggunakan Pencarian Teks Lengkap
- Data vektor di SQL Server
- Tidak disediakan sebagai fitur kelas satu tetapi kode sampel disediakan.
- Pencarian hibrid (kombinasi pencarian teks lengkap, pencarian vektor, dan peringkat semantik) disediakan sebagai fitur kelas satu.
- Contoh pencarian hibrid untuk database Azure SQL dan SQL Server.
- Reranking yang disebut Semantic Ranking adalah fitur kelas satu untuk mereranking hasil pencarian teks lengkap dan/atau pencarian vektor.
Algoritma pengindeksan data vektor
Pengindeksan data vektor adalah kemampuan untuk menyimpan dan mengambil vektor secara efisien. Kemampuan ini penting karena pengindeksan memengaruhi kecepatan dan akurasi pencarian kesamaan dan kueri tetangga terdekat pada sumber data.
Indeks biasanya didasarkan pada tetangga terdekat k yang lengkap (Ek-NN) atau algoritma ANN. Ek-NN melakukan pencarian lengkap pada semua titik data satu per satu dan mengembalikan tetangga terdekat K yang akurat. Ek-NN bekerja dalam milidetik dengan sejumlah kecil data tetapi dapat menyebabkan latensi untuk data dalam jumlah besar.
DiskANN, HNSW , dan IVFFlat adalah indeks algoritma ANN. Memilih strategi pengindeksan yang sesuai melibatkan pertimbangan yang cermat dari berbagai faktor seperti sifat himpunan data, persyaratan spesifik kueri, dan sumber daya yang tersedia. DiskANN dapat beradaptasi dengan perubahan dalam himpunan data dan menyimpan sumber daya komputasi. HNSW unggul dalam sistem yang memerlukan respons kueri cepat dan dapat beradaptasi dengan perubahan dalam himpunan data. IVFFlat efektif di lingkungan di mana sumber daya perangkat keras terbatas, atau volume kueri tidak tinggi.
Pahami jenis pengindeksan data vektor apa yang disediakan dari tabel berikut.
Pendekatan pengindeksan | Azure Cosmos DB for PostgreSQL | Azure Cosmos DB for NoSQL | Azure Cosmos DB untuk MongoDB (vCore) | Azure Database for PostgreSQL (Flex) | Pencarian Azure AI | Database Azure SQL |
---|---|---|---|---|---|---|
DiskANN | Tidak | Ya | No | No | No | Tidak |
Tetangga Terdekat K Lengkap (EKNN) | Ya | Ya | Ya | Ya | Ya | Ya |
Dunia Kecil yang Dapat Dinavigasi Hierarkis (HNSW) | Ya | Tidak | Ya (pratinjau)1 | Ya | Ya | Tidak |
IVFflat | Ya | No | Ya | Ya | No | Tidak |
Lainnya | - | datar, quantizedFlat2 | Batasan bidang vektor 3 Batasan indeks vektor 4 |
- | - | Pustaka eksternal tersedia5 |
- Azure Cosmos DB for MongoDB - Gambaran umum pencarian vektor
- Kebijakan pengindeksan vektor
- Hanya satu bidang vektor yang tersedia per kontainer.
- Hanya satu indeks vektor yang tersedia per kontainer.
- Indeks dapat dibuat dengan bantuan pustaka eksternal seperti Scikit Learn atau FAISS
Kesamaan dan kemampuan perhitungan jarak
Ada kesamaan Kosinus, produk Dot, dan metode perhitungan jarak Euclidean untuk pencarian vektor. Metode ini digunakan untuk menghitung kesamaan antara dua vektor atau jarak antara dua vektor.
Manfaat analisis data awal dari metrik dan jarak Euclidean, yang memungkinkan ekstraksi wawasan yang berbeda tentang struktur data, sedangkan klasifikasi teks umumnya berkinerja lebih baik di bawah jarak Euclidean. Pengambilan teks yang paling mirip dengan teks tertentu biasanya berfungsi lebih baik dengan kesamaan kosinus.
Penyematan Azure OpenAI Service mengandalkan kesamaan kosinus dengan kesamaan komputasi antara dokumen dan kueri.
Perhitungan perbandingan vektor bawaan | Azure Cosmos DB for PostgreSQL | Azure Cosmos DB for NoSQL | Azure Cosmos DB untuk MongoDB (vCore) | Azure Database for PostgreSQL (Flex) | Pencarian Azure AI | Database Azure SQL |
---|---|---|---|---|---|---|
Kesamaan kosinus | Ya | Ya1 | Ya | Ya | Ya | Ya 2 |
Jarak euclidean (jarak L2) | Ya | Ya1 | Ya | Ya | Ya | Ya 2 |
Produk titik | Ya | Ya1 | Ya | Ya | Ya | Ya 2 |
- Perhitungan Jarak Vektor untuk Azure Cosmos DB untuk NoSQL.
- Contoh perhitungan jarak untuk database Azure SQL dan SQL Server.
Integrasi dengan Azure OpenAI dan komponen lainnya
Saat menerapkan pencarian vektor, Anda juga dapat mempertimbangkan untuk menautkan dengan komponen Microsoft lainnya. Misalnya, Azure OpenAI Service membantu Anda membuat vektor untuk data Anda dan memasukkan kueri untuk pencarian kesamaan vektor.
Kemampuan | Azure Cosmos DB for PostgreSQL | Azure Cosmos DB for NoSQL | Azure Cosmos DB untuk MongoDB (vCore) | Azure Database for PostgreSQL (Flex) | Pencarian Azure AI | Database Azure SQL |
---|---|---|---|---|---|---|
Layanan Azure OpenAI - tambahkan data Anda sendiri | Tidak | Tidak | Ya 1 | No | Ya 2 | No |
Penyematan vektor dengan Azure OpenAI | Tidak | No | Tidak | Ya 3 | Ya 4 | Ya 5 |
Integrasi dengan alur perintah | Tidak | No | No | Tidak | Ya 6 | No |
Integrasi dengan Semantic Kernel | Ya 7 | Ya8 | Ya9 | Ya 7 | Ya 10 | Ya 11 |
- Azure Cosmos DB for MongoDB (vCore) didukung sebagai sumber data untuk Azure OpenAI di Data Anda.
- Azure AI Search didukung sebagai sumber data untuk Azure OpenAI di Data Anda.
- Ekstensi Azure AI (pratinjau) tersedia.
- Azure AI Search menyediakan keterampilan untuk mem-vektorisasi teks yang dipotong.
- Anda dapat membuat prosedur tersimpan untuk penyebaran model penyematan Anda.
- Didukung sebagai database vektor di alat Pencarian Vector DB.
- Didukung sebagai konektor memori, dan konektor database vektor (C#).
- Didukung sebagai konektor memori, dan konektor database vektor (C#, Python).
- Didukung sebagai konektor database vektor (C#, Python).
- Didukung sebagai konektor memori, dan konektor database vektor (C#, Python).
- Didukung sebagai konektor memori.
Kontributor
Artikel ini dikelola oleh Microsoft. Ini awalnya ditulis oleh kontributor berikut.
Penulis utama:
- Keita Onabuta | Insinyur Pelanggan Senior
- Gary Lee | Insinyur Pelanggan Senior
Kontributor lain:
- Kruti Mehta | Teknisi Pelanggan
Untuk melihat profil LinkedIn non-publik, masuk ke LinkedIn.
Langkah selanjutnya
Menerapkan penambangan pengetahuan dengan Azure AI Search. Jalur pembelajaran ini mengeksplorasi cara menggunakan Azure AI Search.
Sumber daya terkait
- Memahami model penyimpanan data
- Pilihan teknologi untuk solusi Azure
- Mengumumkan Dukungan EAP for Vector di Azure SQL Database
- Dukungan Vektor Asli di Azure SQL dan SQL Server
- Database vektor di Azure Cosmos DB
- Memperkenalkan kemampuan database vektor di Azure Cosmos DB untuk NoSQL
- Pencarian Vektor di Azure Cosmos DB untuk NoSQL
- Sampel Database Azure Vector