Vetores de indexação

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.