向量索引

本頁面說明如何在雜湊中儲存向量。雜湊可用於在 Redis 中以有效率的方式儲存向量。

資料序列化

在向量儲存於雜湊資料類型之前,必須先將向量轉換為 Memorystore for Redis 可解讀的格式。它需要將向量序列化為二進位 Blob,大小必須等於資料類型的位元組大小 (例如 4 個,以 FLOAT32 為例) 乘以向量的維度數量。在數值向量方面,Python NumPy 程式庫是熱門選擇:

連線至 Redis

在向雜湊儲存向量之前,請使用 OSS Redis 相容用戶端 (例如 redis-py) 與 Memorystore for Redis 例項建立連線:

將向量儲存在雜湊中

雜湊值就像字典,包含鍵/值組合。使用 HSET 指令儲存序列化的向量:

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.Redis(host='your_redis_host', port=6379)

redis_client.hset('vector_storage', 'vector_key', serialized_vector)  # 'vector_key' is a unique identifier
  • 如要成功建立索引,向量資料必須符合索引結構定義中的維度和資料類型。

補充索引

下列任一情況都可能發生索引補充作業:

  • 建立索引後,回填程序會掃描鍵值空間,找出符合索引篩選條件的項目。
  • 向量索引及其資料會保留在 RDB 快照中。載入 RDB 檔案時,系統會觸發自動索引回填程序。這個程序會主動偵測並整合 RDB 快照建立後新增或修改過的項目,以維持索引完整性並確保目前的結果。