

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Intégration de métadonnées dans une source de données pour améliorer les requêtes de la base de connaissances
<a name="kb-metadata"></a>

Lors de l’ingestion de fichiers CSV (valeurs séparées par des virgules), vous pouvez faire en sorte que la base de connaissances traite certaines colonnes comme des champs de contenu plutôt que comme des champs de métadonnées. Au lieu d'avoir potentiellement des centaines ou des milliers de paires de content/metadata fichiers, vous pouvez désormais disposer d'un seul fichier CSV et d'un fichier de métadonnées .json correspondant, ce qui donne à la base de connaissances des indications sur la manière de traiter chaque colonne de votre fichier CSV.

Les métadonnées des documents sont limitées fields/attributes par bloc. Consultez [Quotas pour les bases de connaissances](https://docs.aws.amazon.com/bedrock/latest/userguide/quotas.html).

Avant l’ingestion un fichier CSV, vérifiez les points suivants :
+ Votre CSV est au format RFC4180 et est codé. UTF-8 
+ La première ligne de votre fichier CSV inclut les informations d’en-tête.
+ Les champs de métadonnées fournis dans votre fichier metadata.json sont présents sous forme de colonnes dans votre fichier CSV.
+ Vous fournissez un Name.csv.metadata.json fichier au format suivant :

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

Le fichier CSV est analysé ligne par ligne et la stratégie de découpage ainsi que la vectorisation sont appliquées au champ de contenu. Amazon Bedrock Knowledge Bases prend actuellement en charge un champ de contenu. Celui-ci est divisé en fragments, et les champs de métadonnées (colonnes) associés à chaque fragments sont traités comme des valeurs de chaîne.

Supposons, par exemple, qu'un fichier CSV comporte une colonne « Description » et une colonne « Creation\_Date ». Le champ de description est le champ de contenu et la date de création est un champ de métadonnées associé. Le texte de description est divisé en fragments et converti en vectorisations pour chaque ligne du fichier CSV. La valeur de la date de création est traitée comme une représentation de la date sous forme de chaîne et est associée à chaque fragment de la description.

Si aucun inclusion/exclusion champ n'est fourni, toutes les colonnes sont traitées comme des colonnes de métadonnées, à l'exception de la colonne de contenu. Si seuls les champs d’inclusion sont fournis, seules les colonnes fournies sont traitées comme des métadonnées. Si seuls les champs d’exclusion sont fournis, toutes les colonnes, à l’exception des colonnes d’exclusion, sont traitées comme des métadonnées. Si vous fournissez le même `fieldName` dans `fieldsToInclude` et `fieldsToExclude`, Amazon Bedrock génère une exception de validation. S’il existe un conflit entre inclusion et exclusion, cela se traduira par un échec.

Les lignes vides présentes dans un fichier CSV sont ignorées ou sautées.

## Exemple : Multi-row CSV avec métadonnées
<a name="kb-metadata-csv-example"></a>

L'exemple suivant montre un fichier CSV complet et le fichier JSON de métadonnées correspondant.

**Exemple de fichier 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
```

**Fichier de métadonnées correspondant (`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"
                    }
                ]
            }
        }
    }
}
```

Dans cet exemple :
+ `contentFields`— Spécifie une colonne (`description`) comme contenu à segmenter et à intégrer. Un seul champ de contenu est pris en charge.
+ `fieldsToInclude`— Spécifie les colonnes (`city`et`price`) à traiter comme des métadonnées filtrables. La `bedrooms` colonne est exclue car elle n'est pas répertoriée.
+ `metadataAttributes`— Spécifie les métadonnées au niveau du document appliquées à chaque fragment de ce fichier CSV. Dans cet exemple, `source` un attribut statique est-il appliqué à toutes les lignes.

Chaque ligne produit un morceau. Pour la première ligne, le fragment de texte est la description, et les métadonnées sont `city: "Seattle"``price: "450000"`, et`source: "property_listings_2024"`. Toutes les valeurs de métadonnées des colonnes CSV sont stockées sous forme de chaînes.

## Types de données de métadonnées pris en charge
<a name="kb-metadata-data-types"></a>

Les types de données suivants sont pris en charge pour les attributs de métadonnées :
+ `STRING`— Une valeur de texte.
+ `NUMBER`— Une valeur numérique. Lorsque vous utilisez la configuration CSV-based des métadonnées décrite sur cette page, les valeurs numériques sont stockées sous forme de chaînes.
+ `BOOLEAN`— Une valeur vraie ou fausse.
+ `STRING_LIST`— Liste de valeurs de chaîne.

Pour le schéma complet des attributs de métadonnées utilisé dans le filtrage des requêtes, consultez [MetadataAttributeSchema](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_MetadataAttributeSchema.html)la référence de l'API.

## Options de configuration des métadonnées associées
<a name="kb-metadata-related"></a>

Outre la configuration CSV-based des métadonnées décrite sur cette page, vous pouvez également configurer les métadonnées à l'aide d'un `.metadata.json` fichier annexe pour tout type de document dans une source de données Amazon S3. Cette méthode prend en charge l'ensemble complet des types de données et l'`includeForEmbedding`option. Pour de plus amples informations, veuillez consulter [Champs de métadonnées des documents](s3-data-source-connector.md#ds-s3-metadata-fields).

Pour savoir comment filtrer les résultats des requêtes à l'aide de métadonnées, consultez la section **Modèles d'invite de la base de connaissances** dans[Configuration et personnalisation de la génération de requêtes et de réponses](kb-test-config.md).