FT. CREATE - Amazon MemoryDB

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

FT. CREATE

Crea un indice e avvia un riempimento di tale indice. Per ulteriori informazioni, consulta Panoramica della ricerca vettoriale per i dettagli sulla costruzione dell'indice.

Sintassi

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>]) )+

Schema

  • Identificatore di campo:

    • Per le chiavi hash, l'identificatore di campo è un nome di campo.

    • Per JSON le chiavi, l'identificatore di campo è un percorso. JSON

    Per ulteriori informazioni, consulta Tipi di campi dell'indice.

  • Tipi di campo:

    • TAG: Per ulteriori informazioni, vedere Tag.

    • NUMERIC: Il campo contiene un numero.

    • TEXT: Il campo contiene qualsiasi blob di dati.

    • VECTOR: campo vettoriale che supporta la ricerca vettoriale.

      • Algoritmo: può essere HNSW (Hierarchical Navigable Small World) o FLAT (forza bruta).

      • attr_count— numero di attributi che verranno passati come configurazione dell'algoritmo, che include sia nomi che valori.

      • {attribute_name} {attribute_value}— coppie chiave/valore specifiche dell'algoritmo che definiscono la configurazione dell'indice.

        Per FLAT quanto riguarda l'algoritmo, gli attributi sono:

        Campo obbligatorio:

        • DIM— Numero di dimensioni nel vettore.

        • DISTANCE_ METRIC — Può essere uno dei [L2 | IP |COSINE].

        • TYPE— Tipo di vettore. L'unico tipo supportato èFLOAT32.

        Facoltativo:

        • INITIAL_ CAP — La capacità vettoriale iniziale dell'indice influisce sulla dimensione di allocazione della memoria dell'indice.

        Per l'HNSWalgoritmo, gli attributi sono:

        Campo obbligatorio:

        • TYPE— Tipo di vettore. L'unico tipo supportato èFLOAT32.

        • DIM— Dimensione vettoriale, specificata come numero intero positivo. Massimo: 32768

        • DISTANCE_ METRIC — Può essere uno dei [L2 | IP |COSINE].

        Facoltativo:

        • INITIAL_ CAP — La capacità vettoriale iniziale nell'indice influisce sulla dimensione di allocazione della memoria dell'indice. Il valore predefinito è 1024.

        • M — Numero massimo di bordi in uscita consentiti per ogni nodo del grafico in ogni livello. Sul livello zero il numero massimo di bordi in uscita sarà 2M. Il valore predefinito è 16. Il massimo è 512.

        • EF_ CONSTRUCTION — controlla il numero di vettori esaminati durante la costruzione dell'indice. Valori più elevati per questo parametro miglioreranno il rapporto di richiamo a scapito di tempi più lunghi di creazione dell'indice. Il valore predefinito è 200. Il valore massimo è 4096.

        • EF_ RUNTIME — controlla il numero di vettori esaminati durante le operazioni di interrogazione. Valori più elevati per questo parametro possono migliorare il richiamo a scapito di tempi di interrogazione più lunghi. Il valore di questo parametro può essere sovrascritto in base alla singola query. Il valore predefinito è 10. Il valore massimo è 4096.

Valori restituiti

Restituisce una semplice stringa di messaggio OK o una risposta all'errore.

Examples (Esempi)

Nota

L'esempio seguente utilizza argomenti nativi di valkey-cli, come la dequotazione e l'eliminazione dell'escape dei dati, prima di inviarli a Valkey o Redis. OSS Per utilizzare altri client in linguaggi di programmazione (Python, Ruby, C#, ecc.), segui le regole di gestione di tali ambienti per la gestione di stringhe e dati binari. Per ulteriori informazioni sui client supportati, consulta Strumenti su cui costruire AWS

Esempio 1: Crea alcuni indici

Crea un indice per vettori di dimensione 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

Crea un JSON indice a 6 dimensioni utilizzando l'HNSWalgoritmo:

FT.CREATE json_idx1 ON JSON PREFIX 1 json: SCHEMA $.vec AS VEC VECTOR HNSW 6 DIM 6 TYPE FLOAT32 DISTANCE_METRIC L2 OK
Esempio 2: popolare alcuni dati

I seguenti comandi sono formattati in modo da poter essere eseguiti come argomenti nel programma terminale redis-cli. Gli sviluppatori che utilizzano client in linguaggio di programmazione (come Python, Ruby, C#, ecc.) dovranno seguire le regole di gestione del loro ambiente per gestire stringhe e dati binari.

Creazione di alcuni dati 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]}'

Tieni presente quanto segue:

  • Le chiavi dell'hash e dei JSON dati hanno i prefissi delle definizioni degli indici.

  • I vettori si trovano nei percorsi appropriati delle definizioni degli indici.

  • I vettori hash vengono immessi come dati esadecimali mentre i JSON dati vengono immessi come numeri.

  • I vettori hanno le lunghezze appropriate, le voci vettoriali hash bidimensionali hanno due float di dati esadecimali, le voci vettoriali json a sei dimensioni hanno sei numeri.

Esempio 3: eliminare e ricreare un indice
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

Nota che il nuovo JSON indice utilizza l'FLATalgoritmo anziché l'HNSWalgoritmo. Tieni inoltre presente che reindicizzerà i JSON dati esistenti:

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]}]"