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 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 a instância do Redis 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.Redis(host='your_redis_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 do vetor precisam obedecer às dimensões e ao tipo de dados definidos no esquema de índice.

Preenchimento de índices

A reposição de índices pode ocorrer em um dos seguintes cenários:

  • Depois que um índice é criado, o procedimento de preenchimento de lacunas verifica o espaço de chaves do Redis em busca de 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 a criação do snapshot do RDB, mantendo a integridade do índice e garantindo os resultados atuais.