Direkt zum Inhalt

Wie synchronisiere ich meine Daten automatisch mit Amazon Bedrock?

Lesedauer: 4 Minute
0

Ich möchte meine Datensynchronisierung für meine Amazon Bedrock-Wissensdatenbank automatisieren.

Kurzbeschreibung

Unternehmen, die für ihre KI-Anwendungen einen auf Retrieval Augmented Generation (RAG) basierenden Ansatz verwenden, müssen ihre Wissensdatenbank mit ihren Daten synchronisieren. Um Datenaktualisierungen zu automatisieren, kannst du die StartingestionJob-API verwenden.

Voraussetzungen:

  • Ein AWS-Konto mit den entsprechenden Berechtigungen.
  • Vertrautheit mit dem AWS SDK für die bevorzugte Programmiersprache.

**Hinweis:**Wenn bei der Ausführung von AWS Command Line Interface (AWS CLI)-Befehlen Fehler auftreten, findest du weitere Informationen unter Troubleshoot AWS CLI errors. Stelle außerdem sicher, dass du die neueste Version der AWS CLI-Version verwendest.

Lösung

Die IngestionJob-API verwenden

Führe die folgenden Schritte aus:

  1. Konfiguriere AWS SDK für die bevorzugte Programmiersprache. Oder, wenn du die AWS-CLI verwendest, konfiguriere die AWS-CLI mit den Anmeldeinformationen.

  2. Führe den AWS-CLI-Befehl list-knowledge-bases aus, um die Wissensdatenbank-ID zu ermitteln:

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

    Hinweis: Ersetze your-region-name durch die AWS-Region.

  3. Führe den AWS-CLI-Befehl list-data-sources aus, um die Datenquellen-ID zu ermitteln:

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

    Hinweis: Ersetze your-region-name durch die AWS-Region und your-knowledge-base-id durch die Wissensdatenbank-ID.

  4. Führe die StartingestionJob-API aus:

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

    Hinweis: Die API kann je nach verwendeter Programmsprache anders aussehen. Oder sie könnte anders sein, wenn du die AWS CLI verwendest. Das Folgende ist ein Beispiel, das Python und boto3 verwendet:

    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. Notiere dir in der Ausgabe die ingestionJobId.

  6. Um den Status des Erfassungsauftrags zu überprüfen, führe die GetIngestionJob-API aus:

    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)

    Hinweis: Die API kann je nach verwendeter Programmsprache anders aussehen. Oder sie könnte anders sein, wenn du die AWS CLI verwendest. Das Folgende ist ein Beispiel, das Python und boto3 verwendet:

    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}")

Pseudo-Code verwenden, um die Daten in die Wissensdatenbank zu übertragen

Verwende Pseudo-Code, um Daten aus allen verfügbaren Datenquellen in die Wissensdatenbank zu aktualisieren.

Beispiel:

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)

Der Code definiert drei Hauptfunktionen:

  • Die StartJob-Funktion verwendet die StartingestionJob-API, um einen Erfassungsauftrag für die von dir angegebene Wissensdatenbank und Datenquelle zu starten.
  • Die Funktion GetIngestionJobStatus ruft den aktuellen Status des von dir bereitgestellten Erfassungsauftrags ab.
  • Die Funktion RunIngestionJobs startet und überwacht die Erfassungsaufträge für die Datenquellen in der von dir bereitgestellten Wissensdatenbank.

Hinweis: Wenn ein Vorgang fehlschlägt, überprüfe die Fehlermeldungen auf weitere Informationen.

Bewährte Methoden befolgen

Gehe wie folgt vor, um Probleme beim Synchronisieren der Daten mit Amazon Bedrock zu vermeiden: