Leistungsfähige neuronale Suche mit AI/ML-Konnektoren im Amazon OpenSearch Service | Amazon Web Services

Leistungsfähige neuronale Suche mit AI/ML-Konnektoren im Amazon OpenSearch Service | Amazon Web Services

Quellknoten: 3068091

Mit der Einführung der neuronalen Suchfunktion für Amazon OpenSearch-Dienst In OpenSearch 2.9 ist die Integration in KI/ML-Modelle jetzt mühelos möglich, um die semantische Suche und andere Anwendungsfälle zu unterstützen. OpenSearch Service unterstützt seit der Einführung seiner k-Nearest Neighbor (k-NN)-Funktion im Jahr 2020 sowohl die lexikalische als auch die Vektorsuche; Allerdings erforderte die Konfiguration der semantischen Suche den Aufbau eines Frameworks zur Integration von Modellen des maschinellen Lernens (ML) zur Aufnahme und Suche. Die neuronale Suchfunktion erleichtert die Text-in-Vektor-Transformation während der Aufnahme und Suche. Wenn Sie während der Suche eine neuronale Abfrage verwenden, wird die Abfrage in eine Vektoreinbettung übersetzt und k-NN wird verwendet, um die nächstgelegenen Vektoreinbettungen aus dem Korpus zurückzugeben.

Um die neuronale Suche nutzen zu können, müssen Sie ein ML-Modell einrichten. Wir empfehlen die Konfiguration von AI/ML-Konnektoren für AWS AI- und ML-Dienste (z. B Amazon Sage Maker or Amazonas Grundgestein) oder Alternativen von Drittanbietern. Ab Version 2.9 des OpenSearch Service werden AI/ML-Konnektoren in die neuronale Suche integriert, um die Übersetzung Ihres Datenkorpus und Ihrer Abfragen in Vektoreinbettungen zu vereinfachen und zu operationalisieren, wodurch ein Großteil der Komplexität der Vektorhydratisierung und -suche beseitigt wird.

In diesem Beitrag zeigen wir, wie man AI/ML-Konnektoren zu externen Modellen über die OpenSearch Service-Konsole konfiguriert.

Die Lösung im Überblick

Dieser Beitrag führt Sie insbesondere durch die Verbindung zu einem Modell in SageMaker. Anschließend führen wir Sie durch die Verwendung des Connectors zum Konfigurieren der semantischen Suche im OpenSearch Service als Beispiel für einen Anwendungsfall, der durch die Verbindung mit einem ML-Modell unterstützt wird. Amazon Bedrock- und SageMaker-Integrationen werden derzeit auf der Benutzeroberfläche der OpenSearch Service-Konsole unterstützt, und die Liste der von der Benutzeroberfläche unterstützten Integrationen von Erst- und Drittanbietern wird weiter wachsen.

Für alle Modelle, die nicht über die Benutzeroberfläche unterstützt werden, können Sie sie stattdessen mithilfe der verfügbaren APIs und des einrichten ML-Blaupausen. Weitere Informationen finden Sie unter Einführung in OpenSearch-Modelle. Blaupausen für jeden Anschluss finden Sie im ML Commons GitHub-Repository.

Voraussetzungen:

Bevor Sie das Modell über die OpenSearch Service-Konsole verbinden, erstellen Sie eine OpenSearch Service-Domäne. Karte an AWS Identity and Access Management and (IAM)-Rolle mit Namen LambdaInvokeOpenSearchMLCommonsRole als Backend-Rolle auf dem ml_full_access Rolle mithilfe des Sicherheits-Plugins in OpenSearch-Dashboards, wie im folgenden Video gezeigt. Der OpenSearch Service-Integrationsworkflow ist für die Verwendung von vorab ausgefüllt LambdaInvokeOpenSearchMLCommonsRole IAM-Rolle standardmäßig zum Erstellen des Connectors zwischen der OpenSearch Service-Domäne und dem auf SageMaker bereitgestellten Modell. Wenn Sie eine benutzerdefinierte IAM-Rolle für die OpenSearch Service-Konsolenintegrationen verwenden, stellen Sie sicher, dass die benutzerdefinierte Rolle als Backend-Rolle zugeordnet ist ml_full_access Berechtigungen vor der Bereitstellung der Vorlage.

Stellen Sie das Modell mit AWS CloudFormation bereit

Das folgende Video zeigt die Schritte zur Verwendung der OpenSearch Service-Konsole, um innerhalb weniger Minuten ein Modell auf Amazon SageMaker bereitzustellen und die Modell-ID über die AI-Konnektoren zu generieren. Der erste Schritt ist die Auswahl Integration im Navigationsbereich der OpenSearch Service AWS-Konsole, der zu einer Liste der verfügbaren Integrationen weiterleitet. Die Integration wird über eine Benutzeroberfläche eingerichtet, die Sie zu den erforderlichen Eingaben auffordert.

Um die Integration einzurichten, müssen Sie lediglich den OpenSearch Service-Domänenendpunkt und einen Modellnamen angeben, um die Modellverbindung eindeutig zu identifizieren. Standardmäßig stellt die Vorlage das Hugging Face-Satztransformermodell bereit. djl://ai.djl.huggingface.pytorch/sentence-transformers/all-MiniLM-L6-v2.

Wenn Sie wählen Stapel erstellen, Sie werden zum weitergeleitet AWS CloudFormation Konsole. Die CloudFormation-Vorlage stellt die im folgenden Diagramm beschriebene Architektur bereit.

Der CloudFormation-Stack erstellt eine AWS Lambda Anwendung, die ein Modell bereitstellt Amazon Simple Storage-Service (Amazon S3), erstellt den Connector und generiert die Modell-ID in der Ausgabe. Mit dieser Modell-ID können Sie dann einen semantischen Index erstellen.

Wenn das standardmäßige All-MiniLM-L6-v2-Modell Ihren Zweck nicht erfüllt, können Sie ein beliebiges Texteinbettungsmodell Ihrer Wahl auf dem ausgewählten Modellhost (SageMaker oder Amazon Bedrock) bereitstellen, indem Sie Ihre Modellartefakte als zugängliches S3-Objekt bereitstellen. Alternativ können Sie eine der folgenden Optionen auswählen vorab trainierte Sprachmodelle und stellen Sie es in SageMaker bereit. Anweisungen zum Einrichten Ihres Endpunkts und Ihrer Modelle finden Sie unter Verfügbare Amazon SageMaker-Images.

SageMaker ist ein vollständig verwalteter Dienst, der eine breite Palette von Tools vereint, um leistungsstarkes, kostengünstiges ML für jeden Anwendungsfall zu ermöglichen und wichtige Vorteile wie Modellüberwachung, serverloses Hosting und Workflow-Automatisierung für kontinuierliche Schulung und Bereitstellung bietet. Mit SageMaker können Sie den Lebenszyklus von Texteinbettungsmodellen hosten und verwalten und diese zur Unterstützung semantischer Suchanfragen im OpenSearch Service verwenden. Wenn eine Verbindung besteht, hostet SageMaker Ihre Modelle und OpenSearch Service wird für Abfragen basierend auf Inferenzergebnissen von SageMaker verwendet.

Sehen Sie sich das bereitgestellte Modell über OpenSearch Dashboards an

Um zu überprüfen, ob die CloudFormation-Vorlage das Modell erfolgreich in der OpenSearch-Service-Domäne bereitgestellt hat, und um die Modell-ID zu erhalten, können Sie die ML Commons REST GET API über die OpenSearch Dashboards Dev Tools verwenden.

Die GET _plugins REST API bietet jetzt zusätzliche APIs, um auch den Modellstatus anzuzeigen. Mit dem folgenden Befehl können Sie den Status eines Remote-Modells anzeigen:

GET _plugins/_ml/models/<modelid>

Wie im folgenden Screenshot gezeigt, a DEPLOYED Der Status in der Antwort gibt an, dass das Modell erfolgreich im OpenSearch Service-Cluster bereitgestellt wurde.

Alternativ können Sie das auf Ihrer OpenSearch Service-Domäne bereitgestellte Modell mithilfe von anzeigen Maschinelles lernen Seite von OpenSearch Dashboards.

Auf dieser Seite werden die Modellinformationen und der Status aller bereitgestellten Modelle aufgelistet.

Erstellen Sie die neuronale Pipeline mithilfe der Modell-ID

Wenn der Status des Modells entweder angezeigt wird DEPLOYED in Dev Tools oder grün und Als Reaktion In OpenSearch-Dashboards können Sie die Modell-ID zum Aufbau Ihrer neuronalen Aufnahmepipeline verwenden. Die folgende Aufnahmepipeline wird in den OpenSearch Dashboards Dev Tools Ihrer Domain ausgeführt. Stellen Sie sicher, dass Sie die Modell-ID durch die eindeutige ID ersetzen, die für das in Ihrer Domain bereitgestellte Modell generiert wurde.

PUT _ingest/pipeline/neural-pipeline
{
  "description": "Semantic Search for retail product catalog ",
  "processors" : [
    {
      "text_embedding": {
        "model_id": "sfG4zosBIsICJFsINo3X",
        "field_map": {
           "description": "desc_v",
           "name": "name_v"
        }
      }
    }
  ]
}

Erstellen Sie den semantischen Suchindex mit der neuronalen Pipeline als Standardpipeline

Sie können jetzt Ihre Indexzuordnung mit der Standardpipeline definieren, die für die Verwendung der neuen neuronalen Pipeline konfiguriert ist, die Sie im vorherigen Schritt erstellt haben. Stellen Sie sicher, dass die Vektorfelder als deklariert sind knn_vector und die Abmessungen sind für das Modell geeignet, das auf SageMaker bereitgestellt wird. Wenn Sie die Standardkonfiguration zum Bereitstellen des reinen MiniLM-L6-v2-Modells auf SageMaker beibehalten haben, behalten Sie die folgenden Einstellungen bei und führen Sie den Befehl in Dev Tools aus.

PUT semantic_demostore
{
  "settings": {
    "index.knn": true,  
    "default_pipeline": "neural-pipeline",
    "number_of_shards": 1,
    "number_of_replicas": 1
  },
  "mappings": {
    "properties": {
      "desc_v": {
        "type": "knn_vector",
        "dimension": 384,
        "method": {
          "name": "hnsw",
          "engine": "nmslib",
          "space_type": "cosinesimil"
        }
      },
      "name_v": {
        "type": "knn_vector",
        "dimension": 384,
        "method": {
          "name": "hnsw",
          "engine": "nmslib",
          "space_type": "cosinesimil"
        }
      },
      "description": {
        "type": "text" 
      },
      "name": {
        "type": "text" 
      } 
    }
  }
}

Nehmen Sie Beispieldokumente auf, um Vektoren zu generieren

Für diese Demo können Sie das aufnehmen Beispiel-Demostore-Produktkatalog für den Einzelhandel zu den neuen semantic_demostore Index. Ersetzen Sie den Benutzernamen, das Passwort und den Domänenendpunkt durch Ihre Domäneninformationen und erfassen Sie Rohdaten in OpenSearch Service:

curl -XPOST -u 'username:password' 'https://domain-end-point/_bulk' --data-binary @semantic_demostore.json -H 'Content-Type: application/json'

Validieren Sie den neuen semantic_demostore-Index

Nachdem Sie Ihren Datensatz nun in die OpenSearch Service-Domäne aufgenommen haben, überprüfen Sie mithilfe einer einfachen Suche, ob die erforderlichen Vektoren generiert werden, um alle Felder abzurufen. Überprüfen Sie, ob die Felder als definiert sind knn_vectors die erforderlichen Vektoren haben.

Vergleichen Sie die lexikalische Suche und die semantische Suche mithilfe der neuronalen Suche mithilfe des Tools „Suchergebnisse vergleichen“.

Das Tool „Suchergebnisse vergleichen“. auf OpenSearch Dashboards ist für Produktions-Workloads verfügbar. Sie können zu navigieren Suchergebnisse vergleichen Seite und vergleichen Sie Abfrageergebnisse zwischen lexikalischer Suche und neuronaler Suche, die für die Verwendung der zuvor generierten Modell-ID konfiguriert sind.

Aufräumen

Sie können die von Ihnen erstellten Ressourcen gemäß den Anweisungen in diesem Beitrag löschen, indem Sie den CloudFormation-Stack löschen. Dadurch werden die Lambda-Ressourcen und der S3-Bucket gelöscht, die das in SageMaker bereitgestellte Modell enthalten. Führen Sie die folgenden Schritte aus:

  1. Navigieren Sie in der AWS CloudFormation-Konsole zu Ihrer Stack-Detailseite.
  2. Auswählen Löschen.

  1. Auswählen Löschen zu bestätigen.

Sie können den Fortschritt des Stapellöschens in der AWS CloudFormation-Konsole überwachen.

Beachten Sie, dass durch das Löschen des CloudFormation-Stacks nicht das auf der SageMaker-Domäne bereitgestellte Modell und der erstellte AI/ML-Connector gelöscht werden. Dies liegt daran, dass diese Modelle und der Connector mehreren Indizes innerhalb der Domäne zugeordnet werden können. Um ein Modell und den zugehörigen Connector gezielt zu löschen, verwenden Sie die Modell-APIs, wie in den folgenden Screenshots gezeigt.

Erstens undeploy das Modell aus dem OpenSearch Service-Domänenspeicher:

POST /_plugins/_ml/models/<model_id>/_undeploy

Anschließend können Sie das Modell aus dem Modellindex löschen:

DELETE /_plugins/_ml/models/<model_id>

Löschen Sie abschließend den Connector aus dem Connector-Index:

DELETE /_plugins/_ml/connectors/<connector_id>

Zusammenfassung

In diesem Beitrag haben Sie erfahren, wie Sie ein Modell in SageMaker bereitstellen, den AI/ML-Connector mithilfe der OpenSearch Service-Konsole erstellen und den neuronalen Suchindex erstellen. Die Möglichkeit, AI/ML-Konnektoren im OpenSearch Service zu konfigurieren, vereinfacht den Vektorhydratationsprozess, indem die Integrationen in externe Modelle nativ erfolgen. Mithilfe der neuronalen Aufnahmepipeline und der neuronalen Suche, die die Modell-ID verwenden, um die Vektoreinbettung im laufenden Betrieb während der Aufnahme und Suche zu generieren, können Sie in wenigen Minuten einen neuronalen Suchindex erstellen.

Weitere Informationen zu diesen AI/ML-Konnektoren finden Sie unter Amazon OpenSearch Service AI-Konnektoren für AWS-Dienste, AWS CloudFormation-Vorlagenintegrationen für die semantische Suche und Erstellen von Konnektoren für ML-Plattformen von Drittanbietern.


Über die Autoren

Aruna Govindaraju ist ein Amazon OpenSearch Specialist Solutions Architect und hat mit vielen kommerziellen und Open-Source-Suchmaschinen zusammengearbeitet. Ihre Leidenschaft gilt der Suche, Relevanz und Benutzererfahrung. Ihre Expertise in der Korrelation von Endbenutzersignalen mit dem Suchmaschinenverhalten hat vielen Kunden dabei geholfen, ihr Sucherlebnis zu verbessern.

Dagney Braun ist Hauptproduktmanager bei AWS mit Schwerpunkt auf OpenSearch.

Zeitstempel:

Mehr von AWS Big Data