Vetores de indexação

Nesta página, explicamos como armazenar vetores em hashes. Os hashes oferecem uma maneira eficiente de armazenar vetores no Redis.

Serialização de dados

Antes de armazenar vetores em um hash do Redis, eles precisam ser convertidos em um formato que o Redis entenda. Isso exige a serialização de vetores em blobs binários em que o tamanho é igual ao tamanho do byte do tipo de dados (por exemplo, 4 para FLOAT32) multiplicado pelo número de dimensões do vetor. Uma opção popular para vetores numéricos é a biblioteca NumPy do Python.

Conectar ao Redis

Antes de armazenar o vetor em um hash, estabeleça uma conexão com o cluster usando um cliente como o redis-py.

Armazenar o vetor em um hash

Os hashes do Redis são como dicionários, com pares de chave-valor. Use o comando HSET do Redis para armazenar o vetor serializado:

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
  • Para uma indexação bem-sucedida, os dados do vetor precisam obedecer às dimensões e ao tipo de dados definidos no esquema de índice.

Preenchimento de índices

O preenchimento de índices pode ocorrer em um dos seguintes cenários:

  • Depois que um índice é criado, o procedimento de preenchimento verifica o keyspace do Redis em busca de entradas que atendam aos critérios de filtro do índice.
  • Os índices de vetor e os dados deles são mantidos em snapshots do RDB. Quando um arquivo RDB é carregado, um processo automático de preenchimento de índice é acionado. Esse processo detecta e integra ativamente todas as entradas novas ou modificadas no índice desde que o snapshot do RDB foi criado, mantendo a integridade do índice e garantindo resultados atuais.