Esta página explica 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. Ele exige a serialização de vetores em blobs binários em que o tamanho é igual ao tamanho do tipo de dados (por exemplo, 4 para FLOAT32) multiplicado pelo número de dimensões do vetor. Uma escolha comum 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 sua instância do Redis usando um cliente como redis-py:
Armazenar o vetor em um hash
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.Redis(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 vetoriais devem aderir às dimensões e ao tipo de dados definidos no esquema do índice.
Preenchimento de índices
Os índices de preenchimento podem ocorrer em um dos seguintes cenários:
- Depois que um índice é criado, o procedimento de preenchimento verifica por meio do keyspace do Redis as entradas que atendam aos critérios do filtro de índice.
- Os índices vetoriais 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 os resultados atuais.