

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.

# Funcionamiento de las bases de conocimientos de Amazon Bedrock
<a name="kb-how-it-works"></a>

La bases de conocimientos de Amazon Bedrock le ayudan a aprovechar la generación aumentada por recuperación (RAG), una técnica popular que consiste en extraer información de un almacén de datos para aumentar las respuestas generadas por los modelos de lenguaje grandes (LLM). Al configurar una base de conocimiento con sus orígenes de datos, la aplicación puede consultarla para obtener información que permita responder a la consulta, ya sea con citas directas de los orígenes o con respuestas naturales generadas a partir de los resultados de la consulta.

Con Bases de conocimiento de Amazon Bedrock, puede crear aplicaciones que se enriquezcan con el contexto que se obtiene al consultar una base de conocimiento. Esto permite una comercialización más rápida, ya que evita la ardua tarea de crear canalizaciones y le proporciona una solución de RAG lista para usar que reduce el tiempo de compilación de su aplicación. Añadir una base de conocimientos también aumenta la rentabilidad, ya que elimina la necesidad de entrenar continuamente el modelo para poder aprovechar sus datos privados.

Los siguientes diagramas ilustran esquemáticamente cómo se lleva a cabo la RAG. La base de conocimientos simplifica la configuración e implementación de la RAG al automatizar varios pasos de este proceso.

**Preprocesamiento de datos no estructurados**

Para permitir una recuperación eficaz de los datos privados no estructurados (los datos que no existen en un almacén de datos no estructurado), una práctica habitual consiste en convertir los datos en texto y dividir el texto en fragmentos manejables. A continuación, estos fragmentos se convierten en incrustaciones y se escriben en un índice vectorial, manteniendo una correspondencia con el documento original. Estas incrustaciones se utilizan para determinar la similitud semántica entre las consultas y el texto de los orígenes de datos. La siguiente imagen ilustra el preprocesamiento de los datos para la base de datos vectorial.

![\[Procesamiento previo de datos para la generación aumentada de recuperación\]](http://docs.aws.amazon.com/es_es/bedrock/latest/userguide/images/kb/rag-preprocess.png)


Las incrustaciones vectoriales son una serie de números que representan cada fragmento de texto. Un modelo convierte cada fragmento de texto en series de números, llamados vectores, para que los textos se puedan comparar matemáticamente. Estos vectores pueden ser números de punto flotante (float32) o números binarios. La mayoría de los modelos de incrustaciones compatibles con Amazon Bedrock utilizan vectores de punto flotante de forma predeterminada. Sin embargo, algunos modelos admiten vectores binarios. Si elige un modelo de incrustación binario, también debe elegir un modelo y un almacén de vectores que admitan vectores binarios.

Los vectores binarios, que utilizan solo 1 bit por dimensión, no son tan costosos de almacenar como los vectores de punto flotante (float32), que utilizan 32 bits por dimensión. Sin embargo, los vectores binarios no son tan precisos como los vectores de punto flotante en su representación del texto.

El siguiente ejemplo muestra un fragmento de texto en tres representaciones:


****  

| Representación | Valor | 
| --- | --- | 
| Texto | “Amazon Bedrock utiliza modelos fundacionales de alto rendimiento de empresas líderes en IA y de Amazon”. | 
| Vector de punto flotante | [0.041..., 0.056..., -0.018..., -0.012..., -0.020..., ...] | 
| Vector binario | [1,1,0,0,0, ...] | 

**Ejecución en tiempo de ejecución**

En tiempo de ejecución, se utiliza un modelo de incrustación para convertir la consulta del usuario en un vector. A continuación, se consulta el índice vectorial para buscar fragmentos semánticamente similares a la consulta del usuario, comparando los vectores del documento con el vector de consulta del usuario. En el último paso, la petición del usuario se aumenta con el contexto adicional de los fragmentos que se recuperan del índice vectorial. Luego, la petición, junto con el contexto adicional, se envía al modelo para generar una respuesta para el usuario. La siguiente imagen ilustra cómo funciona la RAG en tiempo de ejecución para aumentar las respuestas a las consultas de los usuarios.

![\[Generación aumentada de recuperación en tiempo de ejecución\]](http://docs.aws.amazon.com/es_es/bedrock/latest/userguide/images/kb/rag-runtime.png)


Para obtener más información sobre cómo convertir los datos en una base de conocimiento, cómo consultarla después de configurarla y las personalizaciones que puede aplicar al origen de datos durante la ingesta, consulte los siguientes temas:

**Topics**
+ [Conversión de datos en una base de conocimiento](kb-how-data.md)
+ [Recuperación de información de orígenes de datos mediante Bases de conocimiento de Amazon Bedrock](kb-how-retrieval.md)
+ [Personalización de la base de conocimiento](kb-how-customization.md)

# Conversión de datos en una base de conocimiento
<a name="kb-how-data"></a>

Para crear una base de conocimiento, conéctese a un origen de datos compatible al que desee que pueda acceder su base de conocimiento. Su base de conocimiento podrá responder a las consultas de los usuarios o generar respuestas en función de los datos recuperados.

 Bases de conocimiento de Amazon Bedrock admite una serie de documentos, incluidos texto, imágenes o documentos multimodales que contienen tablas, gráficos, diagramas y otras imágenes. Los datos *multimodales* se refieren a una combinación de texto y datos visuales. Algunos ejemplos de tipos de archivos que contienen datos no estructurados son texto, markdown, HTML y. PDFs

En las siguientes secciones se describen los tipos de datos que admite Bases de conocimiento de Amazon Bedrock y los servicios a los que puede conectar su base de conocimiento para cada tipo de datos:

## Datos no estructurados
<a name="kb-how-unstructured"></a>

Los datos no estructurados son aquellos que se no se ajustan a una estructura predefinida. Bases de conocimiento de Amazon Bedrock permite conectarse a los siguientes servicios para añadir datos no estructurados a una base de conocimiento:
+ Amazon S3
+ Confluence (versión preliminar)
+ Microsoft SharePoint (versión preliminar)
+ Salesforce (versión preliminar)
+ Web Crawler (versión preliminar)
+ Origen de datos personalizado (permite la ingesta directa de datos en bases de conocimiento sin necesidad de sincronizarlos)

Un origen de datos contiene el formato original de sus documentos. Para optimizar el proceso de consulta, una base de conocimiento convierte los datos sin procesar en *incrustaciones vectoriales*, una representación numérica de los datos, para cuantificar la similitud con las consultas que también se convierten en incrustaciones vectoriales. Bases de conocimiento de Amazon Bedrock utiliza los siguientes recursos en el proceso de conversión del origen de datos:
+ Modelo de incrustación: modelo fundacional que convierte los datos en incrustaciones vectoriales. Para los datos multimodales que contienen texto e imágenes, puede utilizar modelos de incrustación multimodales como Amazon Titan Multimodal Embeddings G1 o Cohere Embed v3.
+ Almacén de vectores: un servicio que almacena la representación vectorial de los datos. Se admiten los siguientes almacenes de vectores:
  + Amazon OpenSearch Serverless
  + Amazon Neptune
  + Amazon Aurora (RDS)
  + Pinecone
  + Redis Enterprise Cloud
  + Atlas MongoDB

El proceso de convertir los datos en incrustaciones vectoriales se denomina *ingesta*. El proceso de ingesta que convierte los datos en una base de conocimiento consta de los siguientes pasos:

**Ingesta**

1. El analizador que elija analiza los datos. Para obtener más información acerca del análisis, consulte [Opciones de análisis del origen de datos](kb-advanced-parsing.md).

1. Cada documento del origen de datos se divide en *fragmentos*, es decir, subdivisiones de los datos que se pueden definir por el número de tokens y otros parámetros. Para obtener más información sobre la fragmentación, consulte [Funcionamiento de la fragmentación de contenido para las bases de conocimiento](kb-chunking.md).

1. El modelo de incrustación que elija convierte los datos en incrustaciones vectoriales. En el caso del contenido multimodal, las imágenes se incrustan como vectores visuales, mientras que el texto se incrusta como vectores de texto, lo que permite realizar búsquedas en ambas modalidades.

1. Las incrustaciones vectoriales se escriben en un índice vectorial del almacén de vectores que elija.

Una vez finalizado el proceso de ingesta, su base de conocimiento estará lista para ser consultada. Para obtener información sobre cómo consultar y recuperar información de la base de conocimiento, consulte [Recuperación de información de orígenes de datos mediante Bases de conocimiento de Amazon Bedrock](kb-how-retrieval.md).

Si realiza cambios en un origen de datos, debe sincronizarlos para ingerir las adiciones, modificaciones y eliminaciones en la base de conocimiento. Algunos orígenes de datos admiten la ingesta o eliminación directa de archivos en la base de conocimiento, lo que elimina la necesidad de tratar la modificación y la ingesta de orígenes de datos como pasos distintos y la necesidad de realizar siempre sincronizaciones completas. Para obtener información sobre cómo ingerir documentos directamente en su base de conocimiento y los orígenes de datos que lo admiten, consulte [Ingesta de cambios directamente en una base de conocimiento](kb-direct-ingestion.md).

Bases de conocimiento de Amazon Bedrock ofrece varias opciones para personalizar la forma en que se ingieren los datos. Para obtener más información acerca de la personalización de este proceso, consulte [Personalización de la base de conocimiento](kb-how-customization.md).

## Datos estructurados
<a name="kb-how-structured"></a>

Los datos estructurados son datos tabulares en un formato predefinido por el almacén de datos en el que se encuentran. Bases de conocimiento de Amazon Bedrock se conecta a los almacenes de datos estructurados compatibles mediante el motor de consultas de Amazon Redshift. Bases de conocimiento de Amazon Bedrock proporciona un mecanismo totalmente administrado que analiza los patrones de consulta, el historial de consultas y los metadatos del esquema para convertir las consultas en lenguaje natural en consultas SQL. Estas consultas convertidas se utilizan luego para recuperar la información pertinente de los orígenes de datos compatibles.

Bases de conocimiento de Amazon Bedrock permite conectarse a los siguientes servicios para añadir datos estructurados a una base de conocimiento:
+ Amazon Redshift
+ AWS Glue Data Catalog(AWS Lake Formation)

Si conecta su base de conocimiento a un almacén de datos estructurado, no necesita convertir los datos en incrustaciones vectoriales. En su lugar, Bases de conocimiento de Amazon Bedrock puede consultar directamente el almacén de datos estructurados. Durante la consulta, Bases de conocimiento de Amazon Bedrock pueden convertir las consultas de los usuarios en consultas SQL para recuperar los datos pertinentes para la consulta del usuario y generar respuestas más precisas. También puede generar consultas SQL sin recuperar datos y utilizarlas en otros flujos de trabajo.

Veamos este ejemplo de un repositorio de base de datos contiene la siguiente tabla con información sobre los clientes y sus compras:


****  

| ID de de cliente | Importe comprado en 2020 | Importe comprado en 2021 | Importe comprado en 2022 | Importe total comprado hasta la fecha | 
| --- | --- | --- | --- | --- | 
| 1 | 200 | 300 | 500 | 1 000 | 
| 2 | 150 | 100 | 120 | 370 | 
| 3 | 300 | 300 | 300 | 900 | 
| 4 | 720 | 180 | 100 | 900 | 
| 5 | 500 | 400 | 100 | 1 000 | 
| 6 | 900 | 800 | 1 000 | 2700 | 
| 7 | 470 | 420 | 400 | 1290 | 
| 8 | 250 | 280 | 250 | 780 | 
| 9 | 620 | 830 | 740 | 2190 | 
| 10 | 300 | 200 | 300 | 800 | 

Si la consulta de un usuario dice “envíame un resumen de los cinco clientes que más gastan”, la base de conocimiento puede hacer lo siguiente:
+ Convertir la consulta en una consulta SQL
+ Devolver un extracto de la tabla que contenga los siguientes elementos:
  + Columnas pertinentes de la tabla: “ID de cliente” e “Importe total comprado hasta la fecha”
  + Filas de la tabla que contienen el importe total de compra de los diez clientes que más gastan
+ Generar una respuesta que indique qué clientes fueron los cinco que más gastaron y cuánto compraron

Otros ejemplos de consultas para las que una base de conocimiento puede generar un extracto de la tabla son:
+ “los 5 clientes que más gastaron en 2020”
+ “cliente principal por importe de compra en 2020”
+ “los 5 clientes principales por importe de compra en 2020-2022”
+ “los 5 clientes con el mayor gasto en 2020-2022”
+ “clientes con un importe total de compra inferior a 10 USD”
+ “los 5 clientes que menos gastan”

Cuanto más específica o detallada sea una consulta, más podrá acotar la base de conocimiento la información exacta que se devuelve. Por ejemplo, en lugar de la consulta “los 10 clientes que más gastaron en 2020”, una consulta más específica sería “buscar los 10 clientes con el importe total más alto comprado hasta la fecha en 2020”. La consulta específica hace referencia al nombre de la columna “Importe total comprado hasta la fecha” de la tabla de la base de datos de gastos de los clientes y también indica que los datos deben ordenarse por “más alto”.

# Recuperación de información de orígenes de datos mediante Bases de conocimiento de Amazon Bedrock
<a name="kb-how-retrieval"></a>

Después de configurar la base de conocimiento, puede configurar la aplicación para consultar los orígenes de datos que contiene. Para consultar una base de conocimiento, puede utilizar las siguientes operaciones de la API:
+ [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html): recupera los fragmentos o imágenes del origen de sus datos que son más pertinentes para la consulta y los devuelve en la respuesta en forma de matriz.
+ [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html): une `Retrieve` a la operación [InvokeModel](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html) de Amazon Bedrock para recuperar los fragmentos del origen de los datos que son más pertinentes para la consulta y generar una respuesta en lenguaje natural. Incluye citas de fragmentos de origen específicos de los datos. Si el origen de datos incluye elementos visuales, el modelo aprovecha la información de estas imágenes al generar una respuesta de texto y proporciona la atribución de origen de las imágenes.
+ [GenerateQuery](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_GenerateQuery.html): convierte las consultas de los usuarios en lenguaje natural en consultas con un formato adecuado para el almacén de datos estructurados.

La operación `RetrieveAndGenerate` es una acción combinada que utiliza de forma subyacente `GenerateQuery` (si su base de conocimiento está conectada a un almacén de datos estructurado), `Retrieve` y `InvokeModel` para realizar todo el proceso de RAG. Como Bases de conocimiento de Amazon Bedrock también le proporciona acceso a la operación `Retrieve`, tiene la flexibilidad de desvincular los pasos de RAG y personalizarlos para su caso de uso específico.

También puede utilizar un [modelo de reclasificación](rerank.md) cuando utilice `Retrieve` o `RetrieveAndGenerate` para volver a clasificar la relevancia de los documentos recuperados durante la consulta.

Para obtener información sobre cómo utilizar estas operaciones de la API al consultar una base de conocimiento, consulte [Prueba de la base de conocimientos mediante consultas y respuestas](knowledge-base-test.md).

# Personalización de la base de conocimiento
<a name="kb-how-customization"></a>

Bases de conocimiento de Amazon Bedrock ofrece opciones para personalizar la forma en que se procesan los orígenes de datos en su base de conocimiento, lo que le proporciona flexibilidad en la forma de almacenar, analizar y devolver los datos a los usuarios finales. Seleccione uno de los siguientes temas para obtener más información sobre las opciones de personalización que puede tener en cuenta al configurar su base de conocimiento:

**Topics**
+ [Funcionamiento de la fragmentación de contenido para las bases de conocimiento](kb-chunking.md)
+ [Opciones de análisis del origen de datos](kb-advanced-parsing.md)
+ [Uso de una función de Lambda de transformación personalizada para definir cómo se ingieren los datos](kb-custom-transformation.md)
+ [Inclusión de metadatos en un origen de datos para mejorar la consulta de la base de conocimiento](kb-metadata.md)

# Funcionamiento de la fragmentación de contenido para las bases de conocimiento
<a name="kb-chunking"></a>

Al ingerir los datos, Amazon Bedrock primero divide los documentos o el contenido en fragmentos manejables para obtener los datos de forma eficiente. A continuación, los fragmentos se convierten en incrustaciones que se escriben en un índice vectorial (representación vectorial de los datos), manteniendo una correspondencia con el documento original. Las incrustaciones vectoriales permiten comparar los textos cuantitativamente.

**Topics**
+ [Fragmentación estándar](#kb-standard-chunking)
+ [Fragmentación jerárquica](#kb-hiearchical-chunking)
+ [Fragmentación semántica](#kb-semantic-chunking)
+ [Fragmentación de contenido multimodal](#kb-multimodal-chunking)

## Fragmentación estándar
<a name="kb-standard-chunking"></a>

Amazon Bedrock admite los siguientes enfoques estándar de fragmentación:

**nota**  
Las estrategias de fragmentación de texto se aplican solo a los documentos de texto. En el caso del contenido multimodal (audio, vídeo, imágenes), la fragmentación se produce a nivel del modelo de incrustación, no mediante estas estrategias basadas en texto.
+ Fragmentación de tamaño fijo: puede configurar el tamaño de fragmento deseado especificando el número de tokens por fragmento y un porcentaje de superposición, lo que proporciona flexibilidad para adaptarse a sus requisitos específicos. Puede establecer el número máximo de tokens que no debe superar un fragmento y el porcentaje de superposición entre fragmentos consecutivos.
**nota**  
En el caso del contenido analizado (por ejemplo, el contenido que utiliza analizadores avanzados o que se ha convertido desde HTML), las bases de conocimiento de Amazon Bedrock pueden fragmentar el contenido para optimizarlo y obtener mejores resultados. El fragmentador respeta los límites lógicos de los documentos (como páginas o secciones) y no fusiona el contenido que sobrepase esos límites, incluso cuando aumentar el tamaño máximo del token permitiría crear fragmentos más grandes.
+ Fragmentación predeterminada: el contenido se divide en fragmentos de texto de hasta 300 tokens. El proceso de fragmentación respeta los límites de las oraciones, lo que garantiza que dentro de cada fragmento se conserven oraciones completas.

También puede elegir que sus documentos no se dividan en fragmentos. Cada documento se trata como un único fragmento de texto. Recomendamos realizar un procesamiento previo de los documentos dividiéndolos en archivos independientes antes de optar por no fragmentar como enfoque o estrategia de fragmentación. *Si eliges no fragmentar tus documentos, no podrás ver el número de página en la cita ni filtrar por el x-amz-bedrock-kb campo/atributo de metadatos. document-page-number*

## Fragmentación jerárquica
<a name="kb-hiearchical-chunking"></a>

La fragmentación jerárquica implica organizar la información en estructuras anidadas de fragmentos principales y secundarios. Al crear un origen de datos, puede definir el tamaño del fragmento principal, el tamaño del fragmento secundario y el número de tokens que se superponen entre cada fragmento. Durante la recuperación, el sistema recupera inicialmente los fragmentos secundarios, pero los reemplaza por fragmentos principales más amplios para proporcionar al modelo un contexto más completo.

Las incrustaciones de texto pequeñas son más precisas, pero la recuperación busca un contexto integral. Un sistema de fragmentación jerárquica equilibra estas necesidades al reemplazar los fragmentos secundarios recuperados por los fragmentos principales cuando sea apropiado.

**nota**  
Como los fragmentos secundarios se sustituyen por los fragmentos principales durante la recuperación, es posible que el número de resultados devueltos sea inferior a la cantidad solicitada.
No se recomienda la fragmentación jerárquica cuando se utiliza un depósito vectorial de S3 como almacén de vectores. Si utilizas un número elevado de fichas para la fragmentación (más de 8000 fichas juntas), es posible que te encuentres con limitaciones en el tamaño de los metadatos.

Para la fragmentación jerárquica, las bases de conocimientos de Amazon Bedrock permiten especificar dos niveles o la siguiente profundidad para la fragmentación:
+ Principal: usted establece el tamaño máximo del token del fragmento principal.
+ Secundario: usted establece el tamaño máximo del token del fragmento secundario.

También establece los tokens superpuestos entre los fragmentos. Este es el número absoluto de tokens superpuestos entre los fragmentos principales consecutivos y los fragmentos secundarios consecutivos.

## Fragmentación semántica
<a name="kb-semantic-chunking"></a>

La fragmentación semántica es una técnica de procesamiento del lenguaje natural que divide el texto en fragmentos significativos para mejorar la comprensión y la recuperación de la información. Su objetivo es mejorar la precisión de la recuperación centrándose en el contenido semántico y no solo en la estructura sintáctica. Al hacerlo, puede facilitar una extracción y manipulación más precisas de la información pertinente.

Al configurar la fragmentación semántica, puede especificar los siguientes hiperparámetros.
+ Número máximo de tokens: el número máximo de tokens que se debe incluir en un único fragmento, respetando los límites de las oraciones.
+ Tamaño del búfer: para una oración determinada, el tamaño del búfer define el número de oraciones adyacentes que se añadirá al crear las incrustaciones. Por ejemplo, un tamaño de búfer de 1 da como resultado 3 frases (oración actual, anterior y siguiente) que se combinarán e incrustarán. Este parámetro puede influir en la cantidad de texto que se examina en conjunto para determinar los límites de cada fragmento, lo que repercute en la granularidad y la coherencia de los fragmentos resultantes. Un tamaño de búfer más grande puede capturar más contexto, pero también puede generar ruido, mientras que un tamaño de búfer más pequeño puede pasar por alto un contexto importante, pero garantiza una fragmentación más precisa.
+ Umbral percentil del punto de ruptura: el umbral percentil de una oración para trazar los puntos de interrupción entre las oraciones distance/dissimilarity . Un umbral más alto requiere que las oraciones se distingan mejor para poder dividirlas en diferentes fragmentos. Un umbral más alto da como resultado menos fragmentos y, por lo general, un tamaño medio de fragmento mayor.
**nota**  
El uso de la fragmentación semántica conlleva costos adicionales porque se utiliza un modelo fundacional. El costo depende de la cantidad de datos de los que disponga. Consulte [Precios de Amazon Bedrock](https://aws.amazon.com/bedrock/pricing/) para obtener más información sobre el costo de los modelos fundacionales.

## Fragmentación de contenido multimodal
<a name="kb-multimodal-chunking"></a>

En el caso del contenido multimodal (audio, vídeo, imágenes), el comportamiento de fragmentación difiere del de los documentos de texto:
+ **Incrustaciones multimodales de Nova: la fragmentación se produce a nivel del modelo de incrustación**. Puede configurar la duración de los fragmentos de audio y vídeo de 1 a 30 segundos (por defecto: 5 segundos). En el caso de los archivos de vídeo, solo se aplica la duración del fragmento de vídeo, incluso si el vídeo contiene audio. La duración del fragmento de audio solo se aplica a los archivos de audio independientes.
+ **Analizador Bedrock Data Automation (BDA):** el contenido se convierte primero en texto (transcripciones y resúmenes de escenas) y, a continuación, se aplican estrategias estándar de fragmentación de texto al texto convertido.

**nota**  
Al utilizar las incrustaciones multimodales de Nova, las estrategias de fragmentación de texto configuradas en su base de conocimientos solo afectan a los documentos de texto de la fuente de datos, no a los archivos de audio, vídeo o imagen.

# Opciones de análisis del origen de datos
<a name="kb-advanced-parsing"></a>

El análisis se refiere a la comprensión y extracción del contenido de los datos sin procesar. Bases de conocimiento de Amazon Bedrock ofrece las siguientes opciones para analizar el origen de datos durante la ingesta:
+ **Analizador predeterminado de Amazon Bedrock**: solo analiza el texto de los archivos de texto, incluidos los archivos.txt, .md, .html, .doc/.docx, .xls/.xlsx y.pdf. Este analizador no conlleva ningún cargo por uso.
**nota**  
Como el analizador predeterminado solo genera texto, recomendamos utilizar Automatización de Datos de Amazon Bedrock o un modelo fundacional como analizador en lugar del analizador predeterminado si sus documentos incluyen figuras, gráficos, tablas o imágenes. Automatización de Datos de Amazon Bedrock y los modelos fundacionales pueden extraer estos elementos de sus documentos y devolverlos como salida.
+ Bases de conocimiento de Amazon Bedrock ofrece los siguientes analizadores para analizar datos multimodales, incluidas figuras, gráficos y tablas en archivos.pdf, además de archivos de imagen .jpeg y.png. Estos analizadores también pueden extraer estas figuras, gráficos, tablas e imágenes y almacenarlas como archivos en un destino de S3 que especifique durante la creación de la base de conocimiento. Durante la recuperación de la base de conocimiento, estos archivos se pueden devolver en la respuesta o en la atribución del origen.
  + **Automatización de Datos de Amazon Bedrock:** un servicio totalmente administrado que procesa datos multimodales de forma eficaz, sin necesidad de crear ninguna petición adicional. El costo de este analizador depende del número de páginas del documento o del número de imágenes que se vayan a procesar. Para obtener más información sobre este servicio, consulte [Automatización de Datos de Amazon Bedrock](bda.md).
  + **Modelos fundacionales**: procesa datos multimodales mediante un modelo fundacional. Este analizador ofrece la opción de personalizar la petición predeterminada de extracción de datos. El costo de este analizador depende del número de tokens de entrada y salida procesados por el modelo fundacional. Para obtener una lista de los modelos que admiten el análisis de los datos de Bases de conocimiento de Amazon Bedrock, consulte [Regiones y modelos compatibles para el análisis](knowledge-base-supported.md#knowledge-base-supported-parsing).

**importante**  
Si elige Automatización de Datos de Amazon Bedrock o modelos fundacionales como analizador, el método que elija se utilizará para analizar todos los archivos .pdf del origen de datos, incluso si los archivos .pdf contienen solo texto. El analizador predeterminado no se utilizará para analizar estos archivos .pdf. Su cuenta incurre en cargos por el uso de Automatización de Datos de Amazon Bedrock o el modelo fundacional al analizar estos archivos.

Cuando seleccione cómo analizar los datos, tenga en cuenta lo siguiente:
+ Si sus datos son exclusivamente textuales o si contienen datos multimodales, como imágenes, gráficos y tablas, que desee que la base de conocimiento pueda consultar.
+ Si desea tener la opción de personalizar la petición que se utiliza para indicar al modelo cómo analizar los datos.
+ El costo del analizador. Automatización de Datos de Amazon Bedrock utiliza precios por página, mientras que los analizadores de modelos fundacionales cobran en función de los tokens de entrada y salida. Para obtener más información, consulte [Precios de Amazon Bedrock](https://aws.amazon.com/bedrock/pricing/).
+ El límite de tamaño total del archivo. Cuando utilice modelos básicos como analizador, el tamaño total de todos los archivos no debe ser superior a 100 GB.

Para obtener información sobre cómo configurar el modo en que se analiza su base de conocimiento, consulte la configuración de conexión del origen de datos en [Conexión de un origen de datos a la base de conocimiento](data-source-connectors.md).

# Uso de una función de Lambda de transformación personalizada para definir cómo se ingieren los datos
<a name="kb-custom-transformation"></a>

Tiene la capacidad de definir una función de Lambda de transformación personalizada para inyectar su propia lógica en el proceso de ingesta de la base de conocimientos.

Es posible que tenga una lógica de fragmentación específica que no sea compatible de forma nativa con las bases de conocimientos de Amazon Bedrock. Utilice la opción de estrategia de no fragmentación al especificar una función de Lambda que contenga su lógica de fragmentación. Además, tendrá que especificar un bucket de Amazon S3 para que la base de conocimientos escriba los archivos que desee fragmentar con la función de Lambda.

Tras la fragmentación, la función de Lambda volverá a escribir los archivos fragmentados en el mismo bucket y devolverá las referencias a la base de conocimientos para su posterior procesamiento. Si lo desea, tiene la posibilidad de proporcionar su propia clave de AWS KMS para el cifrado de los archivos almacenados en su bucket de S3.

**nota**  
Si se utilizan conectores web, se pasa un texto de marcado a Lambda en lugar de HTML.

Como alternativa, puede especificar los metadatos en el nivel de fragmento y, al mismo tiempo, hacer que la base de conocimientos aplique una de las estrategias de fragmentación compatibles de forma nativa. En ese caso, seleccione una de las estrategias de fragmentación predefinidas (por ejemplo, fragmentación predeterminada o de tamaño fijo) y, al mismo tiempo, proporcione una referencia a la función de Lambda y al bucket de S3. En este caso, la base de conocimientos almacenará los archivos analizados y prefragmentados en el bucket predefinido de S3 antes de llamar a la función de Lambda para añadir más metadatos en el nivel de fragmento.

Tras incluir los metadatos en el nivel de fragmentación, la función de Lambda volverá a escribir los archivos fragmentados en el mismo bucket y devolverá las referencias a la base de conocimientos para su posterior procesamiento. Tenga en cuenta que los metadatos en el nivel de fragmento tienen prioridad y sobrescriben los metadatos en el nivel de archivo, en caso de que se produzcan colisiones.

Para ver un ejemplo del uso de una función de Lambda de Python para la fragmentación personalizada, consulte [Custom chunking using Lambda function](https://github.com/aws-samples/amazon-bedrock-samples/blob/main/rag/knowledge-bases/features-examples/03-optimizing-accuracy-retrieved-results/advanced_chunking_options.ipynb).

Para obtener más información sobre los contratos de API y archivos, consulte las siguientes estructuras:

**Contrato de la API al añadir una transformación personalizada con una función de Lambda**

```
{
...
    "vectorIngestionConfiguration": {
        "customTransformationConfiguration": { // Custom transformation 
            "intermediateStorage": {
                "s3Location": { // the location where input/output of the Lambda is expected 
                    "uri": "string"
                }
            },
            "transformations": [{
                "transformationFunction": {
                    "transformationLambdaConfiguration": {
                        "lambdaArn": "string"
                    }
                },
                "stepToApply": "string" // enum of POST_CHUNKING
            }]
        },
        "chunkingConfiguration": {
            "chunkingStrategy": "string",
            "fixedSizeChunkingConfiguration": {
                "maxTokens": "number",
                "overlapPercentage": "number"
            }
            ...
        }
    }
}
```

**Formato de entrada de transformación de Lambda personalizado**

```
{
    "version": "1.0",
    "knowledgeBaseId": "string",
    "dataSourceId": "string",
    "ingestionJobId": "string",
    "bucketName": "string",
    "priorTask": "string",
    "inputFiles": [{
        "originalFileLocation": {
            "type": "S3",
            "s3_location": {
                "uri": "string"
            }
        },
        "fileMetadata": {
            "key1": "value1",
            "key2": "value2"
        },
        "contentBatches": [{
            "key":"string"
        }]
    }]
}
```

**Formato de salida de transformación de Lambda personalizado**

```
{
    "outputFiles": [{
        "originalFileLocation": {
            "type": "S3",
            "s3_location": {
                "uri": "string"
            }
        },
        "fileMetadata": {
            "key1": "value1",
            "key2": "value2"
        },
        "contentBatches": [{
            "key": "string"
        }]
    }]
}
```

**Formato de archivo de los objetos al que se hace referencia en `fileContents`**

```
{
    "fileContents": [{
        "contentBody": "...",
        "contentType": "string", // enum of TEXT, PDF, ...
        "contentMetadata": {
            "key1": "value1",
            "key2": "value2"
        }
    }
    ...
    ]
}
```

# Inclusión de metadatos en un origen de datos para mejorar la consulta de la base de conocimiento
<a name="kb-metadata"></a>

Al ingerir archivos CSV (valores separados por comas), puede hacer que la base de conocimientos trate determinadas columnas como campos de contenido y no como campos de metadatos. En lugar de tener cientos o miles de pares de archivos de contenido/metadatos, ahora puede tener un solo archivo CSV y el correspondiente archivo metadata.json, lo que proporciona a la base de conocimientos consejos sobre cómo tratar cada columna del archivo CSV.

Hay límites para los campos y atributos de metadatos de los documentos por fragmento. Consulte [Cuotas de las bases de conocimientos](https://docs.aws.amazon.com/bedrock/latest/userguide/quotas.html).

Antes de la ingesta de un archivo CSV, asegúrese de que:
+ El archivo CSV tenga el formato RFC4180 y esté codificado en UTF-8.
+ La primera fila del CSV incluya la información del encabezado.
+ Los campos de metadatos proporcionados en el metadata.json estén presentes como columnas en el archivo CSV.
+ Debe proporcionar un archivo fileName.csv.metadata.json con el siguiente formato:

  ```
  {
      "metadataAttributes": {
          "${attribute1}": "${value1}",
          "${attribute2}": "${value2}",
          ...
      },
      "documentStructureConfiguration": {
          "type": "RECORD_BASED_STRUCTURE_METADATA",
          "recordBasedStructureMetadata": {
              "contentFields": [
                  {
                      "fieldName": "string"
                  }
              ],
              "metadataFieldsSpecification": {
                  "fieldsToInclude": [
                      {
                          "fieldName": "string"
                      }
                  ],
                  "fieldsToExclude": [
                      {
                          "fieldName": "string"
                      }
                  ]
              }
          }
      }
  }
  ```

El archivo CSV se analiza fila por fila y la estrategia de fragmentación y la incrustación vectorial se aplican al campo de contenido. Actualmente, las bases de conocimientos de Amazon Bedrock admiten un campo de contenido. El campo de contenido se divide en fragmentos y los campos de metadatos (columnas) que están asociados a cada fragmento se tratan como valores de cadena.

Por ejemplo, supongamos que hay un CSV con una columna “Descripción” y una columna “Fecha de creación”. El campo de descripción es el campo de contenido y la fecha de creación es un campo de metadatos asociado. El texto de la descripción se divide en fragmentos y se convierte en incrustaciones vectoriales para cada fila del archivo CSV. El valor de la fecha de creación se trata como una representación en cadena de la fecha y se asocia a cada fragmento de la descripción.

Si no se proporciona ningún campo de inclusión o exclusión, todas las columnas se tratan como columnas de metadatos, excepto la columna de contenido. Si solo se proporcionan campos de inclusión, solo las columnas proporcionadas se tratan como metadatos. Si solo se proporcionan campos de exclusión, todas las columnas se tratan como metadatos, excepto las columnas de exclusión. Si proporciona el mismo `fieldName` en `fieldsToInclude` y `fieldsToExclude`, Amazon Bedrock generará una excepción de validación. Si hay un conflicto entre la inclusión y la exclusión, se producirá un error.

Las filas en blanco que se encuentran dentro de un CSV se ignoran o se omiten.