Apa itu penyematan vektor dan pencarian vektor di Azure Managed Redis?

Pencarian kesamaan vektor (VSS) adalah kemampuan umum dalam aplikasi cerdas bertenaga AI. Anda dapat menggunakan Azure Managed Redis sebagai basis data vektor berlatensi rendah dengan menggabungkannya dengan model penyematan, seperti Azure OpenAI, untuk Retrieval-Augmented Generation (RAG), penembolokan semantik, rekomendasi, pencarian, dan skenario AI lainnya.

Artikel ini memperkenalkan penyematan vektor, pencarian kesamaan vektor, dan bagaimana Azure Managed Redis dapat menyimpan dan mencari vektor dengan menggunakan modul RediSearch.

Untuk tutorial dan contoh aplikasi yang menggunakan Azure Managed Redis dengan Azure OpenAI, lihat sumber daya berikut:

Cakupan ketersediaan

Kemampuan pencarian vektor di Redis memerlukan Redis Stack, khususnya modul RediSearch . Di Azure Managed Redis, RediSearch tersedia sebagai modul terkelola yang harus Anda aktifkan saat membuat cache.

Tabel berikut menunjukkan ketersediaan RediSearch untuk tingkat Azure Managed Redis.

Tingkat Redis Terkelola Azure Dukungan RediSearch
Memory Optimized Ya
Balanced Ya
Compute Optimized Ya
Flash Optimized Tidak.

Important

Anda tidak dapat menambahkan modul ke instans Azure Managed Redis setelah dibuat. Jika Anda berencana untuk menggunakan pencarian vektor, aktifkan modul RediSearch selama penyediaan.

Sebelum Anda membuat instans Azure Managed Redis untuk pencarian vektor, rencanakan konfigurasi cache dan model data. Anda harus memilih beberapa opsi, termasuk modul dan kebijakan pengklusteran, selama penyediaan.

Untuk beban kerja pencarian vektor:

  • Aktifkan modul RediSearch saat Anda membuat instans Azure Managed Redis.
  • Gunakan kebijakan pengelompokan perusahaan . RediSearch memerlukan kebijakan pengklusteran Perusahaan.
  • Gunakan kebijakan penggusuran NoEviction saat RediSearch diaktifkan.
  • Pilih tingkat dalam memori yang didukung: Dioptimalkan Memori, Seimbang, atau Dioptimalkan Komputasi.
  • Tentukan ukuran cache untuk data vektor dan overhead indeks.
  • Simpan metadata dengan vektor, seperti ID dokumen, judul, URL sumber, kategori, stempel waktu, ID penyewa, atau bidang kontrol akses, sehingga kueri dapat memfilter hasil dan mengembalikan informasi sumber.
  • Gunakan TLS untuk koneksi klien dan pertimbangkan autentikasi Microsoft Entra jika didukung oleh klien Anda.
  • Untuk beban kerja produksi, pertimbangkan Private Link, ketersediaan tinggi, dan diagnostik.

Azure Managed Redis mengelola versi modul yang tersedia untuk layanan tersebut. Anda tidak dapat memuat modul secara manual atau memperbarui versi modul secara manual.

Untuk informasi selengkapnya, lihat Menggunakan modul Redis dengan Azure Managed Redis, arsitektur Azure Managed Redis, dan Mulai Cepat: Membuat instans Azure Managed Redis.

Apa itu penyematan vektor?

Penyematan vektor adalah representasi numerik data, seperti kata, dokumen, gambar, atau produk, dalam ruang vektor dimensi tinggi. Penyematan menangkap hubungan semantik dengan cara yang memungkinkan aplikasi membandingkan data secara matematis.

Misalnya, kata-kata basketball dan baseball biasanya memiliki penyematan yang lebih dekat satu sama lain daripada salah satu kata ke rainforest, karena model menempatkan konsep yang terkait secara semantik berdekatan satu sama lain dalam ruang vektor.

Model pembelajaran mesin yang berbeda menghasilkan penyematan secara berbeda. Untuk hasil terbaik, gunakan satu model penyematan secara konsisten untuk indeks vektor tertentu. Skema indeks, dimensi vektor, dan metrik jarak harus cocok dengan model penyematan yang digunakan untuk menghasilkan vektor.

Perbandingan vektor

Anda dapat membandingkan vektor menggunakan metrik jarak atau kesamaan. Metrik umum meliputi:

  • Kesamaan kosinus, yang membandingkan sudut antar vektor.
  • Jarak Euclidean, yang mengukur jarak garis lurus dalam ruang vektor.
  • Produk dalam, yang biasa digunakan oleh beberapa skenario penyematan dan peringkat.

Metrik yang benar tergantung pada model penyematan dan bagaimana vektor dinormalisasi. Untuk banyak skenario penyematan teks, kesamaan kosinus adalah pilihan umum.

Menghasilkan penggambaran vektor

Banyak model pembelajaran mesin mendukung API penyematan. Untuk contoh cara membuat penyematan vektor menggunakan Azure OpenAI, lihat Mempelajari cara membuat penyematan dengan Azure OpenAI.

Apa itu database vektor?

Database vektor menyimpan, mengindeks, mengambil, dan membandingkan vektor dimensi tinggi. Database vektor dirancang untuk mengembalikan vektor serupa dengan latensi rendah dan throughput tinggi.

Anda dapat menggunakan Azure Managed Redis sebagai database vektor dengan menyimpan penyematan dalam struktur data Redis dan mengindeksnya dengan menggunakan RediSearch.

Penyimpanan vektor dan metadata

Di Redis, Anda dapat menyimpan vektor dalam hash atau dokumen JSON. Simpan metadata yang berguna dengan setiap vektor, seperti ID dokumen, judul, URL sumber, kategori, stempel waktu, ID penyewa, atau bidang kontrol akses.

Metadata membuat pencarian vektor lebih berguna karena aplikasi dapat memfilter hasil sebelum atau selama pencarian vektor. Untuk aplikasi RAG, metadata juga dapat dikembalikan dengan hasil pencarian untuk mendukung kutipan dan pembumian sumber.

Indeks dan metode pencarian

Database vektor menggunakan indeks untuk membuat pencarian efisien. RediSearch mendukung pendekatan pengindeksan vektor umum, termasuk:

  • FLAT - Indeks brute-force yang tepat. FLAT dapat berguna untuk himpunan data atau beban kerja yang lebih kecil yang memerlukan pencarian menyeluruh.
  • HNSW - Perkiraan indeks tetangga terdekat berdasarkan grafik Hierarchical Navigable Small World. HNSW sering digunakan untuk himpunan data yang lebih besar di mana latensi yang lebih rendah lebih penting daripada presisi lengkap.

Metode pencarian umum meliputi:

  • K-tetangga terdekat (KNN) - Mengembalikan vektor teratas K yang paling mirip.
  • Tetangga terdekat aproksimatif (ANN) - Mengorbankan sedikit presisi untuk latensi yang lebih rendah dan biaya komputasi yang lebih rendah.

Kemampuan pencarian

Database vektor menjalankan pencarian dengan membandingkan vektor kueri dengan vektor yang diindeks dan mengembalikan hasil yang paling mirip. Banyak aplikasi juga menggunakan pencarian hibrida, di mana filter metadata mempersempit kumpulan kandidat sebelum atau selama perbandingan vektor.

Misalnya, kueri rekomendasi produk mungkin hanya mencari produk dalam kategori tertentu, atau aplikasi RAG mungkin hanya mencari dokumen yang diizinkan untuk diakses oleh pengguna saat ini.

Skenario kunci pencarian vektor

Pencarian kesamaan vektor dapat digunakan dalam banyak pola aplikasi, termasuk:

  • Semantik Tanya Jawab. Bangun chatbot yang menjawab pertanyaan melalui data Anda sendiri. Dokumen dapat dipotong, disematkan, disimpan di Azure Managed Redis, dan diambil dengan kesamaan vektor sebelum diringkas oleh model bahasa besar.
  • Pengambilan dokumen. Gunakan penyematan untuk menyediakan pencarian dokumen semantik saat pencarian kata kunci tidak cukup.
  • Rekomendasi produk. Temukan produk atau layanan serupa berdasarkan aktivitas penelusuran, histori pembelian, atau deskripsi produk.
  • Pencarian visual. Cari produk atau gambar yang secara visual mirip dengan gambar yang dikirimkan.
  • Penembolokan semantik. Kurangi biaya dan latensi LLM dengan menyimpan penyelesaian dalam cache dan menggunakan kembali respons yang di-cache saat perintah baru secara semantik mirip dengan perintah sebelumnya.
  • Memori percakapan LLM. Simpan memori jangka pendek, seperti giliran percakapan terbaru, dan memori jangka panjang, seperti ringkasan yang persisten, preferensi pengguna, atau fakta, dalam bentuk embedding yang dapat diambil oleh aplikasi untuk respons di masa mendatang.

Mengapa memilih Azure Managed Redis untuk menyimpan dan mencari vektor?

Azure Managed Redis berguna untuk beban kerja pencarian vektor yang memerlukan akses latensi rendah di dekat data aplikasi, data cache, status sesi, atau memori percakapan. Karena Redis umumnya digunakan untuk pola aplikasi berkinerja tinggi, Azure Managed Redis dapat mendukung pencarian vektor sekaligus juga mendukung kasus penggunaan terkait seperti cache, pembatasan laju, penyimpanan sesi, cache semantik, dan memori agen.

Banyak kerangka kerja AI dan aplikasi menyertakan integrasi Redis, termasuk:

Azure Managed Redis menggunakan modul RediSearch untuk mendukung kemampuan pencarian vektor seperti:

  • Metrik jarak umum, termasuk L2, COSINE, dan IP.
  • Pencarian KNN dengan FLAT dan HNSW indeks vektor.
  • Penyimpanan vektor dalam struktur data hash atau JSON.
  • Kueri Top K.
  • Kueri rentang vektor.
  • Pencarian hibrid dengan fitur kueri seperti:
    • Pemfilteran geospasial.
    • Filter numerik dan teks.
    • Pencocokan awalan dan aproksimatif.
    • Pencocokan fonetik.
    • Kueri Boolean.

Apa opsi saya yang lain untuk menyimpan dan mencari vektor?

Azure menyediakan beberapa layanan untuk penyimpanan dan pencarian vektor. Pilihan terbaik tergantung pada beban kerja Anda.

Service Pertimbangkan kapan
Azure Managed Redis Anda memerlukan pencarian vektor latensi rendah yang dekat dengan cache aplikasi, status sesi, cache semantik, atau pola memori LLM.
Pencarian Azure AI Anda memerlukan layanan yang mengutamakan pencarian untuk pengindeksan dokumen, pencarian hibrid, penyetelan relevansi, dan skenario pengambilan perusahaan.
Azure Cosmos DB Anda menginginkan pencarian vektor bersama data NoSQL operasional.
Azure Database for PostgreSQL - Server yang Fleksibel Anda ingin melakukan pencarian vektor di PostgreSQL menggunakan pgvector bersama data relasional.

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