

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.

# Inteligencia artificial generativa de Amazon DocumentDB
<a name="generative-ai"></a>

Amazon DocumentDB ofrece capacidades para permitir que los modelos de machine learning (ML) e inteligencia artificial (IA) generativa funcionen con los datos almacenados en Amazon DocumentDB en tiempo real. Los clientes ya no tienen que perder tiempo administrando una infraestructura independiente, escribiendo código para conectarse con otro servicio y duplicando datos de su base de datos principal.

Para obtener más información sobre la inteligencia artificial y cómo AWS puede satisfacer sus necesidades de IA, consulte este artículo sobre [«Qué es](https://aws.amazon.com/what-is/artificial-intelligence/)».

**Topics**
+ [Aprendizaje automático sin código con Amazon SageMaker AI Canvas](no-code-machine-learning.md)
+ [Búsqueda vectorial para Amazon DocumentDB](vector-search.md)

# Aprendizaje automático sin código con Amazon SageMaker AI Canvas
<a name="no-code-machine-learning"></a>

[Amazon SageMaker AI Canvas](https://docs.aws.amazon.com/sagemaker/latest/dg/canvas.html) le permite crear sus propios AI/ML modelos sin tener que escribir una sola línea de código. Puede crear modelos de aprendizaje automático para casos de uso comunes, como la regresión y la previsión, y puede acceder a los modelos básicos y evaluarlos (FMs) desde Amazon Bedrock. También puede acceder al público FMs desde Amazon SageMaker AI JumpStart para la generación de contenido, la extracción de texto y el resumen de texto para respaldar las soluciones de IA generativa.

## ¿Cómo crear modelos de aprendizaje automático sin código con AI Canvas? SageMaker
<a name="w2aac21b9b5"></a>

Amazon DocumentDB ahora se integra con Amazon SageMaker AI Canvas para permitir el aprendizaje automático (ML) sin código con los datos almacenados en Amazon DocumentDB. Ahora puede crear modelos de machine learning para las necesidades de regresión y previsión y utilizar modelos fundacionales para resumir y generar contenido con datos almacenados en Amazon DocumentDB sin necesidad de escribir una sola línea de código.

SageMaker AI Canvas proporciona una interfaz visual que permite a los clientes de Amazon DocumentDB generar predicciones sin necesidad de AI/ML conocimientos ni escribir una sola línea de código. Los clientes ahora pueden lanzar el espacio de trabajo de SageMaker AI Canvas desde Amazon DocumentDB Consola de administración de AWS, importarlos y unirlos para la preparación de datos y el entrenamiento de modelos. Los datos de Amazon DocumentDB ahora se pueden usar en SageMaker AI Canvas para crear y aumentar modelos con el fin de predecir la rotación de clientes, detectar fraudes, predecir fallos de mantenimiento, pronosticar métricas empresariales y generar contenido. Los clientes ahora pueden publicar y compartir información basada en el aprendizaje automático entre los equipos mediante la integración nativa de SageMaker AI Canvas con Quick. Los canales de ingesta de datos de SageMaker AI Canvas se ejecutan en instancias secundarias de Amazon DocumentDB de forma predeterminada, lo que garantiza que el rendimiento de las cargas de trabajo de ingestión de aplicaciones SageMaker y AI Canvas no se vea afectado.

Los clientes de Amazon DocumentDB pueden empezar a utilizar SageMaker AI Canvas accediendo a la nueva página de la consola de aprendizaje automático sin código de Amazon DocumentDB y conectándose a espacios de trabajo de AI Canvas nuevos o disponibles. SageMaker 

## Configuración del dominio y el perfil de usuario de AI SageMaker
<a name="sagemaker-domain"></a>

Puede conectarse a clústeres de Amazon DocumentDB desde dominios de SageMaker IA que se ejecutan en modo VPC únicamente. Al lanzar un dominio de SageMaker IA en su VPC, puede controlar el flujo de datos de sus entornos de SageMaker AI Studio y Canvas. Esto le permite restringir el acceso a Internet, monitorear e inspeccionar el tráfico mediante capacidades de AWS red y seguridad estándar y conectarse a otros AWS recursos a través de puntos de conexión de VPC. Consulte la sección [Introducción y configuración de Amazon SageMaker AI Canvas](https://docs.aws.amazon.com/sagemaker/latest/dg/canvas-getting-started.html) [en una VPC sin acceso a Internet](https://docs.aws.amazon.com/sagemaker/latest/dg/canvas-vpc.html), que se encuentra en la *Guía para desarrolladores de Amazon SageMaker AI*, para crear su dominio de SageMaker IA y conectarse a su clúster de Amazon DocumentDB. SageMaker 

## Configuración de los permisos de acceso de IAM para Amazon DocumentDB SageMaker y AI Canvas
<a name="iam-access-canvas"></a>

Un usuario de Amazon DocumentDB que haya asociado `AmazonDocDBConsoleFullAccess` a su rol e identidad asociados puede acceder a la Consola de administración de AWS. Añada las siguientes acciones al rol o identidad antes mencionados para proporcionar acceso al aprendizaje automático sin código con Amazon SageMaker AI Canvas.

```
"sagemaker:CreatePresignedDomainUrl",
"sagemaker:DescribeDomain",
"sagemaker:ListDomains",
"sagemaker:ListUserProfiles"
```

## Creación de usuarios y roles de bases de datos para SageMaker AI Canvas
<a name="w2aac21b9c11"></a>

Puede restringir el acceso a las acciones que los usuarios pueden hacer en bases de datos mediante el control de acceso basado en roles (RBAC) en Amazon DocumentDB. RBAC funciona otorgando uno o más roles a un usuario. Estos roles determinan las operaciones que un usuario puede realizar en los recursos de la base de datos. 

Como usuario de Canvas, se conecta a una base de datos de Amazon DocumentDB con credenciales de nombre de usuario y contraseña. Puede crear una base de datos user/role para un usuario de Canvas que tenga acceso de lectura a las bases de datos específicas mediante la funcionalidad RBAC de Amazon DocumentDB.

Por ejemplo, utilice la operación `createUser`:

```
db.createUser({
user: "canvas_user", 
pwd: "<insert-password>", 
roles: [{role: "read", db: "sample-database-1"}]
})
```

Esto crea un `canvas_user` que tiene permisos de lectura en la base de datos `sample-database-1`. Los analistas de Canvas pueden utilizar esta credencial para acceder a los datos del clúster de Amazon DocumentDB. Consulte [Acceso a la base de datos mediante el control de acceso basado en roles](role_based_access_control.md) para obtener más información. 

## Regiones disponibles
<a name="available-regions"></a>

La integración sin código está disponible en las regiones en las que se admiten Amazon DocumentDB y SageMaker Amazon AI Canvas. Las regiones son:
+ us-east-1 (Norte de Virginia)
+ us-east-2 (Ohio)
+ us-west-2 (Oregón)
+ ap-northeast-1 (Tokio)
+ ap-northeast-2 (Seúl)
+ ap-south-1 (Mumbai)
+ ap-southeast-1 (Singapur)
+ ap-southeast-2 (Sídney)
+ eu-central-1 (Fráncfort)
+ eu-west-1 (Irlanda)

Consulte [Amazon SageMaker AI Canvas](https://docs.aws.amazon.com/sagemaker/latest/dg/canvas.html) en la *Guía para desarrolladores de Amazon SageMaker AI* para conocer la disponibilidad regional más reciente.

# Búsqueda vectorial para Amazon DocumentDB
<a name="vector-search"></a>

La búsqueda vectorial es un método utilizado en el machine learning para encontrar puntos de datos similares a un punto de datos determinado mediante la comparación de sus representaciones vectoriales mediante métricas de distancia o similitud. Cuanto más cerca estén los dos vectores del espacio vectorial, más parecidos se considerarán los elementos subyacentes. Esta técnica ayuda a captar el significado semántico de los datos. Este enfoque es útil en diversas aplicaciones, como los sistemas de recomendación, el procesamiento del lenguaje natural y el reconocimiento de imágenes.

La búsqueda vectorial para Amazon DocumentDB combina la flexibilidad y la amplia capacidad de consulta de una base de datos de documentos basada en JSON con la potencia de la búsqueda vectorial. Si desea utilizar sus datos actuales de Amazon DocumentDB o una estructura de datos de documentos flexible para crear casos de uso de machine learning e IA generativa, como la experiencia de búsqueda semántica, recomendación de productos, personalización, chatbots, detección de fraudes y detección de anomalías, la búsqueda vectorial para Amazon DocumentDB es la opción ideal para usted. La búsqueda vectorial está disponible en los clústeres basados en instancias de Amazon DocumentDB 5.0.

**Topics**
+ [Inserción de vectores](#w2aac21c11b9)
+ [Creación de un índice vectorial](#w2aac21c11c11)
+ [Obtención de una definición de índice](#w2aac21c11c13)
+ [Consulta de vectores](#w2aac21c11c15)
+ [Características y limitaciones](#vector-limitations)
+ [Prácticas recomendadas](#w2aac21c11c19)

## Inserción de vectores
<a name="w2aac21c11b9"></a>

Para insertar vectores en la base de datos de Amazon DocumentDB, puede utilizar los métodos de inserción existentes: 

**Ejemplo**

En el siguiente ejemplo, se crea una colección de cinco documentos dentro de una base de datos de prueba. Cada documento incluye dos campos: el nombre del producto y su incrustación vectorial correspondiente.

```
db.collection.insertMany([
  {"product_name": "Product A", "vectorEmbedding": [0.2, 0.5, 0.8]},
  {"product_name": "Product B", "vectorEmbedding": [0.7, 0.3, 0.9]},
  {"product_name": "Product C", "vectorEmbedding": [0.1, 0.2, 0.5]},
  {"product_name": "Product D", "vectorEmbedding": [0.9, 0.6, 0.4]},
  {"product_name": "Product E", "vectorEmbedding": [0.4, 0.7, 0.2]}
]);
```

## Creación de un índice vectorial
<a name="w2aac21c11c11"></a>

Amazon DocumentDB admite los métodos de indexación Jerarchical Navigable Small World (HNSW) y de indexación de archivos invertidos con compresión plana (). IVFFlat Un IVFFlat índice segrega los vectores en listas y, posteriormente, busca en un subconjunto seleccionado de las listas más cercanas al vector de consulta. Por otro lado, un índice HNSW organiza los datos vectoriales en un gráfico de varias capas. Si bien HNSW tiene tiempos de creación más lentos en comparación con HNSW IVFFlat, ofrece un mejor rendimiento y recuperación de las consultas. Por el contrario IVFFlat, HNSW no implica ningún paso de entrenamiento, lo que permite generar el índice sin ninguna carga inicial de datos. En la mayoría de los casos de uso, recomendamos utilizar el tipo de índice HNSW para la búsqueda vectorial.

Si no crea un índice vectorial, Amazon DocumentDB hacer una búsqueda exacta del vecino más cercano, lo que garantiza una recuperación perfecta. Sin embargo, en los escenarios de producción, la velocidad es crucial. Recomendamos utilizar índices vectoriales, que pueden cambiar un poco de memoria por mejorar la velocidad. Es importante tener en cuenta que agregar un índice vectorial puede generar resultados de consulta diferentes.

**Plantillas**

Puede usar las siguientes plantillas de `createIndex` o `runCommand` para crear un índice vectorial en un campo vectorial:

------
#### [ Using createIndex ]

En algunos controladores, como mongosh y Java, el uso de los parámetros `vectorOptions` de `createIndex` puede provocar un error. En estos casos, recomendamos utilizar `runCommand`:

```
db.collection.createIndex(
  { "<vectorField>": "vector" },
  { "name": "<indexName>",
    "vectorOptions": {
      "type": " <hnsw> | <ivfflat> ",
      "dimensions": <number_of_dimensions>,
      "similarity": " <euclidean> | <cosine> | <dotProduct> ",
      "lists": <number_of_lists> [applicable for IVFFlat],
      "m": <max number of connections> [applicable for HNSW],
      "efConstruction": <size of the dynamic list for index build> [applicable for HNSW]
    }
  }
);
```

------
#### [ Using runCommand ]

En algunos controladores, como mongosh y Java, el uso de los parámetros `vectorOptions` de `createIndex` puede provocar un error. En estos casos, recomendamos utilizar `runCommand`:

```
db.runCommand(
  { "createIndexes": "<collection>", 
  "indexes": [{
      key: { "<vectorField>": "vector" },
      vectorOptions: {
          type: " <hnsw> | <ivfflat> ",
          dimensions: <number of dimensions>,
          similarity: " <euclidean> | <cosine> | <dotProduct> ",
          lists: <number_of_lists> [applicable for IVFFlat],
          m: <max number of connections> [applicable for HNSW],
          efConstruction: <size of the dynamic list for index build> [applicable for HNSW]
          },
      name: "myIndex" 
      }] 
  }
);
```

------


| Parámetro | Requisito | Tipo de datos: | Description (Descripción) | Valores | 
| --- | --- | --- | --- | --- | 
|  **name**  |  opcional  |  cadena  |  Especifica el nombre del índice.  |  Alfanumérico  | 
|  **type**  |  opcional  |    |  Especifica el tipo de índice.  |  Compatible: hnsw o ivfflat Valor predeterminado: HNSW (con el parche del motor a partir de la versión 3.0.4574)  | 
|  **dimensions**  |  obligatorio  |  entero  |  Especifica el número de dimensiones de los datos vectoriales.  |  Máximo de 2000 dimensiones.  | 
|  **similarity**  |  obligatorio  |  cadena  |  Especifica la métrica de distancia utilizada para el cálculo de similitud.  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/documentdb/latest/developerguide/vector-search.html)  | 
|  **lists**  |  necesario para IVFFlat  |  entero  |  Especifica el número de clústeres que el IVFFlat índice utiliza para agrupar los datos vectoriales. La configuración recomendada es el número de documentos/1000 para un máximo de un millón de documentos y `sqrt(# of documents)` para más de un millón de documentos.  |  Mínimo: 1 Máximo: consulte la tabla de listas por tipo de instancia que aparece en [Características y limitaciones](#vector-limitations) a continuación.  | 
|  **m**  |  opcional  |  entero  |  Especifica el número máximo de conexiones para un índice HNSW  |  Predeterminado: 16 Rango: [2, 100]  | 
|  **efConstruction**  |  opcional  |  entero  |  Especifica el tamaño de la lista dinámica de candidatos para construir el gráfico del índice de HNSW. `efConstruction` debe ser mayor o igual que (2 \$1 m)  |  Predeterminado: 64 Rango [4, 1000]  | 

Es importante que establezca adecuadamente el valor de los subparámetros, como `lists` para IVFFlat `m` y `efConstruction` para HNSW, ya que esto afectará a la precisión/recuperación, al tiempo de creación y al rendimiento de la búsqueda. Un valor de lista más alto aumenta la velocidad de la consulta, ya que reduce el número de vectores de cada lista, lo que se traduce en regiones más pequeñas. Sin embargo, un tamaño de región más pequeño puede provocar más errores de recuperación, lo que se traduce en una menor precisión. En el caso de HNSW, aumentar el valor `m` y `efConstruction` aumenta la precisión, pero también se incrementa el tiempo y el tamaño de creación del índice. Consulte los siguientes ejemplos:

**Ejemplos**

------
#### [ HNSW ]

```
db.collection.createIndex(
  { "vectorEmbedding": "vector" },
  { "name": "myIndex",
    "vectorOptions": {
      "type": "hnsw",
      "dimensions": 3,
      "similarity": "euclidean",
      "m": 16,
      "efConstruction": 64
    }
  }
);
```

------
#### [ IVFFlat ]

```
db.collection.createIndex(
  { "vectorEmbedding": "vector" },
  { "name": "myIndex",
    "vectorOptions": {
      "type": "ivfflat",
      "dimensions": 3,
      "similarity": "euclidean",
      "lists":1
    }
  }
)
```

------

## Obtención de una definición de índice
<a name="w2aac21c11c13"></a>

Puede ver los detalles de los índices, incluidos los índices vectoriales, mediante el comando `getIndexes`:

**Ejemplo**

```
db.collection.getIndexes()
```

**Ejemplo de salida**

```
[
 {
  "v" : 4,
  "key" : {
   "_id" : 1
  },
  "name" : "_id_",
  "ns" : "test.collection"
 },
 {
  "v" : 4,
  "key" : {
   "vectorEmbedding" : "vector"
  },
  "name" : "myIndex",
  "vectorOptions" : {
   "type" : "ivfflat",
   "dimensions" : 3,
   "similarity" : "euclidean",
   "lists" : 1
  },
  "ns" : "test.collection"
 }
]
```

## Consulta de vectores
<a name="w2aac21c11c15"></a>

Amazon DocumentDB admite dos operadores de búsqueda vectorial para consultar vectores:

### Operador de búsqueda vectorial clásico
<a name="w2aac21c11c15b5"></a>

Utilice la siguiente plantilla para consultar un vector:

```
db.collection.aggregate([
  {
    $search: {
      "vectorSearch": {
        "vector": <query vector>, 
        "path": "<vectorField>", 
        "similarity": "<distance metric>",
        "k": <number of results>,
        "probes":<number of probes> [applicable for IVFFlat],
        "efSearch":<size of the dynamic list during search> [applicable for HNSW]
      }
    }
  }
]);
```


| Parámetro | Requisito | Tipo | Description (Descripción) | Valores | 
| --- | --- | --- | --- | --- | 
|  **vectorSearch**  |  obligatorio  |  operador  |  Se utiliza dentro del comando \$1search para consultar los vectores.  |    | 
|  **vector**  |  obligatorio  |  array  |  Indica el vector de consulta que se utilizará para buscar vectores similares.  |    | 
|  **path**  |  obligatorio  |  cadena  |  Define el nombre del campo vectorial.  |    | 
|  **k**  |  obligatorio  |  entero  |  Especifica el número de resultados que devuelve la búsqueda.  |    | 
|  **similarity**  |  obligatorio  |  cadena  |  Especifica la métrica de distancia utilizada para el cálculo de similitud.  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/documentdb/latest/developerguide/vector-search.html)  | 
|  **probes**  |  opcional  |  entero  |  El número de clústeres que desea que inspeccione la búsqueda vectorial. Un valor más alto proporciona una mejor recuperación a costa de la velocidad. Se puede establecer en función del número de listas para la búsqueda exacta del vecino más cercano (momento en el que el planificador no utilizará el índice). La configuración recomendada para iniciar el refinamiento es `sqrt(# of lists)`.  |  Valor predeterminado: 1  | 
|  **efSearch**  |  opcional  |  entero  |  Especifica el tamaño de la lista dinámica de candidatos que el índice de HNSW utiliza durante la búsqueda. Un valor más alto de `efSearch` proporciona una mejor recuperación a costa de la velocidad.  |  Predeterminado: 40 Rango: [1, 1000]  | 

Es importante ajustar con precisión el valor de `efSearch` (HNSW) o `probes` (IVFFlat) para lograr el rendimiento y la precisión deseados. Vea los siguientes ejemplos de operaciones:

------
#### [ HNSW ]

```
db.collection.aggregate([
  {
    $search: {
      "vectorSearch": {
        "vector": [0.2, 0.5, 0.8], 
        "path": "vectorEmbedding", 
        "similarity": "euclidean",
        "k": 2,
        "efSearch": 40
      }
    }
  }
]);
```

------
#### [ IVFFlat ]

```
db.collection.aggregate([
  {
    $search: {
      "vectorSearch": {
        "vector": [0.2, 0.5, 0.8], 
        "path": "vectorEmbedding", 
        "similarity": "euclidean",
        "k": 2,
        "probes": 1
      }
    }
  }
]);
```

------

**Ejemplo de salida**

La salida de esta operación será similar a lo que se indica a continuación:

```
{ "_id" : ObjectId("653d835ff96bee02cad7323c"), "product_name" : "Product A", "vectorEmbedding" : [ 0.2, 0.5, 0.8 ] }
{ "_id" : ObjectId("653d835ff96bee02cad7323e"), "product_name" : "Product C", "vectorEmbedding" : [ 0.1, 0.2, 0.5 ] }
```

### `$vectorSearch`operador (disponible en Amazon DocumentDB 8.0 en adelante)
<a name="w2aac21c11c15b7"></a>

Utilice la siguiente plantilla para consultar un vector:

```
db.collection.aggregate([
{
  "$vectorSearch": {
    "exact": true | false,
    "index": "<index-name>" [supports only HNSW index],
    "limit": <number-of-results> [same as k],
    "path": "<vector field-to-search>",
    "queryVector": <array-of-numbers>,
    "numCandidates": <number-of-candidates> [same as efSearch], 
  }
}])
```

## Características y limitaciones
<a name="vector-limitations"></a>

**Compatibilidad de versiones**
+ La búsqueda vectorial para Amazon DocumentDB solo está disponible en los clústeres basados en instancias de Amazon DocumentDB 5.0\$1.

**Vectores**
+ Amazon DocumentDB puede indexar vectores de hasta 2000 dimensiones. Sin embargo, se pueden almacenar hasta 16 000 dimensiones sin un índice.

**Índices**
+ Para la creación de IVFFlat índices, la configuración recomendada para el parámetro de listas es el número de documentos/1000 para un máximo de 1 millón de documentos y para más de 1 millón de documentos. `sqrt(# of documents)` Debido al límite de memoria de trabajo, Amazon DocumentDB admite un determinado valor máximo del parámetro de listas en función del número de dimensiones. Como referencia, en la siguiente tabla se proporcionan los valores máximos del parámetro de listas para vectores de 500, 1000 y 2000 dimensiones:    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/documentdb/latest/developerguide/vector-search.html)
+ Los índices vectoriales no admiten otras opciones de índice, como `compound`, `sparse` o `partial`.
+ La compilación de índices paralelos no es compatible con el índice HNSW en Amazon DocumentDB 5.0.

**Consulta vectorial**
+ Para una consulta de búsqueda vectorial, es importante refinar los parámetros, por ejemplo, `probes` o `efSearch`, para obtener resultados óptimos. Cuanto mayor sea el valor del parámetro `probes` o `efSearch`, mayor será la recuperación y menor será la velocidad. La configuración recomendada para iniciar el refinamiento del parámetro de sondas es `sqrt(# of lists)`. 

## Prácticas recomendadas
<a name="w2aac21c11c19"></a>

Descubra las prácticas recomendadas para trabajar con la búsqueda vectorial en Amazon DocumentDB. Esta sección se actualiza continuamente a medida que se identifican nuevas prácticas recomendadas.
+ La creación del índice de archivos invertidos con compresión plana (IVFFlat) implica agrupar y organizar los puntos de datos en función de las similitudes. Por lo tanto, para que un índice sea más eficaz, le recomendamos que cargue al menos algunos datos antes de crearlo. 
+ Para consultas de búsqueda vectorial, es importante refinar los parámetros, por ejemplo, `probes` o `efSearch`, para obtener resultados óptimos. Cuanto mayor sea el valor del parámetro `probes` o `efSearch`, mayor será la recuperación y menor será la velocidad. La configuración recomendada para empezar a refinar el parámetro `probes` es `sqrt(lists)`. 

**Recursos**
+ [Búsqueda vectorial: entrada de novedades del blog](https://aws.amazon.com/blogs/aws/vector-search-for-amazon-documentdb-with-mongodb-compatibility-is-now-generally-available)
+ [Ejemplo de código de búsqueda semántica](https://github.com/aws-samples/amazon-documentdb-samples/tree/master/blogs/semanticsearch-docdb)
+ [Ejemplos de códigos de búsqueda vectorial de Amazon DocumentDB](https://github.com/aws-samples/amazon-documentdb-samples/tree/master/samples/vector-search)