Cómo funcionan la fragmentación y el análisis de contenido para las bases de conocimiento - Amazon Bedrock

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.

Cómo funcionan la fragmentación y el análisis de contenido para las bases de conocimiento

Amazon Bedrock divide primero los documentos o el contenido en partes administrables para una recuperación de datos eficiente. Luego, los fragmentos se convierten en incrustaciones y se escriben en un índice vectorial (representación vectorial de los datos), manteniendo una correspondencia con el documento original. Las incrustaciones vectoriales permiten comparar matemáticamente los textos.

Fraccionamiento estándar

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

  • Fragmentación de tamaño fijo: puede configurar el tamaño de fragmento deseado especificando el número de fichas por fragmento y un porcentaje de superposición, lo que proporciona flexibilidad para adaptarse a sus requisitos específicos. Puedes establecer el número máximo de fichas que no debe superar un fragmento y el porcentaje de superposición entre fragmentos consecutivos.

  • Fragmentación predeterminada: divide el contenido en fragmentos de texto de aproximadamente 300 fichas. El proceso de fragmentación respeta los límites de las oraciones, lo que garantiza que las oraciones completas se conserven dentro de cada fragmento.

También puedes elegir no fragmentar tus documentos. Cada documento se trata como un único fragmento de texto. Es posible que desee preprocesar sus documentos dividiéndolos en archivos separados antes de elegir no fragmentar como enfoque o estrategia de fragmentación.

El siguiente es un ejemplo de cómo configurar la fragmentación de tamaño fijo:

Consola
  1. Inicie sesión en AWS Consola de administración mediante un IAM rol con permisos de Amazon Bedrock y abra la consola de Amazon Bedrock en. https://console.aws.amazon.com/bedrock/

  2. En el panel de navegación izquierdo, seleccione Bases de conocimiento.

  3. En la sección Bases de conocimiento, selecciona Crear base de conocimiento.

  4. Proporcione los detalles de la base de conocimientos, como el nombre, la IAM función de los permisos de acceso necesarios y cualquier etiqueta que desee asignar a la base de conocimientos.

  5. Elija una fuente de datos compatible y proporcione los detalles de configuración de la conexión.

  6. Para las configuraciones de fragmentación y análisis, primero elija la opción personalizada y, a continuación, elija la fragmentación de tamaño fijo como estrategia de fragmentación.

  7. Introduce el número máximo fijo de fichas para un fragmento y el porcentaje de superposición entre fragmentos consecutivos.

  8. Continúa con los pasos para completar la creación de tu base de conocimientos.

API

{ ... "vectorIngestionConfiguration": { "chunkingConfiguration": { "chunkingStrategy": "FIXED_SIZE", "fixedSizeChunkingConfiguration": { "maxTokens": "100", "overlapPercentage": "10" } } } }

Fragmentación jerárquica

La fragmentación jerárquica implica organizar la información en estructuras anidadas de fragmentos secundarios y primarios. Al crear una fuente de datos, puede definir el tamaño del fragmento principal, el tamaño del fragmento secundario y el número de fichas 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.

Para la fragmentación jerárquica, las bases de conocimiento de Amazon Bedrock permiten especificar dos niveles o la siguiente profundidad para la fragmentación:

  • Padre: Usted establece el tamaño máximo del token del fragmento principal.

  • Hijo: tú estableces el tamaño máximo del token del fragmento secundario.

También estableces las fichas superpuestas entre los fragmentos. Este es el número absoluto de fichas superpuestas entre los fragmentos principales consecutivos y los fragmentos secundarios consecutivos.

El siguiente es un ejemplo de configuración de la fragmentación jerárquica:

Consola
  1. Inicie sesión en AWS Consola de administración mediante un IAM rol con permisos de Amazon Bedrock y abra la consola de Amazon Bedrock en. https://console.aws.amazon.com/bedrock/

  2. En el panel de navegación izquierdo, seleccione Bases de conocimiento.

  3. En la sección Bases de conocimiento, selecciona Crear base de conocimiento.

  4. Proporcione los detalles de la base de conocimientos, como el nombre, la IAM función de los permisos de acceso necesarios y cualquier etiqueta que desee asignar a la base de conocimientos.

  5. Elija una fuente de datos compatible y proporcione los detalles de configuración de la conexión.

  6. Para las configuraciones de fragmentación y análisis, primero elija la opción personalizada y, a continuación, elija la fragmentación jerárquica como estrategia de fragmentación.

  7. Introduzca el tamaño máximo del token del fragmento principal.

  8. Introduzca el tamaño máximo del token del fragmento secundario.

  9. Introduce las fichas superpuestas entre los fragmentos. Este es el número absoluto de fichas superpuestas entre los fragmentos principales consecutivos y los fragmentos secundarios consecutivos.

  10. Continúe con los pasos para completar la creación de su base de conocimientos.

API

{ ... "vectorIngestionConfiguration": { "chunkingConfiguration": { "chunkingStrategy": "HIERARCHICAL", "hierarchicalChunkingConfiguration": { // Hierarchical chunking "levelConfigurations": [{ "maxTokens": 1500 // Parent max tokens }, { "maxTokens": 300 // Child max tokens }], "overlapTokens": 60 } } } }
nota

Los valores predeterminados recomendados son:

  • 1500 fichas como máximo por bloque principal

  • 300 fichas como máximo por fragmento secundario

  • 60 fichas superpuestas entre los fragmentos principales consecutivos y los fragmentos secundarios consecutivos

Para obtener más información sobre los valores aceptados para el número máximo de fichas por fragmento principal y secundario, y sobre la superposición de fichas, consulte. HierarchicalChunkingConfiguration

Fragmentación semántica

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 relevante.

Al configurar la fragmentación semántica, tiene la opción de especificar los siguientes hiperparámetros.

  • Número máximo de símbolos: el número máximo de símbolos que se deben 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án para la creación de 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 del percentil del punto de ruptura: el umbral percentil de la distancia/disimilitud entre las oraciones para trazar puntos de interrupción entre las oraciones. Un umbral más alto requiere que las oraciones sean más distinguibles para poder dividirlas en diferentes partes. 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 costes adicionales debido al uso de un modelo básico. El costo depende de la cantidad de datos de la que disponga. Consulte los precios de Amazon Bedrock para obtener más información sobre el costo de los modelos de base.

El siguiente es un ejemplo de configuración de la fragmentación semántica:

Consola
  1. Inicie sesión en AWS Consola de administración mediante un IAM rol con permisos de Amazon Bedrock y abra la consola de Amazon Bedrock en. https://console.aws.amazon.com/bedrock/

  2. En el panel de navegación izquierdo, seleccione Bases de conocimiento.

  3. En la sección Bases de conocimiento, selecciona Crear base de conocimiento.

  4. Proporcione los detalles de la base de conocimientos, como el nombre, la IAM función de los permisos de acceso necesarios y cualquier etiqueta que desee asignar a la base de conocimientos.

  5. Elija una fuente de datos compatible y proporcione los detalles de configuración de la conexión

  6. Para las configuraciones de fragmentación y análisis, primero elija la opción personalizada y, a continuación, elija la fragmentación semántica como estrategia de fragmentación.

  7. Introduce el número máximo de oraciones que rodean a la oración objetivo para agruparlas. Ejemplo: el tamaño del búfer 1 es «oración anterior», «oración objetivo», «oración siguiente».

  8. Introduce el tamaño máximo de token para un fragmento de texto.

  9. Establece el umbral del punto de interrupción entre los grupos de oraciones. El umbral percentil de la distancia/disimilitud entre las oraciones para trazar puntos de interrupción entre las oraciones. Un umbral más alto requiere que las oraciones sean más distinguibles para poder dividirlas en diferentes partes. Un umbral más alto da como resultado menos fragmentos y, por lo general, un tamaño medio de fragmento mayor.

  10. Continúe con los pasos para completar la creación de su base de conocimientos.

API

{ ... "vectorIngestionConfiguration": { "chunkingConfiguration": { "chunkingStrategy": "SEMANTIC", "semanticChunkingConfiguration": { // Semantic chunking "maxTokens": 300, "bufferSize": 0, "breakpointPercentileThreshold": 95 } } } }
nota

Los valores predeterminados recomendados son:

  • 300 fichas como máximo por fragmento

  • 0 búfer

  • Umbral del percentil del punto de interrupción del 95%

Para obtener más información sobre los valores aceptados para el número máximo de fichas por fragmento, el tamaño del búfer y el umbral del percentil del punto de interrupción, consulte. SemanticChunkingConfiguration

Opciones de análisis avanzadas

Puede utilizar técnicas de análisis avanzadas para analizar la información no textual de los documentos. Esta función le permite seleccionar un modelo básico o un perfil de inferencia para analizar datos complejos, como tablas y gráficos. Además, puede adaptarlo a sus necesidades específicas sobrescribiendo las solicitudes predeterminadas para la extracción de datos, lo que garantiza un rendimiento óptimo en un conjunto diverso de casos de uso. En la actualidad, Anthropic Claude 3 Sonnet y Anthropic Claude 3 Haiku son compatibles.

nota

El uso del análisis avanzado conlleva costes adicionales. Esto se debe al uso de un modelo básico. El costo depende de la cantidad de datos que tenga. Consulte los precios de Amazon Bedrock para obtener más información sobre el costo de los modelos de base.

Existen límites en cuanto a los tipos de archivos y los datos totales que se pueden analizar mediante el análisis avanzado. Para obtener información sobre los tipos de archivos para el análisis avanzado, consulte Formatos de documentos. Para obtener información sobre el total de datos que se pueden analizar mediante el análisis avanzado, consulte Cuotas.

El siguiente es un ejemplo de configuración de un modelo básico para facilitar el análisis avanzado:

Consola
  • Inicie sesión en AWS Consola de administración mediante un IAM rol con permisos de Amazon Bedrock y abra la consola de Amazon Bedrock en. https://console.aws.amazon.com/bedrock/

  • En el panel de navegación izquierdo, seleccione Bases de conocimiento.

  • En la sección Bases de conocimiento, selecciona Crear base de conocimiento.

  • Proporcione los detalles de la base de conocimientos, como el nombre, la IAM función de los permisos de acceso necesarios y cualquier etiqueta que desee asignar a la base de conocimientos.

  • Elija una fuente de datos compatible y proporcione los detalles de configuración de la conexión.

  • Para las configuraciones de fragmentación y análisis, primero elija la opción personalizada y, a continuación, habilite el modelo de base y seleccione el modelo de base que prefiera. Si lo desea, también puede sobrescribir las instrucciones del analizador para adaptarlas a sus necesidades específicas.

  • Continúe con los pasos para completar la creación de su base de conocimientos.

API

{ ... "vectorIngestionConfiguration": { "chunkingConfiguration": { ... }, "parsingConfiguration": { // Parse tabular data within docs "parsingStrategy": "BEDROCK_FOUNDATION_MODEL", "bedrockFoundationModelConfiguration": { "parsingPrompt": { "parsingPromptText": "string" }, "modelArn": "string" } } } }

Selección de metadatos para CSVs

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 CSV archivo y el correspondiente archivo metadata.json, lo que proporciona a la base de conocimientos consejos sobre cómo tratar cada columna dentro de su archivo. CSV

Hay límites para los campos y atributos de metadatos de los documentos por fragmento. Consulte Cuotas para ver las bases de conocimiento

Antes de ingerir un CSV archivo, asegúrese de lo siguiente:

  • CSVEl tuyo está en formato RFC418 0 y está codificado en UTF -8.

  • La primera fila CSV incluye la información del encabezado.

  • Los campos de metadatos proporcionados en tu metadata.json están presentes como columnas en tu. CSV

  • Debe proporcionar un fileName archivo.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 CSV archivo 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 conocimiento 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 una 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 descripción se divide en fragmentos y se convierte en incrustaciones vectoriales para cada fila de. 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/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, excepto las columnas de exclusión, se tratan como metadatos. Si proporciona lo mismo fieldName en ambos fieldsToInclude yfieldsToExlcude, Amazon Bedrock generará una excepción de validación. Si hay un conflicto entre inclusión y exclusión, [se producirá un error].

Las filas en blanco que se encuentren dentro de a CSV se ignoran o se omiten.

Transformación personalizada

Tiene la capacidad de definir una función 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 conocimiento de Amazon Bedrock. Utilice la opción de estrategia de no fragmentación mientras especifica una función 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 Lambda.

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

Como alternativa, puede especificar los metadatos a 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 este 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 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 Lambda para añadir más metadatos a nivel de fragmento.

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

Para ver un ejemplo del uso de una función Lambda de Python para la fragmentación personalizada, consulte Fragmentación personalizada con la función Lambda.

Para obtener información sobre los contratos API y archivarlos, consulte las siguientes estructuras:

APIcontraer al añadir una transformación personalizada mediante la función 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 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 Lambda personalizado

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

El 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" } } ... ] }