Vektor dalam Pencarian Azure AI

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 "anjing", 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 pengenalan tingkat tinggi untuk 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:

Anda juga dapat memulai dengan mulai cepat vektor atau sampel kode di GitHub.

Skenario apa yang dapat didukung pencarian vektor?

Skenario untuk pencarian vektor meliputi:

  • Pencarian kesamaan. 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, pencarian hibrid mengacu pada eksekusi kueri vektor dan kata kunci dalam permintaan yang sama. Dukungan vektor diimplementasikan di tingkat bidang, dengan indeks yang berisi bidang vektor dan bidang teks yang dapat dicari. Kueri dijalankan secara paralel dan hasilnya digabungkan ke dalam satu respons. Secara opsional, tambahkan peringkat semantik untuk lebih akurasi dengan reranking L2 menggunakan model bahasa yang sama yang mendukung Bing.

  • Pencarian multibahasa. Memberikan pengalaman pencarian dalam bahasa pengguna sendiri dimungkinkan melalui penyematan model dan model obrolan yang dilatih dalam beberapa bahasa. Jika Anda memerlukan kontrol lebih besar atas terjemahan, 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 kueri. 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.

Dukungan vektor mencakup pengindeksan, penyimpanan, dan kueri penyematan vektor dari indeks pencarian.

Diagram berikut menunjukkan alur kerja pengindeksan dan kueri untuk pencarian vektor.

Arsitektur alur kerja pencarian vektor.

Di sisi pengindeksan, Azure AI Search mengambil penyematan vektor dan menggunakan algoritma tetangga terdekat untuk menempatkan vektor serupa yang 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 pendekatan Anda dan apakah Anda dapat menggunakan fitur pratinjau. Anda dapat mem-vektorisasi atau menghasilkan penyematan sebagai langkah awal menggunakan model dari OpenAI, Azure OpenAI, dan sejumlah penyedia, melalui berbagai konten sumber termasuk teks, gambar, dan jenis konten lainnya yang didukung oleh model. Anda kemudian dapat mendorong konten yang didahului ke bidang vektor di penyimpanan vektor. Itulah pendekatan yang tersedia secara umum. Jika Anda dapat menggunakan fitur pratinjau, 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.

Di sisi kueri, di aplikasi klien, Anda mengumpulkan input kueri dari pengguna, biasanya melalui alur kerja permintaan. 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 (pratinjau) 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 hibrid, vektor, dan nonvektor diserap ke dalam indeks yang sama, untuk kueri yang berjalan 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.

Pencarian vektor tersedia di:

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.

Azure AI Search terintegrasi secara mendalam di seluruh platform Azure AI. Tabel berikut mencantumkan beberapa yang berguna dalam beban kerja vektor.

Produk Integrasi
Azure OpenAI Studio Dalam obrolan dengan taman bermain data Anda, Tambahkan data Anda sendiri menggunakan Azure AI Search untuk data dasar dan pencarian percakapan. Ini adalah pendekatan termampu 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 merekomendasikan API ini untuk menghasilkan penyematan untuk gambar.
Platform data Azure: Azure Blob Storage, Azure Cosmos DB Anda dapat menggunakan pengindeks untuk mengotomatiskan penyerapan data, lalu menggunakan vektorisasi terintegrasi (pratinjau) untuk menghasilkan penyematan. Pencarian Azure AI dapat mengindeks data vektor secara otomatis dari dua sumber data: Pengindeks blob Azure dan Azure Cosmos DB untuk pengindeks NoSQL. 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.

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 memberikan dasar umum untuk skenario pencarian. 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.

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 vektorisasi tentang "cloud" dan "kabut" lebih mungkin muncul dalam kueri tentang "kabut" 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 Anda sendiri yang dilatih langsung pada ruang masalah, 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?

Menyematkan ruang 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 diklusterkan bersama-sama di ruang penyematan. Dokumen tentang kucing akan berdekatan, tetapi lebih jauh dari kluster anjing saat masih berada di lingkungan untuk hewan. Konsep yang berbeda seperti komputasi cloud akan jauh lebih jauh. Dalam praktiknya, ruang penyematan ini abstrak dan tidak memiliki makna yang terdefinisi dengan baik dan dapat ditafsirkan manusia, tetapi ide inti tetap sama.

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 saat mereka mengoptimalkan latensi minimum, throughput maksimum, pengenalan, 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 lengkap (KNN): Menghitung jarak antara vektor kueri 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.

Dalam definisi indeks, Anda dapat menentukan satu atau beberapa algoritma, lalu untuk setiap bidang vektor menentukan algoritma mana yang akan digunakan:

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 lengkap menggunakan parameter "exhaustive": truepermintaan 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

Perkiraan Pencarian Tetangga Terdekat (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 akurasi, tetapi menawarkan pengambilan yang dapat diskalakan dan lebih cepat dari sekitar tetangga terdekat, yang membuatnya ideal untuk menyeimbangkan akurasi 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.

Langkah berikutnya