Nesta página, explicamos como armazenar vetores em hashes. Os hashes oferecem uma maneira eficiente de armazenar vetores no Memorystore para Valkey.
Serialização de dados
Antes de armazenar vetores em um tipo de dados de hash, eles precisam ser convertidos em um formato que o Memorystore para Valkey entenda. Ela 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-se ao Memorystore para Valkey
Antes de armazenar o vetor em um hash, estabeleça uma conexão com sua instância do Memorystore para Valkey usando um cliente compatível com o Redis de código aberto, como o redis-py:
Armazenar o vetor em um hash
Os hashes são como dicionários, com pares de chave-valor. Use o comando HSET 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_server_host', port=6379)
redis_client.hset('vector_storage', 'vector_key', serialized_vector) # 'vector_key' is a unique identifier
- Para que a indexação seja bem-sucedida, os dados de vetor precisam obedecer às dimensões e ao tipo de dados definidos no esquema do índice.
Preencher í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 em busca de entradas que atendam aos critérios de filtro do índice.
- Os índices vetoriais e os dados deles são mantidos em snapshots RDB. Quando um arquivo RDB é carregado, um processo automático de preenchimento de índice é acionado. Esse processo detecta e integra ativamente entradas novas ou modificadas ao índice desde que o snapshot do RDB foi criado, mantendo a integridade do índice e garantindo resultados atuais.