Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
PIES. CREATE
Crea un índice e inicia la reposición de ese índice. Para obtener más información, consulte la descripción general de la búsqueda vectorial para obtener más detalles sobre la construcción del índice.
Sintaxis
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 del campo:
En Claves hash, el identificador de campo es Un nombre de campo.
En el JSON caso de las claves, el identificador de campo es una JSON ruta.
Para obtener más información, consulte El campo de índice escribe.
Tipos de campo:
TAG: Para obtener más información, consulte Etiquetas
. NUMERIC: El campo contiene un número.
TEXT: El campo contiene cualquier bloque de datos.
VECTOR: campo vectorial que admite la búsqueda vectorial.
Algoritmo: puede ser HNSW (mundo pequeño navegable jerárquico) o FLAT (fuerza bruta).
attr_count
: cantidad de atributos que se transferirán como configuración del algoritmo, que incluye tanto los nombres como los valores.{attribute_name} {attribute_value}
: pares clave/valor específicos del algoritmo que definen la configuración del índice.En el caso del FLAT algoritmo, los atributos son:
Obligatorio
DIM— Número de dimensiones del vector.
DISTANCE_ METRIC — Puede ser uno de [L2 | IP |COSINE].
TYPE— Tipo de vector. El único tipo admitido es
FLOAT32
.
Opcional:
INITIAL_ CAP — La capacidad vectorial inicial del índice afecta al tamaño de asignación de memoria del índice.
En el HNSW caso del algoritmo, los atributos son:
Obligatorio
TYPE— Tipo de vector. El único tipo admitido es
FLOAT32
.DIM— Dimensión vectorial, especificada como entero positivo. Máximo: 32768
DISTANCE_ METRIC — Puede ser uno de [L2 | IP |COSINE].
Opcional:
INITIAL_ CAP — La capacidad vectorial inicial del índice afecta al tamaño de la asignación de memoria del índice. El valor predeterminado es 1024.
M: cantidad máxima de bordes salientes permitidos para cada nodo del gráfico en cada capa. En la capa cero, el número máximo de bordes salientes será de 2 millones. El valor predeterminado es 16 y el máximo es 512.
EF_CONSTRUCTION: controla el número de vectores examinados durante la construcción del índice. Los valores más altos de este parámetro mejorarán la tasa de recuperación a costa de prolongar los tiempos de creación del índice. El valor predeterminado es 200. El valor máximo es 4096.
EF_RUNTIME: controla el número de vectores examinados durante las operaciones de consulta. Los valores más altos de este parámetro darán una tasa de recuperación mejorada a costa de tiempos de consulta prolongados. El valor de este parámetro se puede anular según cada consulta. El valor predeterminado es 10. El valor máximo es 4096.
Devolución
Devuelve un mensaje de OK de cadena simple o una respuesta de error.
Ejemplos
nota
En el siguiente ejemplo, se utilizan argumentos nativos de valkey-cli
ejemplo 1: Crear algunos índices
Cree un índice para vectores de tamaño 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
Cree un JSON índice de 6 dimensiones mediante el 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
ejemplo Ejemplo 2: Rellenar algunos datos
Los siguientes comandos utilizan un formato que permite que se ejecuten como argumentos en el programa de terminal redis-cli. Los desarrolladores que utilicen otros clientes de lenguajes de programación (Python, Ruby, C#, etc.) deberán seguir las reglas de control de esos entornos para el tratamiento de cadenas y datos binarios.
Creación de algunos datos hash y 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]}'
Tenga en cuenta lo siguiente:
Las claves del hash y los JSON datos tienen los prefijos de sus definiciones de índice.
Los vectores se encuentran en las rutas apropiadas de las definiciones del índice.
Los vectores hash se ingresan como datos hexadecimales, mientras que los JSON datos se ingresan como números.
Los vectores tienen las longitudes adecuadas, las entradas del vector HASH bidimensional tienen dos valores flotantes de datos hexadecimales y las entradas vectoriales json de seis dimensiones tienen seis números.
ejemplo Ejemplo 3: Eliminar y volver a crear un í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
Tenga en cuenta que el nuevo JSON índice utiliza el FLAT
algoritmo en lugar del HNSW
algoritmo. Tenga en cuenta también que volverá a indexar los JSON datos 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]}]"