

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.

# Capacidades de búsqueda avanzada con un motor vectorial Amazon S3
<a name="s3-vector-opensearch-integration-engine"></a>

Amazon OpenSearch Service ofrece la posibilidad de utilizar Amazon S3 como motor vectorial para índices vectoriales. Esta característica le permite descargar datos vectoriales a Amazon S3 y, al mismo tiempo, mantener las capacidades de búsqueda vectorial en menos de un segundo a un bajo costo.

Con esta función, OpenSearch almacena las incrustaciones vectoriales en un índice vectorial de Amazon S3 y, al mismo tiempo, mantiene otros campos del documento en el almacenamiento del OpenSearch clúster. Este método ofrece las siguientes ventajas:
+ **Durabilidad**: Los datos escritos en S3 Vectors se almacenan en S3, que se ha diseñado para ofrecer una durabilidad de datos del 99,999999999 % (11 nueves).
+ **Escalabilidad**: transfiera grandes conjuntos de datos vectoriales a S3 sin consumir almacenamiento en clústeres.
+ **Rentabilidad**: optimice los costos de almacenamiento para cargas de trabajo con gran cantidad de vectores.

OpenSearch tiene los siguientes requisitos para usar índices vectoriales de S3:
+ OpenSearch versión 2.19 o posterior
+ OpenSearch Instancias optimizadas
+ Última versión del parche para su OpenSearch lanzamiento

## Activación de S3 Vectors
<a name="s3-vector-opensearch-integration-engine-enable"></a>

Al [crear un dominio nuevo](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/createupdatedomains.html) o actualizar un dominio existente, puede elegir la opción **Habilitar S3 Vectors como motor** en la sección **Características avanzadas**. Esta configuración permite OpenSearch crear un depósito vectorial de S3 al utilizar S3 Vectors como motor. Al habilitar esta opción, OpenSearch configura S3 Vectors para su dominio de la siguiente manera:

1. Crea dos nuevas concesiones en la AWS KMS clave configurada con tu dominio:
   + Una concesión para las tareas de indexación en segundo plano de S3 Vectors con privilegios de descifrado
   + Una subvención para OpenSearch crear cubos de vectores S3 con permisos `GenerateDataKey`

1. Configurar la clave KMS utilizada por su OpenSearch dominio como CMK para el cifrado del resto de los datos del índice vectorial.

## Creación de índices con el motor vectorial de S3
<a name="s3-vector-opensearch-integration-engine-creating-indexes"></a>

Después de configurar un dominio, puede crear uno o más índices k-NN con campos, con el uso de `s3vector` como motor vectorial de backend en las asignaciones de índices. Puede configurar diferentes campos vectoriales con diferentes tipos de motores en función de su caso de uso.

**importante**  
Solo puede utilizar el motor `s3vector` para asignar una definición de campo durante la creación del índice. No puede agregar ni actualizar la asignación con el motor `s3vector` después de crear el índice.

Estos son algunos ejemplos que crean índices de motores vectoriales de S3.

**Ejemplo: creación de un índice k-NN con el motor vectorial de S3**

```
PUT my-first-s3vector-index
{
  "settings": {
    "index": {
      "knn": true
    }
  },
  "mappings": {
    "properties": {
        "my_vector_1": {
          "type": "knn_vector",
          "dimension": 2,
          "space_type": "l2",
          "method": {
            "engine": "s3vector"
          }
        },
        "price": {
          "type": "float"
        }
    }
  }
}
```

**Ejemplo: creación de un índice k-NN con motores vectoriales de S3 y FAISS**

Este ejemplo destaca el hecho de que se pueden utilizar varios motores vectoriales dentro del mismo índice.

```
PUT my-vector-index
{
  "settings": {
    "index": {
      "knn": true
    }
  },
  "mappings": {
    "properties": {
        "my_vector_1": {
          "type": "knn_vector",
          "dimension": 2,
          "space_type": "l2",
          "method": {
            "engine": "s3vector"
          }
        },
        "price": {
          "type": "float"
        },
        "my_vector_2": {
            "type": "knn_vector",
            "dimension": 2,
            "space_type": "cosine",
            "method": {
                "name": "hnsw",
                "engine": "faiss",
                "parameters": {
                    "ef_construction": 128,
                    "m": 24
                }
            }
        }
    }
  }
}
```

**Ejemplo no compatible: agregar el motor vectorial de S3 tras la creación del índice**

El siguiente enfoque no es compatible y fallará.

```
PUT my-first-s3vector-index
{
  "settings": {
    "index": {
      "knn": true
    }
  }
}

PUT my-first-s3vector-index/_mapping
{
  "properties": {
        "my_vector_1": {
          "type": "knn_vector",
          "dimension": 2,
          "space_type": "l2",
          "method": {
            "engine": "s3vector"
          }
        },
        "price": {
          "type": "float"
        }
    }
}
```

## Limitaciones de funcionalidad
<a name="s3-vector-opensearch-integration-engine-functional-limitations"></a>

Tenga en cuenta las siguientes limitaciones antes de utilizar el motor `s3vector` en un índice:


**Características y comportamientos no compatibles con el motor s3vector**  

| Característica | Comportamiento | 
| --- | --- | 
| Índice de Split/Shrink/Clone | Estos APIs errores se producen cuando se utilizan con un índice configurado con el `s3vector` motor en el `knn_vector` campo. | 
| Snapshots |  Los índices que utilizan el motor `s3vector` no admiten instantáneas. Para dominios administrados: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/opensearch-service/latest/developerguide/s3-vector-opensearch-integration-engine.html)  Si bien las instantáneas no son compatibles con la point-in-time recuperación, el `s3vector` motor, junto con las instancias OpenSearch optimizadas, ofrecen una durabilidad de 11 nueves.   | 
| UltraWarm nivel | Los índices configurados con `s3vector` el motor no pueden migrar al UltraWarm nivel. | 
| Replicación entre clústeres | Los índices configurados con el motor `s3vector` no admiten la replicación entre clústeres. | 
| Protección contra eliminaciones accidentales |  Como las instantáneas no son compatibles con los índices que utilizan el motor `s3vector`, la protección contra la eliminación accidental no está disponible. Aún puedes restaurar otros índices en el dominio.  | 
| Búsqueda radial | Las consultas con búsqueda radial no se admiten en los campos que utilizan el motor `s3vector`. | 

## Indexación de documentos
<a name="s3-vector-opensearch-integration-engine-index-documents"></a>

Tras crear un índice con el motor vectorial S3, puede ingerir documentos mediante la `_bulk` API estándar. OpenSearch transfiere automáticamente los datos vectoriales de los `knn_vector` campos que utilizan el `s3vector` motor al índice vectorial S3 en tiempo real. Los datos que pertenezcan a otros campos o a `knn_vector` campos que utilicen diferentes motores se conservarán OpenSearch en su propia capa de almacenamiento.

Para todas las solicitudes masivas que se confirmen, OpenSearch garantiza que todos los datos (vectoriales y no vectoriales) sean duraderos. Si una solicitud recibe un acuse de recibo negativo, no se garantiza la durabilidad de los documentos incluidos en esa solicitud masiva. Deberías volver a intentar realizar dichas solicitudes, preferiblemente después de eliminar la solicitud anterior fallida utilizando el identificador del documento para evitar la duplicación de documentos en estos raros casos.

**Ejemplo de indexación masiva**

```
POST _bulk
{ "index": { "_index": "my-first-s3vector-index", "_id": "1" } }
{ "my_vector_1": [1.5, 2.5], "price": 12.2 }
{ "index": { "_index": "my-first-s3vector-index", "_id": "2" } }
{ "my_vector_1": [2.5, 3.5], "price": 7.1 }
{ "index": { "_index": "my-first-s3vector-index", "_id": "3" } }
{ "my_vector_1": [3.5, 4.5], "price": 12.9 }
{ "index": { "_index": "my-first-s3vector-index", "_id": "4" } }
{ "my_vector_1": [5.5, 6.5], "price": 1.2 }
{ "index": { "_index": "my-first-s3vector-index", "_id": "5" } }
{ "my_vector_1": [4.5, 5.5], "price": 3.7 }
```

## Buscar documentos
<a name="s3-vector-opensearch-integration-engine-searching-documents"></a>

Puede buscar en su índice mediante la API `_search` estándar para ejecutar consultas de texto, k-NN o híbridas. En el caso de consultas en `knn_vector` campos configurados con el `s3vector` motor, transfiere OpenSearch automáticamente la consulta al índice de vectores S3 correspondiente.

**nota**  
Con el `s3vector` motor, las consultas de búsqueda k-NN admiten un valor máximo `k` de 100. Esto significa que en los resultados de la búsqueda se puede encontrar un máximo de 100 vecinos más cercanos.

**Ejemplo de consulta de búsqueda**

```
GET my-first-s3vector-index/_search
{
  "size": 2,
  "query": {
    "knn": {
      "my_vector_1": {
        "vector": [2.5, 3.5],
        "k": 2
      }
    }
  }
}
```

Puede ejecutar una búsqueda vectorial filtrada en el índice OpenSearch kNN utilizando el motor s3vector. OpenSearch aplica el filtro como filtro posterior y utiliza un mecanismo de sobremuestreo basado en ciertas heurísticas para equilibrar la recuperación con la latencia.

**Ejemplo de consulta de búsqueda con filtro:**

```
GET my-index/_search
{
  "size": 10,
  "query": {
    "knn": {
      "my_vector_field": {
        "vector": [2.5, 3.5, 1.2, 4.8],
        "k": 10,
        "filter": {
          "range": {
            "price": {
              "gte": 10,
              "lte": 100
            }
          }
        }
      }
    }
  }
}
```

## Parámetros de asignación compatibles
<a name="s3-vector-opensearch-integration-engine-supported-mapping-parameters"></a>

Con el motor `s3vector`, el campo `knn_vector` admite los siguientes parámetros en las asignaciones.


**Parámetros de campo vectorial**  

| Parámetro | Obligatorio | Description (Descripción) | Valores admitidos | 
| --- | --- | --- | --- | 
| type | Sí | El tipo de campo presente en el documento. | knn\$1vector | 
| dimension | Sí | La dimensión de cada vector que se ingerirá en el índice. | >0, <=4096 | 
| space\$1type | No | El espacio vectorial utilizado para calcular la distancia entre los vectores. | l2, cosinesimil | 
| method.engine | Sí | El motor k-NN aproximado que se utilizará para la indexación y la búsqueda. | s3vector | 
| method.name | No | El método del vecino más cercano | "" | 
| store | N/A | No es posible activar o desactivar este parámetro de mapeo, ya que los datos de knn\$1vector no se almacenan en él. OpenSearch | No es compatible | 
| doc\$1values | N/A | No es posible activar o desactivar este parámetro de mapeo, ya que los datos de knn\$1vector no se almacenan en él. OpenSearch | No es compatible | 

**importante**  
El motor `knn_vector` no admite los tipos de campos anidados de `s3vector`

## Facturación y medición
<a name="s3-vector-opensearch-integration-engine-metering-billing"></a>

Para obtener información sobre la medición y la facturación de esta función, consulta los [precios de Amazon OpenSearch Service](https://aws.amazon.com/opensearch-service/pricing/).

## Deshabilitación del motor s3vector
<a name="s3-vector-opensearch-integration-engine-disable"></a>

Antes de deshabilitar el motor `s3vector`, elimine *todos* los índices que lo utilizan actualmente. Si no lo hace, cualquier intento de deshabilitar el motor fallará.

Tenga en cuenta también que al habilitar o deshabilitar el motor `s3vector` se desencadena una [implementación azul/verde](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/managedomains-configuration-changes.html) en su dominio.

Para deshabilitar el motor `s3vector`, [edite la configuración de su dominio](https://docs.aws.amazon.com/cli/latest/reference/opensearch/update-domain-config.html) y configure `S3VectorsEngine.Enabled: false`.