

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.

# Comandos de búsqueda vectorial
<a name="vector-search-commands"></a>

A continuación se muestra una lista de comandos compatibles para la búsqueda vectorial. 

**Topics**
+ [FT.CREATE](vector-search-commands-ft.create.md)
+ [FT.SEARCH](vector-search-commands-ft.search.md)
+ [FT.AGGREGATE](vector-search-commands-ft.aggregate.md)
+ [FT.DROPINDEX](vector-search-commands-ft.dropindex.md)
+ [FT.INFO](vector-search-commands-ft.info.md)
+ [FT.\$1LIST](vector-search-commands-ft.list.md)
+ [FT.ALIASADD](vector-search-commands-ft.aliasadd.md)
+ [FT.ALIASDEL](vector-search-commands-ft.aliasdel.md)
+ [FT.ALIASUPDATE](vector-search-commands-ft.aliasupdate.md)
+ [FT.\$1ALIASLIST](vector-search-commands-ft.aliaslist.md)
+ [FT.PROFILE](vector-search-commands-ft.profile.md)
+ [FT.EXPLAIN](vector-search-commands-ft.explain.md)
+ [FT.EXPLAINCLI](vector-search-commands-ft.explain-cli.md)

# FT.CREATE
<a name="vector-search-commands-ft.create"></a>

 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](https://docs.aws.amazon.com/memorydb/latest/devguide/vector-search-overview.html) 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 Claves JSON, el identificador de campo es Una ruta JSON.

  Para obtener más información, consulte [El campo de índice escribe](vector-search-overview.md#vector-search-index-field-types).
+ Tipos de campo:
  + ETIQUETA: Para obtener más información, consulte [Etiquetas](https://redis.io/docs/interact/search-and-query/advanced-concepts/tags/).
  + NUMÉRICO: el campo contiene un número.
  + TEXTO: 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árquicamente) 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}`— key/value pares específicos del algoritmo que definen la configuración del índice. 

      Para el algoritmo FLAT, los atributos son:

      Obligatorio
      + DIM: la cantidad de dimensiones del vector.
      + DISTANCE\$1METRIC: puede ser uno de los siguientes: [L2 \$1 IP \$1 COSINE].
      + TYPE: tipo de vector. El único tipo admitido es `FLOAT32`.

      Opcional:
      + INITIAL\$1CAP: capacidad vectorial inicial del índice que afecta al tamaño de asignación de memoria del índice.

      Para el algoritmo HNSW, los atributos son:

      Obligatorio
      + TYPE: tipo de vector. El único tipo admitido es `FLOAT32`.
      + DIM: dimensión vectorial, especificada como un entero positivo. Máximo: 32768
      + DISTANCE\$1METRIC: puede ser uno de los siguientes: [L2 \$1 IP \$1 COSINE].

      Opcional:
      + INITIAL\$1CAP: capacidad vectorial inicial del índice que afecta al tamaño de 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\$1CONSTRUCTION: controla la cantidad 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\$1RUNTIME: controla la cantidad 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](https://valkey.io/topics/cli/), como eliminar las comillas y los valores de escape de los datos, antes de enviarlos a Valkey o Redis OSS. Para usar otros clientes de lenguajes de programación (Python, Ruby, C\$1, etc.), siga las reglas de manejo de esos entornos para tratamiento de cadenas y datos binarios. Para obtener más información sobre los clientes compatibles, consulte [Herramientas](https://aws.amazon.com/developer/tools/) sobre las que basarse AWS

**Example 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 índice JSON de 6 dimensiones mediante el algoritmo HNSW:  

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

**Example 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\$1, 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 de los datos HASH y JSON 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 datos JSON 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.

**Example 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 índice JSON usa el algoritmo `FLAT` en lugar del algoritmo `HNSW`. Tenga en cuenta también que volverá a indexar los datos JSON 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]}]"
```

# FT.SEARCH
<a name="vector-search-commands-ft.search"></a>

Utiliza la expresión de consulta proporcionada para localizar las claves dentro de un índice. Una vez localizados, se puede devolver el and/or contenido del recuento de los campos indexados dentro de esas claves. Para obtener más información, consulte [Expresión de consulta de búsqueda vectorial](https://docs.aws.amazon.com/memorydb/latest/devguide/vector-search-overview.html#vector-search-query-expression).

Para crear datos para utilizarlos en estos ejemplos, consulte el comando [FT.CREATE](https://docs.aws.amazon.com/memorydb/latest/devguide/vector-search-commands-ft.create.html).

**Sintaxis**

```
FT.SEARCH <index-name> <query>
[RETURN <token_count> (<field-identifier> [AS <alias>])+]
[TIMEOUT timeout] 
[PARAMS <count> <name> <value> [<name> <value>]]
[LIMIT <offset> <count>]
[COUNT]
```
+ RETURN: esta cláusula identifica qué campos de una clave se devuelven. La cláusula AS opcional de cada campo anula el nombre del campo en el resultado. Solo se pueden especificar los campos que se han declarado para este índice.
+ LIMIT: <offset><count>: Esta cláusula proporciona capacidad de paginación, ya que solo se devuelven las claves que cumplen los valores de compensación y recuento. Si se omite esta cláusula, el valor predeterminado es “LIMIT 0 10”, es decir, solo se devolverá un máximo de 10 claves. 
+ PARAMS: dos veces la cantidad de pares de valores clave. Se puede hacer referencia a los key/value pares de parámetros desde la expresión de consulta. Para obtener más información, consulte [Expresión de consulta de búsqueda vectorial](https://docs.aws.amazon.com/memorydb/latest/devguide/vector-search-overview.html#vector-search-query-expression).
+ COUNT: esta cláusula impide que se devuelva el contenido de las claves, solo se devuelve la cantidad de claves. Es un alias para “LIMIT 0 0”.

**Devolución**

Devuelve una matriz o una respuesta de error.
+ Si la operación se completa correctamente, devuelve una matriz. El primer elemento es la cantidad total de claves que coinciden con la consulta. Los elementos restantes son pares de nombre de clave y la lista de campos. La lista de campos es otra matriz que comprende pares de nombres y valores de campo. 
+ Si el índice está en proceso de reposición, el comando devuelve inmediatamente una respuesta de error.
+ Si se agota el tiempo de espera, el comando devuelve una respuesta de error.

**Ejemplo: haz algunas búsquedas**

**nota**  
En el siguiente ejemplo, se utilizan argumentos nativos de [valkey-cli](https://valkey.io/topics/cli/), como eliminar las comillas y los valores de escape de los datos, antes de enviarlos a Valkey o Redis OSS. Para usar otros clientes de lenguajes de programación (Python, Ruby, C\$1, etc.), siga las reglas de manejo de esos entornos para tratamiento de cadenas y datos binarios. Para obtener más información sobre los clientes compatibles, consulte [Herramientas sobre las que basarse AWS](https://aws.amazon.com/developer/tools/)

**Una búsqueda HASH**

```
FT.SEARCH hash_idx1 "*=>[KNN 2 @VEC $query_vec]" PARAMS 2 query_vec "\x00\x00\x00\x00\x00\x00\x00\x00" DIALECT 2
1) (integer) 2
2) "hash:0"
3) 1) "__VEC_score"
   2) "0"
   3) "vec"
   4) "\x00\x00\x00\x00\x00\x00\x00\x00"
4) "hash:1"
5) 1) "__VEC_score"
   2) "1"
   3) "vec"
   4) "\x00\x00\x00\x00\x00\x00\x80\xbf"
```

Esto produce dos resultados, ordenados por su puntuación, que es la distancia desde el vector de consulta (ingresado como hexadecimal).

**Búsquedas JSON**

```
FT.SEARCH json_idx1 "*=>[KNN 2 @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) 2
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]}]"
```

Esto produce los dos resultados más cercanos, ordenados por su puntuación. Tenga en cuenta que los valores vectoriales JSON se convierten en flotantes y el vector de consulta sigue constando de datos vectoriales. Tenga en cuenta también que, dado que el parámetro `KNN` es 2, solo hay dos resultados. Un valor mayor devolverá más resultados:

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

# FT.AGGREGATE
<a name="vector-search-commands-ft.aggregate"></a>

Como superconjunto del comando FT.SEARCH, permite un procesamiento adicional sustancial de las claves seleccionadas por la expresión de consulta.

**Sintaxis**

```
FT.AGGREGATE index query
  [LOAD * | [count field [field ...]]]
  [TIMEOUT timeout]
  [PARAMS count name value [name value ...]]
  [FILTER expression]
  [LIMIT offset num]  
  [GROUPBY count property [property ...] [REDUCE function count arg [arg ...] [AS name] [REDUCE function count arg [arg ...] [AS name] ...]] ...]] 
  [SORTBY count [ property ASC | DESC [property ASC | DESC ...]] [MAX num]] 
  [APPLY expression AS name]
```
+ Las cláusulas FILTER, LIMIT, GROUPBY, SORTBY y APPLY se pueden repetir varias veces en cualquier orden y mezclarse libremente. Se aplican en el orden especificado y el resultado de una cláusula alimenta la entrada de la siguiente cláusula.
+ En la sintaxis anterior, una “propiedad” es un campo declarado en el comando [FT.CREATE](https://docs.aws.amazon.com/memorydb/latest/devguide/vector-search-commands-ft.create.html) para este índice O el resultado de una cláusula APPLY o función REDUCE anterior.
+ La cláusula LOAD se limita a cargar campos que se han declarado en el índice. “LOAD \$1” cargará todos los campos declarados en el índice. 
+ Se admiten las siguientes funciones reductoras: COUNT, COUNT\$1DISTINCTISH, SUM, MIN, MAX, AVG, STDDEV, QUANTILE, TOLIST, FIRST\$1VALUE y RANDOM\$1SAMPLE. Para obtener más información, consulte [Agregaciones](https://redis.io/docs/interact/search-and-query/search/aggregations/).
+ LIMIT <offset><count>: conserva los registros que comienzan en <offset>y continúan hasta <count>, todos los demás registros se descartan.
+ PARAMS: dos veces la cantidad de pares de valores clave. Se puede hacer referencia a los key/value pares de parámetros desde la expresión de consulta.

**Devolución**

Devuelve una matriz o una respuesta de error.
+ Si la operación se completa correctamente, devuelve una matriz. El primer elemento es un número entero sin ningún significado particular (debe ignorarse). Los elementos restantes son los resultados obtenidos en la última etapa. Cada elemento es una matriz de pares de nombre y valor de campo.
+ Si el índice está en proceso de reposición, el comando devuelve inmediatamente una respuesta de error.
+ Si se agota el tiempo de espera, el comando devuelve una respuesta de error.

# FT.DROPINDEX
<a name="vector-search-commands-ft.dropindex"></a>

Elimine un índice. Se eliminan la definición del índice y el contenido asociado. Las claves no se ven afectadas.

**Sintaxis**

```
FT.DROPINDEX <index-name>
```

**Devolución**

Devuelve un mensaje de OK de cadena simple o una respuesta de error.

# FT.INFO
<a name="vector-search-commands-ft.info"></a>

**Sintaxis**

```
FT.INFO <index-name>
```

El resultado de la página FT.INFO es una matriz de pares de valores clave, tal como se describe en la siguiente tabla:


| Key | Tipo de valor | Description (Descripción) | 
| --- | --- | --- | 
| index\$1name | cadena | Nombre del índice | 
| creation\$1timestamp | entero | Marca temporal de la hora de creación de estilo Unix | 
| key\$1type | cadena | HASH o JSON | 
| key\$1prefixes | matriz de cadenas | Prefijos clave para este índice | 
| campos | matriz de información de campo | Campos de este índice | 
| space\$1usage | entero | Bytes de memoria utilizados por este índice | 
| fullext\$1space\$1usage | entero | Bytes de memoria utilizados por campos no vectoriales | 
| vector\$1space\$1usage | entero | Bytes de memoria utilizados por campos vectoriales | 
| num\$1docs | entero | Número de claves que contiene actualmente el índice | 
| num\$1indexed\$1vectors | entero | Número de vectores que contiene actualmente el índice | 
| current\$1lag | entero | Retraso reciente de la incorporación (milisegundos) | 
| backfill\$1status | cadena | Uno de los siguientes: completado InProgres, pausado o fallido  | 

La tabla siguiente describe información para cada campo:


| Key | Tipo de valor | Description (Descripción) | 
| --- | --- | --- | 
| identificador | cadena | nombre del campo | 
| field\$1name | cadena | Nombre del miembro del HASH o ruta JSON | 
| type | cadena | uno de los siguientes: numérico, de etiqueta, de texto o vectorial | 
| option | cadena | ignore | 

Si el campo es del tipo Vector, habrá información adicional en función del algoritmo. 

Para el algoritmo HNSW:


| Key | Tipo de valor | Description (Descripción) | 
| --- | --- | --- | 
| algoritmo | cadena | HNSW | 
| data\$1type | cadena | FLOAT32 | 
| distance\$1metric | cadena | uno de los siguientes: L2, IP o Cosine | 
| initial\$1capacity | entero | Tamaño inicial del índice de campo vectorial | 
| current\$1capacity | entero | Tamaño actual del índice de campo vectorial | 
| maximum\$1edges | entero | Parámetro M en el momento de la creación | 
| ef\$1construction | entero | Parámetro EF\$1CONSTRUCTION en el momento de la creación | 
| ef\$1runtime | entero | Parámetro EF\$1RUNTIME en el momento de la creación | 

Para el algoritmo FLAT:


| Key | Tipo de valor | Description (Descripción) | 
| --- | --- | --- | 
| algoritmo | cadena | FLAT | 
| data\$1type | cadena | FLOAT32 | 
| distance\$1metric | cadena | uno de los siguientes: L2, IP o Cosine | 
| initial\$1capacity | entero | Tamaño inicial del índice de campo vectorial | 
| current\$1capacity | entero | Tamaño actual del índice de campo vectorial | 

# FT.\$1LIST
<a name="vector-search-commands-ft.list"></a>

Enumera todos los índices.

**Sintaxis**

```
FT._LIST 
```

**Devolución**

Devuelve una matriz de nombres de índice

# FT.ALIASADD
<a name="vector-search-commands-ft.aliasadd"></a>

Añada un alias para un índice. El nuevo nombre de alias se puede usar en cualquier lugar donde se requiera un nombre de índice.

**Sintaxis**

```
FT.ALIASADD <alias> <index-name> 
```

**Devolución**

Devuelve un mensaje de OK de cadena simple o una respuesta de error.

# FT.ALIASDEL
<a name="vector-search-commands-ft.aliasdel"></a>

Elimine un alias existente para un índice.

**Sintaxis**

```
FT.ALIASDEL <alias>
```

**Devolución**

Devuelve un mensaje de OK de cadena simple o una respuesta de error.

# FT.ALIASUPDATE
<a name="vector-search-commands-ft.aliasupdate"></a>

Actualice un alias existente para que apunte a un índice físico diferente. Este comando solo afecta a las futuras referencias sobre el alias. Este comando no afecta a las operaciones actualmente en curso (FT.SEARCH, FT.AGGREGATE).

**Sintaxis**

```
FT.ALIASUPDATE <alias> <index>
```

**Devolución**

Devuelve un mensaje de OK de cadena simple o una respuesta de error.

# FT.\$1ALIASLIST
<a name="vector-search-commands-ft.aliaslist"></a>

Enumera los alias del índice.

**Sintaxis**

```
FT._ALIASLIST
```

**Devolución**

Devuelve una matriz del tamaño del número de alias actuales. Cada elemento de la matriz es el par alias-índice.

# FT.PROFILE
<a name="vector-search-commands-ft.profile"></a>

Ejecuta una consulta y devuelve la información de perfil sobre esa consulta.

**Sintaxis**

```
FT.PROFILE 

<index>
SEARCH | AGGREGATE 
[LIMITED]
QUERY <query ....>
```

**Devolución**

Matriz de dos elementos. El primer elemento es el resultado del comando `FT.SEARCH` o `FT.AGGREGATE` que se perfiló. El segundo elemento es una matriz de información de rendimiento y creación de perfiles.

# FT.EXPLAIN
<a name="vector-search-commands-ft.explain"></a>

Analiza una consulta y devuelve información sobre cómo se analizó esa consulta.

**Sintaxis**

```
FT.EXPLAIN <index> <query>
```

**Devolución**

Una cadena que contiene los resultados analizados.

# FT.EXPLAINCLI
<a name="vector-search-commands-ft.explain-cli"></a>

Igual que el comando FT.EXPLAIN, excepto que los resultados se muestran en un formato diferente, más útil con redis-cli.

**Sintaxis**

```
FT.EXPLAINCLI <index> <query>
```

**Devolución**

Una cadena que contiene los resultados analizados.