Bagikan melalui


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:

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, dan Internal Product.
  • Dukungan untuk KNN (menggunakan FLAT) dan ANN (menggunakan HNSW) 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:

Cara terbaik untuk memulai penyematan dan pencarian vektor adalah dengan mencobanya sendiri!