Comment puis-je synchroniser automatiquement mes données avec Amazon Bedrock ?

Lecture de 5 minute(s)
0

Je souhaite automatiser la synchronisation de mes données pour ma base de connaissances Amazon Bedrock.

Brève description

Les organisations qui utilisent une approche basée sur la génération à enrichissement contextuel (RAG) pour leurs applications d'IA doivent maintenir leur base de connaissances synchronisée avec leurs données. Pour automatiser les mises à jour des données, vous pouvez utiliser l'API StartinGestionJob.

Prérequis :

  • Un compte AWS disposant des autorisations appropriées.
  • Connaissance du kit SDK AWS pour votre langage de programmation préféré.

Remarque : si des erreurs surviennent lorsque vous exécutez des commandes de l’interface de la ligne de commande AWS (AWS CLI), consultez la page Résoudre les erreurs liées à AWS CLI. Vérifiez également que vous utilisez la version la plus récente de l'interface AWS CLI.

Résolution

Utiliser l'API IngestionJob

Procédez comme suit :

  1. Configurez votre kit SDK AWS pour votre langage de programmation préféré. Ou, si vous utilisez l'AWS CLI, configurez l'AWS CLI avec vos informations d'identification.

  2. Pour trouver l'ID de votre base de connaissances, exécutez la commande list-knowledge-bases de l'AWS CLI :

    aws bedrock-agent list-knowledge-bases --region your-region-name

    Remarque : Remplacez your-region-name par votre région AWS.

  3. Pour trouver l'ID de votre source de données, exécutez la commande list-data-sources de l’AWS CLI :

    aws bedrock-agent list-data-sources --knowledge-base-id your-knowledge-base-id --region your-region-name

    Remarque : Remplacez your-region-name par votre région AWS et your-knowledge-base-id par l'ID de votre base de connaissances.

  4. Exécutez l'API StartIngestionJob :

    SDK_BedrockAgent_Client.StartIngestionJob(
      --knowledge-base-id your-knowledge-base-id
      --data-source-id your-data-source-id)

    Remarque : L'apparence de l'API peut varier en fonction du langage de programme utilisé. Ou l’API peut être différente si vous utilisez l'interface de ligne de commande AWS. Vous trouverez ci-dessous un exemple qui utilise Python et boto3 :

    import boto3from botocore.exceptions import ClientError
    def start_ingestion_job(knowledge_base_id, data_source_id):
        bedrock = boto3.client('bedrock-agent', region_name='your-region')
        try:
            response = bedrock.start_ingestion_job(
                knowledgeBaseId=knowledge_base_id,
                dataSourceId=data_source_id        )
            return response    except ClientError as e:
            print(f"An error occurred: {e}")
            return None
    
    --# Usage
    knowledge_base_id = 'your-knowledge-base-id'
    data_source_id = 'your-data-source-id'
    job_response = start_ingestion_job(knowledge_base_id, data_source_id)
    
    if job_response:
        print(f"Ingestion job started successfully. Job ID: {job_response['ingestionJob']['ingestionJobId']}")
    else:
        print("Failed to start ingestion job.")
  5. À partir de la sortie, notez l'ingestionJobId.

  6. Pour vérifier le statut de la tâche d'ingestion, exécutez l'API GetIngestionJob :

    SDK_BedrockAgent_Client.GetIngestionJob(
      --knowledge-base-id your-knowledge-base-id
      --data-source-id your-data-source-id
      --ingestion-job-id your-ingestion-job-id)

    Remarque : L'apparence de l'API peut varier en fonction du langage de programme utilisé. Ou l’API peut être différente si vous utilisez l'interface de ligne de commande AWS. Vous trouverez ci-dessous un exemple qui utilise Python et boto3 :

    def check_ingestion_job_status(knowledge_base_id, data_source_id, ingestion_job_id):
        bedrock = boto3.client('bedrock-agent', region_name='your-region')
        try:
            response = bedrock.get_ingestion_job(
                knowledgeBaseId=knowledge_base_id,
                dataSourceId = data_source_id,
                ingestionJobId=ingestion_job_id        )
            return response['ingestionJob']['status']
        except ClientError as e:
            print(f"An error occurred: {e}")        return None
    
    --# Usage
    if job_response:
        status = check_ingestion_job_status(knowledge_base_id, data_source_id, ingestion_job_id)
        print(f"Current ingestion job status: {status}")

Utiliser un pseudo-code pour transférer vos données vers votre base de connaissances

Utilisez un pseudo-code pour mettre à jour les données de toutes les sources de données disponibles dans votre base de connaissances.

Exemple :

Function StartJob(knowledgeBaseId, dataSourceId)
    Try        job = BedrockAgentService.StartIngestionJob(knowledgeBaseId, dataSourceId)
        Return job
    Catch Error        LogError("Failed to start ingestion job for data source: " + dataSourceId)
        Return null
Function GetIngestionJobStatus(knowledgeBaseId, dataSourceId, ingestionJobId)
    Try        jobStatus = BedrockAgentService.GetIngestionJob(knowledgeBaseId, dataSourceId, ingestionJobId)
        Return jobStatus
    Catch Error        LogError("Failed to get status for job: " + ingestionJobId)
        Return null
Function RunIngestionJobs(knowledgeBaseId)
    dataSources = BedrockAgentService.ListDataSources(knowledgeBaseId)

    For Each dataSource in dataSources        job = StartJob(knowledgeBaseId, dataSource.Id)

        If job is not null Then            LogInfo("Job started successfully for data source: " + dataSource.Id)

            While job.Status is not (Completed or Failed or Stopped)
                Wait for short interval                job = GetIngestionJobStatus(knowledgeBaseId, dataSource.Id, job.Id)

                If job is null Then                    Break While loop
                        If job is not null Then                LogInfo("Job completed with status: " + job.Status)
            Else                LogError("Job monitoring failed for data source: " + dataSource.Id)
        Else            LogError("Failed to start job for data source: " + dataSource.Id)

Main    knowledgeBaseId = "<your-knowledge-base-id"
    RunIngestionJobs(knowledgeBaseId)

Le code définit trois fonctions principales :

  • La fonction StartJob utilise l'API StartinGestionJob pour démarrer une tâche d'ingestion pour la base de connaissances et la source de données que vous fournissez.
  • La fonction GetIngestionJobStatus obtient le statut actuel de la tâche d'ingestion que vous fournissez.
  • La fonction RunIngestionJobs démarre et surveille les tâches d'ingestion pour les sources de données de la base de connaissances que vous fournissez.

Remarque : Si une opération échoue, consultez vos messages d'erreur pour plus de détails.

Suivre les bonnes pratiques

Pour réduire les problèmes liés à la synchronisation de vos données avec Amazon Bedrock, suivez les bonnes pratiques suivantes :

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a 2 mois