As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
PÉS. CREATE
Cria um índice e inicia um preenchimento desse índice. Para obter mais informações, consulte Visão geral da pesquisa vetorial para obter detalhes sobre a construção do índice.
Sintaxe
FT.CREATE <index-name> ON HASH | JSON [PREFIX <count> <prefix1> [<prefix2>...]] SCHEMA (<field-identifier> [AS <alias>] NUMERIC | TAG [SEPARATOR <sep>] [CASESENSITIVE] | TEXT | VECTOR [HNSW|FLAT] <attr_count> [<attribute_name> <attribute_value>]) )+
Esquema
Identificador de campo:
Para chaves de hash, o identificador de campo é um nome de campo.
Para JSON chaves, o identificador de campo é Um JSON caminho.
Para obter mais informações, consulte Tipos de campos de índice.
Tipos de campos:
TAG: Para obter mais informações, consulte Tags
. NUMERIC: O campo contém um número.
TEXT: o campo contém qualquer bolha de dados.
VECTOR: campo vetorial que oferece suporte à pesquisa vetorial.
Algoritmo — pode ser HNSW (Hierarchical Navigable Small World) ou FLAT (força bruta).
attr_count
: número de atributos que serão passados como configuração do algoritmo, incluindo nomes e valores.{attribute_name} {attribute_value}
: pares de chave/valor específicos do algoritmo que definem a configuração do índice.Para FLAT algoritmo, os atributos são:
Obrigatório:
DIM— Número de dimensões no vetor.
DISTANCE_ METRIC — Pode ser um dos [L2 | IP |COSINE].
TYPE— Tipo vetorial. O único tipo com suporte é
FLOAT32
.
Opcional:
INITIAL_ CAP — Capacidade vetorial inicial no índice que afeta o tamanho da alocação de memória do índice.
Para HNSW algoritmo, os atributos são:
Obrigatório:
TYPE— Tipo vetorial. O único tipo com suporte é
FLOAT32
.DIM— Dimensão vetorial, especificada como um número inteiro positivo. Máximo: 32768
DISTANCE_ METRIC — Pode ser um dos [L2 | IP |COSINE].
Opcional:
INITIAL_ CAP — Capacidade vetorial inicial no índice que afeta o tamanho da alocação de memória do índice. O padrão é 1024.
M: número máximo de bordas de saída permitidas para cada nó no gráfico em cada camada. Na camada zero, o número máximo de bordas de saída será 2M. O padrão é 16 e o máximo é 512.
EF_ CONSTRUCTION — controla o número de vetores examinados durante a construção do índice. Valores mais altos para esse parâmetro melhorarão a taxa de recall às custas de tempos mais longos de criação do índice. O valor padrão é 200. O valor máximo é 4096.
EF_ RUNTIME — controla o número de vetores examinados durante as operações de consulta. Valores mais altos para esse parâmetro podem gerar melhor recuperação à custa de tempos de consulta mais longos. O valor desse parâmetro pode ser substituído para cada consulta. O valor padrão é 10 O valor máximo é 4096.
Return
Retorna uma mensagem simples de texto OK ou uma resposta de erro.
Exemplos
nota
O exemplo a seguir usa argumentos nativos de valkey-cli
exemplo 1: Crie alguns índices
Crie um índice para vetores de tamanho 2
FT.CREATE hash_idx1 ON HASH PREFIX 1 hash: SCHEMA vec AS VEC VECTOR HNSW 6 DIM 2 TYPE FLOAT32 DISTANCE_METRIC L2 OK
Crie um JSON índice de 6 dimensões usando o HNSW algoritmo:
FT.CREATE json_idx1 ON JSON PREFIX 1 json: SCHEMA $.vec AS VEC VECTOR HNSW 6 DIM 6 TYPE FLOAT32 DISTANCE_METRIC L2 OK
exemplo Exemplo 2: preencher alguns dados
Os comandos a seguir são formatados para que possam ser executados como argumentos para o programa de terminal redis-cli. Os desenvolvedores que usam clientes de linguagem de programação (como Python, Ruby, C# etc.) precisarão seguir as regras de manipulação do ambiente para lidar com strings e dados binários.
Criando alguns dados de hash e json:
HSET hash:0 vec "\x00\x00\x00\x00\x00\x00\x00\x00" HSET hash:1 vec "\x00\x00\x00\x00\x00\x00\x80\xbf" JSON.SET json:0 . '{"vec":[1,2,3,4,5,6]}' JSON.SET json:1 . '{"vec":[10,20,30,40,50,60]}' JSON.SET json:2 . '{"vec":[1.1,1.2,1.3,1.4,1.5,1.6]}'
Observe o seguinte:
As chaves do hash e dos JSON dados têm os prefixos de suas definições de índice.
Os vetores estão nos caminhos apropriados das definições do índice.
Os vetores de hash são inseridos como dados hexadecimais, enquanto os JSON dados são inseridos como números.
Os vetores têm os comprimentos apropriados, as entradas bidimensionais do vetor hash têm dois valores flutuantes de dados hexadecimais, as entradas vetoriais json de seis dimensões têm seis números.
exemplo Exemplo 3: Excluir e recriar um índice
FT.DROPINDEX json_idx1 OK FT.CREATE json_idx1 ON JSON PREFIX 1 json: SCHEMA $.vec AS VEC VECTOR FLAT 6 DIM 6 TYPE FLOAT32 DISTANCE_METRIC L2 OK
Observe que o novo JSON índice usa o FLAT
algoritmo em vez do HNSW
algoritmo. Observe também que ele reindexará os JSON dados existentes:
FT.SEARCH json_idx1 "*=>[KNN 100 @VEC $query_vec]" PARAMS 2 query_vec "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" DIALECT 2 1) (integer) 3 2) "json:2" 3) 1) "__VEC_score" 2) "11.11" 3) "$" 4) "[{\"vec\":[1.1, 1.2, 1.3, 1.4, 1.5, 1.6]}]" 4) "json:0" 5) 1) "__VEC_score" 2) "91" 3) "$" 4) "[{\"vec\":[1.0, 2.0, 3.0, 4.0, 5.0, 6.0]}]" 6) "json:1" 7) 1) "__VEC_score" 2) "9100" 3) "$" 4) "[{\"vec\":[10.0, 20.0, 30.0, 40.0, 50.0, 60.0]}]"