Apa itu Penyematan Vektor dan Pencarian Vektor di Azure Cache for Redis
Pencarian kesamaan vektor (VSS) telah menjadi teknologi populer untuk aplikasi cerdas yang didukung AI. Azure Cache for Redis dapat digunakan sebagai database vektor dengan menggabungkan model seperti Azure OpenAI untuk Pengambilan-Augmented Generative AI dan skenario analisis. Artikel ini adalah pengenalan tingkat tinggi tentang konsep penyematan vektor, pencarian kesamaan vektor, dan bagaimana Redis dapat digunakan sebagai database vektor yang mendukung aplikasi cerdas.
Untuk tutorial dan aplikasi sampel tentang cara menggunakan Azure Cache for Redis dan Azure OpenAI untuk melakukan pencarian kesamaan vektor, lihat yang berikut ini:
- Tutorial: Melakukan pencarian kesamaan vektor pada penyematan Azure OpenAI menggunakan Azure Cache for Redis dengan LangChain
- Sampel: Menggunakan Redis sebagai database vektor dalam aplikasi Chatbot dengan .NET Semantic Kernel
- Sampel: Menggunakan Redis sebagai cache semantik di galeri gambar yang didukung Dall-E dengan Redis OM untuk .NET
Cakupan Ketersediaan
Kemampuan pencarian vektor di Redis memerlukan Redis Stack, khususnya modul RediSearch . Kemampuan ini hanya tersedia di tingkat Enterprise Azure Cache for Redis.
Tabel ini berisi informasi untuk ketersediaan pencarian vektor di tingkat yang berbeda.
Tingkat | Dasar / Standar | Premium | Perusahaan | Enterprise Flash |
---|---|---|---|---|
Tersedia | Tidak | No | Ya | Yes (pratinjau) |
Apa itu penyematan vektor?
Konsep
Penyematan vektor adalah konsep mendasar dalam pembelajaran mesin dan pemrosesan bahasa alami yang memungkinkan representasi data, seperti kata, dokumen, atau gambar sebagai vektor numerik dalam ruang vektor dimensi tinggi. Ide utama di balik penyematan vektor adalah menangkap hubungan dan semantik data yang mendasar dengan memetakannya ke titik di ruang vektor ini. Itu berarti mengonversi teks atau gambar Anda menjadi urutan angka yang mewakili data, lalu membandingkan urutan angka yang berbeda. Ini memungkinkan data yang kompleks untuk dimanipulasi dan dianalisis secara matematis, sehingga lebih mudah untuk melakukan tugas seperti perbandingan, rekomendasi, dan klasifikasi kesamaan.
Setiap model pembelajaran mesin mengklasifikasikan data dan menghasilkan vektor dengan cara yang berbeda. Selain itu, biasanya tidak mungkin untuk menentukan dengan tepat apa arti semantik yang diwakili setiap dimensi vektor. Tetapi karena model konsisten antara setiap blok data input, kata, dokumen, atau gambar serupa memiliki vektor yang juga mirip. Misalnya, kata-kata basketball
dan baseball
memiliki penyematan vektor jauh lebih dekat satu sama lain daripada kata seperti rainforest
.
Perbandingan vektor
Vektor dapat dibandingkan menggunakan berbagai metrik. Cara paling populer untuk membandingkan vektor adalah dengan menggunakan kesamaan kosinus, yang mengukur kosinus sudut antara dua vektor dalam ruang multi-dimensi. Semakin dekat vektor, semakin kecil sudutnya. Metrik jarak umum lainnya termasuk jarak Euclidean dan produk dalam.
Menghasilkan penyematan
Banyak model pembelajaran mesin mendukung API penyematan. Untuk contoh cara membuat penyematan vektor menggunakan Azure OpenAI Service, lihat Pelajari cara membuat penyematan dengan Azure OpenAI.
Apa itu database vektor?
Database vektor adalah database yang dapat menyimpan, mengelola, mengambil, dan membandingkan vektor. Database vektor harus dapat menyimpan vektor dimensi tinggi secara efisien dan mengambilnya dengan latensi minimal dan throughput tinggi. Datastore nonrelasional paling umum digunakan sebagai database vektor, meskipun dimungkinkan untuk menggunakan database relasional seperti PostgreSQL, misalnya, dengan ekstensi pgvector .
Metode indeks dan pencarian
Database vektor perlu mengindeks data untuk pencarian dan pengambilan cepat. Selain itu, database vektor harus mendukung kueri pencarian bawaan untuk pengalaman pemrograman yang disederhanakan.
Ada beberapa metode pengindeksan, seperti:
- DATAR - Indeks brute-force
- HNSW - Perkiraan pencarian tetangga terdekat yang efisien dan kuat menggunakan grafik Dunia Kecil yang Dapat Dinavigasi Hierarkis
Ada beberapa metode pencarian umum, termasuk:
- K-Nearest Neighbors (KNN) - metode lengkap yang memberikan presisi paling tinggi tetapi dengan biaya komputasi yang lebih tinggi.
- Perkiraan Tetangga Terdekat (ASN) - yang lebih efisien dengan presisi perdagangan untuk kecepatan yang lebih besar dan overhead pemrosesan yang lebih rendah.
Kemampuan pencarian
Terakhir, database vektor menjalankan pencarian vektor dengan menggunakan metode perbandingan vektor yang dipilih untuk mengembalikan vektor yang paling mirip. Beberapa database vektor juga dapat melakukan pencarian hibrid dengan terlebih dahulu mempersempit hasil berdasarkan karakteristik atau metadata yang juga disimpan dalam database sebelum melakukan pencarian vektor. Ini adalah cara untuk membuat pencarian vektor lebih efektif dan dapat disesuaikan. Misalnya, pencarian vektor dapat dibatasi hanya untuk vektor dengan tag tertentu dalam database, atau vektor dengan data geolokasi di wilayah tertentu.
Skenario kunci pencarian vektor
Pencarian kesamaan vektor dapat digunakan dalam beberapa aplikasi. Beberapa kasus penggunaan umum meliputi:
- Tanya Jawab Semantik. Buat chatbot yang dapat menanggapi pertanyaan tentang data Anda sendiri. Misalnya, chatbot yang dapat menanggapi pertanyaan karyawan tentang cakupan layanan kesehatan mereka. Ratusan halaman dokumentasi cakupan kesehatan yang padat dapat dibagi menjadi potongan, dikonversi menjadi vektor penyematan, dan dicari berdasarkan kesamaan vektor. Dokumen yang dihasilkan kemudian dapat diringkas untuk karyawan menggunakan model bahasa besar (LLM) lainnya. Contoh Tanya Jawab Semantik
- Pengambilan Dokumen. Gunakan pemahaman semantik yang lebih dalam tentang teks yang disediakan oleh LLM untuk memberikan pengalaman pencarian dokumen yang lebih kaya di mana pencarian berbasis kata kunci tradisional menjadi singkat. Contoh Pengambilan Dokumen
- Rekomendasi Produk. Temukan produk atau layanan serupa untuk direkomendasikan berdasarkan aktivitas pengguna sebelumnya, seperti riwayat pencarian atau pembelian sebelumnya. Contoh Rekomendasi Produk
- Pencarian Visual. Cari produk yang terlihat mirip dengan gambar yang diambil oleh pengguna atau gambar produk lain. Contoh Pencarian Visual
- Penembolokan Semantik. Kurangi biaya dan latensi LLM dengan penembolokan penyelesaian LLM. Kueri LLM dibandingkan menggunakan kesamaan vektor. Jika kueri baru cukup mirip dengan kueri yang di-cache sebelumnya, kueri yang di-cache akan dikembalikan. Contoh Penembolokan Semantik menggunakan LangChain
- Memori Percakapan LLM. Pertahankan riwayat percakapan dengan LLM sebagai penyematan dalam database vektor. Aplikasi Anda dapat menggunakan pencarian vektor untuk menarik riwayat atau "memori" yang relevan ke dalam respons dari LLM. Contoh Memori Percakapan LLM
Mengapa memilih Azure Cache for Redis untuk menyimpan dan mencari vektor?
Azure Cache for Redis dapat digunakan secara efektif sebagai database vektor untuk menyimpan vektor penyematan dan untuk melakukan pencarian kesamaan vektor. Dukungan untuk penyimpanan vektor dan pencarian telah tersedia dalam banyak kerangka kerja pembelajaran mesin utama seperti:
Kerangka kerja ini menampilkan integrasi yang kaya dengan Redis. Misalnya, integrasi Redis LangChain secara otomatis menghasilkan skema indeks untuk metadata yang diteruskan saat menggunakan Redis sebagai penyimpanan vektor. Ini membuatnya jauh lebih mudah untuk memfilter hasil berdasarkan metadata.
Redis memiliki berbagai kemampuan pencarian melalui modul RediSearch, yang tersedia di tingkat Perusahaan Azure Cache for Redis. Ini termasuk:
- Beberapa metrik jarak, termasuk
Euclidean
,Cosine
, danInternal Product
. - Dukungan untuk KNN (menggunakan
FLAT
) dan ANN (menggunakanHNSW
) metode pengindeksan. - Penyimpanan vektor dalam struktur data hash atau JSON
- Kueri K Teratas
- Kueri rentang vektor (yaitu, temukan semua item dalam jarak vektor tertentu)
- Pencarian hibrid dengan fitur kueri yang canggih seperti:
- Pemfilteran geospasial
- Filter numerik dan teks
- Awalan dan pencocokan fuzzy
- Pencocokan fonetik
- Kueri Boolean
Selain itu, Redis sering menjadi pilihan ekonomis karena sudah sangat umum digunakan untuk penembolokan atau aplikasi penyimpanan sesi. Dalam skenario ini, ia dapat menarik tugas ganda dengan melayani peran penembolokan khas sambil menangani aplikasi pencarian vektor secara bersamaan.
Apa opsi saya yang lain untuk menyimpan dan mencari vektor?
Ada beberapa solusi lain di Azure untuk penyimpanan dan pencarian vektor. Solusi lain meliputi:
- Pencarian Azure AI
- Azure Cosmos DB menggunakan API MongoDB vCore
- Azure Database for PostgreSQL - Server Fleksibel menggunakan
pgvector
Konten terkait
Cara terbaik untuk memulai penyematan dan pencarian vektor adalah dengan mencobanya sendiri!