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.
Pencarian vektor adalah pendekatan dalam pengambilan informasi yang mendukung pengindeksan dan eksekusi kueri atas representasi numerik konten. Karena kontennya numerik daripada teks biasa, pencocokan didasarkan pada vektor yang paling mirip dengan vektor kueri, yang memungkinkan pencocokan di seluruh:
- kemiripan semantik atau konseptual ("anjing" dan "kaninus", secara konseptual mirip namun berbeda secara linguistik)
- konten multibahasa ("anjing" dalam bahasa Inggris dan "hund" dalam bahasa Jerman)
- beberapa jenis konten ("anjing" dalam teks biasa dan foto anjing dalam file gambar)
Artikel ini menyediakan pengantar tingkat tinggi untuk dukungan vektor di Azure AI Search. Ini juga menjelaskan integrasi dengan layanan Azure lainnya dan mencakup terminologi dan konsep yang terkait dengan pengembangan pencarian vektor.
Kami menyarankan artikel ini untuk latar belakang, tetapi jika Anda lebih suka memulai, ikuti langkah-langkah berikut:
- Berikan penyematan untuk indeks Anda atau hasilkan penyematan dalam alur pengindeks
- Membuat indeks vektor
- Menjalankan kueri vektor
Anda juga dapat memulai dengan panduan cepat vektor atau contoh kode di GitHub.
Skenario apa yang dapat didukung pencarian vektor?
Skenario untuk pencarian vektor meliputi:
Pencarian kemiripan. Kodekan teks menggunakan model penyematan seperti penyematan OpenAI atau model sumber terbuka seperti SBERT, dan ambil dokumen dengan kueri yang juga dikodekan sebagai vektor.
Cari di berbagai jenis konten (multimodal). Kodekan gambar dan teks menggunakan penyematan multimodal (misalnya, dengan OpenAI CLIP atau GPT-4 Turbo dengan Visi di Azure OpenAI) dan kueri ruang penyematan yang terdiri dari vektor dari kedua jenis konten.
Pencarian hibrid. Di Azure AI Search, kami menentukan pencarian hibrid sebagai vektor ganda dan eksekusi kueri kata kunci dalam permintaan yang sama. Dukungan vektor diimplementasikan di tingkat lapangan. Jika indeks berisi bidang vektor dan non-vektor, Anda bisa menulis kueri yang menargetkan keduanya. Kueri dijalankan secara paralel dan hasilnya digabungkan ke dalam satu respons dan diberi peringkat yang sesuai.
Pencarian multibahasa. Azure AI Search dirancang untuk ekstensibilitas. Jika Anda memiliki model penyematan dan model obrolan yang dilatih dalam beberapa bahasa, Anda dapat memanggilnya melalui keterampilan kustom atau bawaan di sisi pengindeksan, atau vektorizer di sisi kueri. Jika Anda memerlukan kontrol lebih besar atas terjemahan teks, Anda dapat melengkapi dengan kemampuan multi-bahasa yang didukung Azure AI Search untuk konten nonvektor, dalam skenario pencarian hibrid.
Pencarian vektor yang difilter. Permintaan kueri dapat menyertakan kueri vektor dan ekspresi filter. Filter berlaku untuk bidang teks dan numerik, dan berguna untuk filter metadata, dan menyertakan atau mengecualikan hasil pencarian berdasarkan kriteria filter. Meskipun bidang vektor tidak dapat difilter sendiri, Anda dapat menyiapkan teks atau bidang numerik yang dapat difilter. Mesin pencari dapat memproses filter sebelum atau sesudah kueri vektor dijalankan.
Database vektor. Azure AI Search menyimpan data yang Anda cari. Gunakan sebagai penyimpanan vektor murni kapan saja Anda memerlukan memori jangka panjang atau basis pengetahuan, atau data grounding untuk arsitektur Retrieval Augmented Generation (RAG), atau aplikasi apa pun yang menggunakan vektor.
Cara kerja pencarian vektor di Azure AI Search
Dukungan vektor mencakup pengindeksan, penyimpanan, dan melakukan kueri pada penyematan vektor dari indeks pencarian.
Diagram berikut menunjukkan alur kerja pengindeksan dan kueri untuk pencarian vektor.
Di sisi pengindeksan, Azure AI Search mengambil vektor embedding dan menggunakan algoritma tetangga terdekat untuk menempatkan vektor yang serupa berdekatan dalam indeks. Secara internal, ini membuat indeks vektor untuk setiap bidang vektor.
Bagaimana Anda mendapatkan penyematan dari konten sumber Anda ke Azure AI Search bergantung pada apakah Anda ingin melakukan pekerjaan dalam alur pengindeksan Azure AI Search, atau secara eksternal. Azure AI Search menawarkan pemotongan dan vektorisasi data terintegrasi dalam alur pengindeks. Anda masih menyediakan sumber daya (titik akhir dan informasi koneksi ke Azure OpenAI), tetapi Azure AI Search melakukan semua panggilan dan menangani transisi. Pendekatan ini memerlukan pengindeks, sumber data yang didukung, dan set keterampilan yang mendorong pemotongan dan penyematan. Jika Anda tidak ingin menggunakan pengindeks, Anda dapat menangani semua vektorisasi secara eksternal, lalu mendorong konten yang disiapkan sebelumnya ke bidang vektor dalam indeks pencarian.
Pada bagian kueri, dalam aplikasi klien Anda, Anda mengumpulkan input kueri dari pengguna, biasanya melalui alur kerja prompt. Anda kemudian dapat menambahkan langkah pengodean yang mengonversi input menjadi vektor, lalu mengirim kueri vektor ke indeks Anda di Azure AI Search untuk pencarian kesamaan. Seperti halnya pengindeksan, Anda dapat menyebarkan vektorisasi terintegrasi untuk mengonversi pertanyaan menjadi vektor. Untuk kedua pendekatan, Azure AI Search mengembalikan dokumen dengan tetangga terdekat (kNN) yang diminta k
dalam hasil.
Azure AI Search mendukung skenario hibrid yang menjalankan pencarian vektor dan kata kunci secara paralel, mengembalikan kumpulan hasil terpadu yang sering memberikan hasil yang lebih baik daripada hanya pencarian vektor atau kata kunci saja. Untuk konten baik hibrid, vektor, maupun non-vektor digabungkan ke dalam indeks yang sama, memungkinkan kueri berjalan secara berdampingan.
Availabilitas dan harga
Pencarian vektor tersedia sebagai bagian dari semua tingkatan Pencarian Azure AI di semua wilayah tanpa biaya tambahan.
Layanan yang lebih baru dibuat setelah 3 April 2024 mendukung kuota yang lebih tinggi untuk indeks vektor. Jika Anda memiliki layanan yang lebih lama, Anda mungkin dapat meningkatkan layanan Anda untuk kuota vektor yang lebih tinggi.
Pencarian vektor tersedia di:
- portal Azure: Wizard impor dan vektorisasi data
- Azure REST APIs
- Azure SDK untuk .NET, Python, dan JavaScript
- Penawaran Azure lainnya seperti Azure AI Foundry.
Catatan
Beberapa layanan pencarian lama yang dibuat sebelum 1 Januari 2019 disebarkan pada infrastruktur yang tidak mendukung beban kerja vektor. Jika Anda mencoba menambahkan bidang vektor ke skema dan mendapatkan kesalahan, itu adalah hasil dari layanan yang kedaluarsa. Dalam situasi ini, Anda harus membuat layanan pencarian baru untuk mencoba fitur vektor.
Integrasi Azure dan layanan terkait
Azure AI Search terintegrasi secara mendalam di seluruh platform Azure AI. Tabel berikut mencantumkan beberapa yang berguna dalam beban kerja vektor.
Produk | Integrasi |
---|---|
Azure AI Foundry | Dalam obrolan dengan ruang bermain data Anda, Tambahkan data Anda sendiri menggunakan Azure AI Search untuk pengumpulan data dan pencarian percakapan. Ini adalah pendekatan termudah dan tercepat untuk mengobrol dengan data Anda. |
Azure OpenAI | Azure OpenAI menyediakan model penyematan dan model obrolan. Demo dan sampel menargetkan text-embedding-ada-002. Kami merekomendasikan Azure OpenAI untuk menghasilkan penyematan untuk teks. |
Layanan Azure AI | Image Retrieval Vectorize Image API(Preview) mendukung vektorisasi konten gambar. Kami menyarankan API ini untuk menghasilkan embedding untuk gambar. |
Platform data di Azure: Azure Blob Storage, Azure Cosmos DB, Azure SQL, OneLake | Anda dapat menggunakan pengindeks untuk mengotomatiskan penyerapan data, lalu menggunakan vektorisasi terintegrasi untuk menghasilkan penyematan. Azure AI Search dapat secara otomatis mengindeks data vektor dari pengindeks blob Azure, Azure Cosmos DB untuk pengindeks NoSQL, Azure Data Lake Storage Gen2, Azure Table Storage, Fabric OneLake. Untuk informasi selengkapnya, lihat Menambahkan bidang vektor ke indeks pencarian.. |
Ini juga umumnya digunakan dalam kerangka kerja sumber terbuka seperti LangChain.
Konsep pencarian vektor
Jika Anda baru mengenal vektor, bagian ini menjelaskan beberapa konsep inti.
Tentang pencarian vektor
Pencarian vektor adalah metode pengambilan informasi di mana dokumen dan kueri diwakili sebagai vektor alih-alih teks biasa. Dalam pencarian vektor, model pembelajaran mesin menghasilkan representasi vektor input sumber, yang dapat berupa teks, gambar, atau konten lainnya. Memiliki representasi konten matematika menyediakan bahasa umum untuk membandingkan konten yang berbeda. Jika semuanya adalah vektor, kueri dapat menemukan kecocokan di ruang vektor, bahkan jika konten asli terkait berada di media atau bahasa yang berbeda dari kueri.
Mengapa menggunakan pencarian vektor
Saat konten yang dapat dicari direpresentasikan sebagai vektor, kueri dapat menemukan kecocokan dekat dalam konten yang sama. Model penyematan yang digunakan untuk pembuatan vektor mengetahui kata dan konsep mana yang serupa, dan menempatkan vektor yang dihasilkan berdekatan di ruang penyematan. Misalnya, dokumen sumber yang sudah vektorisasi tentang "awan" dan "kabut" lebih mungkin muncul dalam pencarian tentang "embun" karena secara semantik mirip, bahkan jika mereka bukan kecocokan leksikal.
Penyematan dan vektorisasi
Penyematan adalah jenis representasi vektor tertentu dari konten atau kueri, yang dibuat oleh model pembelajaran mesin yang menangkap arti semantik teks atau representasi konten lain seperti gambar. Model pembelajaran mesin bahasa alami dilatih pada sejumlah besar data untuk mengidentifikasi pola dan hubungan antar kata. Selama pelatihan, mereka belajar mewakili input apa pun sebagai vektor angka riil dalam langkah perantara yang disebut encoder. Setelah pelatihan selesai, model bahasa ini dapat dimodifikasi sehingga representasi vektor perantara menjadi output model. Penyematan yang dihasilkan adalah vektor dimensi tinggi, di mana kata-kata dengan arti serupa lebih dekat bersama-sama dalam ruang vektor, seperti yang dijelaskan dalam Memahami penyematan (Azure OpenAI).
Efektivitas pencarian vektor dalam mengambil informasi yang relevan tergantung pada efektivitas model penyematan dalam menyaring arti dokumen dan kueri ke dalam vektor yang dihasilkan. Model terbaik dilatih dengan baik pada jenis data yang diwakilinya. Anda dapat mengevaluasi model yang ada seperti Azure OpenAI text-embedding-ada-002, membawa model yang Anda latih sendiri langsung pada ruang masalah tersebut, atau menyempurnakan model tujuan umum. Pencarian Azure AI tidak memberlakukan batasan pada model mana yang Anda pilih, jadi pilih yang terbaik untuk data Anda.
Untuk membuat penyematan yang efektif untuk pencarian vektor, penting untuk mempertimbangkan batasan ukuran input. Sebaiknya ikuti panduan untuk memotong data sebelum menghasilkan penyematan. Praktik terbaik ini memastikan bahwa penyematan secara akurat menangkap informasi yang relevan dan memungkinkan pencarian vektor yang lebih efisien.
Apa ruang penyematannya?
Ruang penyematan adalah korpus untuk kueri vektor. Dalam indeks pencarian, ruang penyematan adalah semua bidang vektor yang diisi dengan penyematan dari model penyematan yang sama. Model pembelajaran mesin membuat ruang penyematan dengan memetakan kata, frasa, atau dokumen individual (untuk pemrosesan bahasa alami), gambar, atau bentuk data lainnya ke dalam representasi yang terdiri dari vektor bilangan nyata yang mewakili koordinat dalam ruang dimensi tinggi. Dalam ruang penyematan ini, item serupa terletak berdekatan, dan item yang berbeda terletak lebih jauh.
Misalnya, dokumen yang berbicara tentang berbagai spesies anjing akan dikelompokkan berdampingan di ruang penyematan. Dokumen tentang kucing akan berdekatan, tetapi lebih jauh dari kluster anjing, sementara tetap berada dalam lingkungan yang berhubungan dengan hewan. Konsep berbeda seperti komputasi awan akan lebih jauh lagi. Dalam praktiknya, ruang penyematan ini abstrak dan tidak memiliki makna yang terdefinisi dengan baik dan dapat ditafsirkan manusia, tetapi ide inti tetap sama.
Pencarian tetangga terdekat
Dalam pencarian vektor, mesin pencari memindai vektor dalam ruang penyematan untuk mengidentifikasi vektor yang paling dekat dengan vektor kueri. Teknik ini disebut pencarian tetangga terdekat. Tetangga terdekat membantu mengukur kesamaan antara item. Tingkat kesamaan vektor yang tinggi menunjukkan bahwa data asli juga serupa. Untuk memfasilitasi pencarian tetangga terdekat yang cepat, mesin pencari melakukan pengoptimalan, atau menggunakan struktur data dan pemartisian data, untuk mengurangi ruang pencarian. Setiap algoritma pencarian vektor memecahkan masalah tetangga terdekat dengan cara yang berbeda-beda untuk mengoptimalkan latensi minimum, throughput maksimum, recall, dan memori. Untuk menghitung kesamaan, metrik kesamaan menyediakan mekanisme untuk jarak komputasi.
Azure AI Search saat ini mendukung algoritma berikut:
Dunia Kecil Yang Dapat Dinavigasi Hierarkis (HNSW): HNSW adalah algoritma ANN terkemuka yang dioptimalkan untuk aplikasi latensi rendah yang pengenalan tinggi di mana distribusi data tidak diketahui atau dapat sering berubah. Ini mengatur titik data dimensi tinggi ke dalam struktur grafik hierarkis yang memungkinkan pencarian kesamaan yang cepat dan dapat diskalakan sambil memungkinkan trade-off yang dapat disetel antara akurasi pencarian dan biaya komputasi. Karena algoritma mengharuskan semua titik data berada dalam memori untuk akses acak yang cepat, algoritma ini mengonsumsi kuota ukuran indeks vektor.
Tetangga terdekat K komprehensif (KNN): Menghitung jarak antara vektor pencarian dan semua titik data. Ini intensif secara komputasi, sehingga berfungsi paling baik untuk himpunan data yang lebih kecil. Karena algoritma tidak memerlukan akses acak titik data yang cepat, algoritma ini tidak menggunakan kuota ukuran indeks vektor. Namun, algoritma ini menyediakan set global tetangga terdekat.
Untuk menggunakan algoritma ini, lihat Membuat bidang vektor untuk instruksi tentang menentukan algoritma, profil vektor, dan penetapan profil.
Parameter algoritma yang digunakan untuk menginisialisasi indeks selama pembuatan indeks tidak dapat diubah dan tidak dapat diubah setelah indeks dibuat. Namun, parameter yang memengaruhi karakteristik waktu kueri (efSearch
) dapat dimodifikasi.
Selain itu, bidang yang menentukan algoritma HNSW juga mendukung pencarian KNN menyeluruh menggunakan parameter permintaan kueri. Namun sebaliknya tidak benar. Jika bidang diindeks untuk exhaustiveKnn
, Anda tidak dapat menggunakan HNSW dalam kueri karena struktur data tambahan yang memungkinkan pencarian efisien tidak ada.
Perkiraan Tetangga Terdekat
Pencarian Tetangga Terdekat Aproksimasi (ANN) adalah kelas algoritma untuk menemukan kecocokan di ruang vektor. Kelas algoritma ini menggunakan struktur data atau metode pemartisian data yang berbeda untuk secara signifikan mengurangi ruang pencarian untuk mempercepat pemrosesan kueri.
Algoritma ANN mengorbankan beberapa ketepatan, tetapi menawarkan pengambilan yang dapat diskalakan dan lebih cepat dari tetangga terdekat secara perkiraan, yang membuatnya ideal untuk menyeimbangkan ketepatan terhadap efisiensi dalam aplikasi pengambilan informasi modern. Anda dapat menyesuaikan parameter algoritma Anda untuk menyempurnakan persyaratan pengenalan, latensi, memori, dan jejak disk aplikasi pencarian Anda.
Azure AI Search menggunakan HNSW untuk algoritma ANN-nya.