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 saat dikombinasikan dengan model seperti Azure OpenAI for Retrieval-Augmented Generative AI dan skenario analisis lainnya. 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 tingkat Enterprise atau Azure Managed Redis dengan Azure OpenAI, 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 dan Azure Managed Redis.

Tabel ini berisi informasi untuk ketersediaan pencarian vektor di tingkat yang berbeda.

Tier Dasar / Standar Premi Enterprise Enterprise Flash Azure Managed Redis
Tersedia Tidak. Tidak. Ya Ya (pratinjau) Ya

Apa itu penyematan vektor?

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 hasil kali dalam.

Menghasilkan penggambaran vektor

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) - lebih efisien dengan mengorbankan presisi untuk mendapatkan kecepatan yang lebih tinggi dan beban 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:

  • Semantik Tanya Jawab. 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. Menggunakan pemahaman semantik yang lebih dalam tentang teks yang disediakan oleh LLM untuk memberikan pengalaman pencarian dokumen yang lebih kaya ketika pencarian berbasis kata kunci tradisional kurang efektif. Contoh Pengambilan Dokumen
  • Produk Rekomendasi. 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 caching penyelesaian LLM. Kueri LLM dibandingkan dengan menggunakan vektor kesamaan. 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 Simpan riwayat percakapan dengan LLM sebagai representasi 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
  • Pencarian rentang vektor (yaitu, temukan semua item dalam jarak vektor khusus)
  • Pencarian hibrid dengan fitur kueri yang canggih seperti:
    • Pemfilteran geospasial
    • Filter numerik dan teks
    • Awalan dan pencocokan fuzzy
    • Pencocokan fonetik
    • Pertanyaan Boolean

Selain itu, Redis sering menjadi pilihan ekonomis karena sudah sangat umum digunakan untuk cache atau penyimpanan sesi aplikasi. Dalam skenario ini, ia dapat melakukan tugas ganda dengan menjalankan peran penembolokan khas sambil secara bersamaan menangani aplikasi pencarian vektor.

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!