Mengindeksikan vektor

Halaman ini menjelaskan cara menyimpan vektor dalam hash. Hash menyediakan cara yang efisien untuk menyimpan vektor di Memorystore untuk Valkey.

Serialisasi data

Sebelum menyimpan vektor dalam jenis data hash, vektor harus dikonversi ke dalam format yang dipahami Memorystore for Valkey. Hal ini memerlukan serialisasi vektor ke dalam blob biner dengan ukuran yang sama dengan ukuran byte jenis data (misalnya, 4 untuk FLOAT32) dikalikan dengan jumlah dimensi vektor. Pilihan populer untuk vektor numerik adalah library NumPy Python:

Menghubungkan ke Memorystore for Valkey

Sebelum menyimpan vektor dalam hash, buat koneksi ke instance Memorystore for Valkey menggunakan klien yang kompatibel dengan OSS Redis seperti redis-py:

Menyimpan vektor dalam hash

Hash mirip dengan kamus, dengan pasangan nilai kunci. Gunakan perintah HSET untuk menyimpan vektor serialisasi:

import numpy as np
import redis

# Sample vector
vector = np.array([1.2, 3.5, -0.8], dtype=np.float32) # 3-dimensional vector

# Serialize to a binary blob
serialized_vector = vector.tobytes()

redis_client = redis.cluster.RedisCluster(host='your_server_host', port=6379)

redis_client.hset('vector_storage', 'vector_key', serialized_vector)  # 'vector_key' is a unique identifier
  • Agar pengindeksan berhasil, data vektor Anda harus mematuhi dimensi dan jenis data yang ditetapkan dalam skema indeks.

Mengisi Ulang Indeks

Pengisian ulang indeks dapat terjadi dalam salah satu skenario berikut:

  • Setelah indeks dibuat, prosedur pengisian ulang akan memindai ruang kunci untuk menemukan entri yang memenuhi kriteria filter indeks.
  • Indeks vektor dan datanya dipertahankan dalam snapshot RDB. Saat file RDB dimuat, proses pengisian ulang indeks otomatis akan dipicu. Proses ini secara aktif mendeteksi dan mengintegrasikan entri baru atau yang diubah ke dalam indeks sejak snapshot RDB dibuat, mempertahankan integritas indeks, dan memastikan hasil saat ini.