向量索引

本頁說明如何將向量儲存在雜湊中。雜湊可有效率地在 Redis 中儲存向量。

資料序列化

將向量儲存在 Redis 雜湊中之前,必須先將向量轉換為 Redis 可辨識的格式。這項作業需要將向量序列化為二進位 BLOB,大小等於資料型別的位元組大小 (例如 4 (FLOAT32 為 4) 乘以向量的維度數量。Python NumPy 程式庫是數值向量的熱門選擇:

連線至 Redis

將向量儲存在雜湊中之前,請先使用 redis-py 等用戶端建立與 Redis 執行個體的連線:

將向量儲存在雜湊中

Redis 雜湊與字典類似,包含鍵/值組合。使用 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.cluster.RedisCluster(host='your_redis_host', port=6379)

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

補充索引

在下列情況中,可能會發生索引回填作業:

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