

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.

# 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 content/metadata archivos, ahora puedes 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 dentro de tu CSV.

Hay límites para los metadatos fields/attributes 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 CSV tiene el formato RFC4180 y está codificado. 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 Name.csv.metadata.json archivo 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 «Creation\_Date». 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 inclusion/exclusion campo, 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.

## Ejemplo: Multi-row CSV con metadatos
<a name="kb-metadata-csv-example"></a>

El siguiente ejemplo muestra un archivo CSV completo y su correspondiente archivo JSON de metadatos.

**Ejemplo de archivo CSV (`properties.csv`)**

```
description,city,price,bedrooms
"Spacious 3-bedroom home with updated kitchen and large backyard.",Seattle,450000,3
"Modern downtown condo with floor-to-ceiling windows and city views.",Portland,325000,2
"Charming craftsman bungalow with original hardwood floors.",Austin,275000,2
```

**Archivo de metadatos correspondiente (`properties.csv.metadata.json`)**

```
{
    "metadataAttributes": {
        "source": "property_listings_2024"
    },
    "documentStructureConfiguration": {
        "type": "RECORD_BASED_STRUCTURE_METADATA",
        "recordBasedStructureMetadata": {
            "contentFields": [
                {
                    "fieldName": "description"
                }
            ],
            "metadataFieldsSpecification": {
                "fieldsToInclude": [
                    {
                        "fieldName": "city"
                    },
                    {
                        "fieldName": "price"
                    }
                ]
            }
        }
    }
}
```

En este ejemplo:
+ `contentFields`— Especifica una columna (`description`) como contenido que se va a segmentar e incrustar. Solo se admite un campo de contenido.
+ `fieldsToInclude`— Especifica qué columnas (`city`y`price`) se deben tratar como metadatos filtrables. La `bedrooms` columna está excluida porque no aparece en la lista.
+ `metadataAttributes`— Especifica los metadatos a nivel de documento que se aplican a cada fragmento de este CSV. En este ejemplo, `source` se aplica un atributo estático a todas las filas.

Cada fila produce un fragmento. En la primera fila, el fragmento de texto es la descripción y los metadatos son `city: "Seattle"``price: "450000"`, y. `source: "property_listings_2024"` Todos los valores de metadatos de las columnas CSV se almacenan como cadenas.

## Tipos de datos de metadatos compatibles
<a name="kb-metadata-data-types"></a>

Se admiten los siguientes tipos de datos para los atributos de metadatos:
+ `STRING`— Un valor de texto.
+ `NUMBER`— Un valor numérico. Cuando se utiliza la configuración de CSV-based metadatos que se describe en esta página, los valores numéricos se almacenan como cadenas.
+ `BOOLEAN`— Un valor verdadero o falso.
+ `STRING_LIST`— Una lista de valores de cadena.

Para ver el esquema completo de atributos de metadatos que se utiliza en las consultas de filtrado, consulta [MetadataAttributeSchema](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_MetadataAttributeSchema.html)la referencia de la API.

## Opciones de configuración de metadatos relacionadas
<a name="kb-metadata-related"></a>

Además de la configuración de CSV-based metadatos descrita en esta página, también puede configurar los metadatos mediante un `.metadata.json` archivo sidecar para cualquier tipo de documento de una fuente de datos de Amazon S3. Este método admite el conjunto completo de tipos de datos y la `includeForEmbedding` opción. Para obtener más información, consulte [Campos de metadatos del documento](s3-data-source-connector.md#ds-s3-metadata-fields).

Para obtener información sobre cómo filtrar los resultados de las consultas mediante metadatos, consulte la sección de **plantillas de solicitudes de la base de conocimientos** en[Configuración y personalización de las consultas y la generación de respuestas](kb-test-config.md).