Arbeiten mit Vektorsuchsammlungen - OpenSearch Amazon-Dienst

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Arbeiten mit Vektorsuchsammlungen

Der Sammlungstyp der Vektorsuche in OpenSearch Serverless bietet eine skalierbare und leistungsstarke Funktion zur Ähnlichkeitssuche. Es macht es Ihnen leicht, moderne, erweiterte Sucherlebnisse für maschinelles Lernen (ML) und Anwendungen für generative künstliche Intelligenz (KI) zu entwickeln, ohne die zugrunde liegende Vektordatenbankinfrastruktur verwalten zu müssen.

Zu den Anwendungsfällen für Vektorsuchsammlungen gehören Bildersuchen, Dokumentensuchen, Musikabruf, Produktempfehlungen, Videosuchen, standortbezogene Suchen, Betrugserkennung und Anomalieerkennung.

Da die Vektor-Engine für OpenSearch Serverless auf der Suchfunktion k-Nearest Neighbor (k-NN) basiert OpenSearch, erhalten Sie dieselbe Funktionalität mit der Einfachheit einer serverlosen Umgebung. Die Engine unterstützt die k-NN-API-Operationen. OpenSearch Mit diesen Vorgängen können Sie Volltextsuche, erweiterte Filterung, Aggregationen, Geodatenabfragen, verschachtelte Abfragen zum schnelleren Abrufen von Daten und verbesserte Suchergebnisse nutzen.

Die Vektor-Engine bietet Entfernungsmetriken wie euklidische Entfernung, Kosinusähnlichkeit und Punktproduktähnlichkeit und kann 16.000 Dimensionen aufnehmen. Sie können Felder mit verschiedenen Datentypen für Metadaten wie Zahlen, Boolesche Werte, Datumsangaben, Stichwörter und Geopunkte speichern. Sie können auch Felder mit Text für beschreibende Informationen speichern, um gespeicherten Vektoren mehr Kontext zu verleihen. Durch die gemeinsame Zuordnung der Datentypen wird die Komplexität reduziert, die Wartbarkeit erhöht und Datenduplizierungen, Probleme mit der Versionskompatibilität und Lizenzprobleme vermieden.

Erste Schritte mit Sammlungen für die Vektorsuche

In diesem Tutorial führen Sie die folgenden Schritte aus, um Vektoreinbettungen in Echtzeit zu speichern, zu suchen und abzurufen:

Schritt 1: Konfigurieren von Berechtigungen

Um dieses Tutorial abzuschließen (und OpenSearch Serverless im Allgemeinen zu verwenden), benötigen Sie die richtigen AWS Identity and Access Management (IAM-) Berechtigungen. In diesem Tutorial erstellen Sie eine Sammlung, laden Daten hoch, suchen nach Daten und löschen dann die Sammlung.

Ihr Benutzer oder Ihre Rolle muss über eine angefügte identitätsbasierte Richtlinie mit den folgenden Mindestberechtigungen verfügen:

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "aoss:CreateCollection", "aoss:ListCollections", "aoss:BatchGetCollection", "aoss:DeleteCollection", "aoss:CreateAccessPolicy", "aoss:ListAccessPolicies", "aoss:UpdateAccessPolicy", "aoss:CreateSecurityPolicy", "iam:ListUsers", "iam:ListRoles" ], "Effect": "Allow", "Resource": "*" } ] }

Weitere Informationen zu OpenSearch serverlosen IAM-Berechtigungen finden Sie unter. Identity and Access Management für Amazon OpenSearch Serverless

Schritt 2: Erstellen einer Sammlung

Eine Sammlung ist eine Gruppe von OpenSearch Indizes, die zusammenarbeiten, um eine bestimmte Arbeitslast oder einen bestimmten Anwendungsfall zu unterstützen.

Um eine OpenSearch serverlose Sammlung zu erstellen
  1. Öffnen Sie die Amazon OpenSearch Service-Konsole unter https://console.aws.amazon.com/aos/home.

  2. Wählen Sie im linken Navigationsbereich Collections (Sammlungen) und wählen Sie Create collection (Sammlung erstellen) aus.

  3. Nennen Sie das Sammelhaus.

  4. Wählen Sie als Sammlungstyp die Option Vektorsuche aus. Weitere Informationen finden Sie unter Auswahl eines Sammlungstyps.

  5. Deaktivieren Sie unter Bereitstellungstyp die Option Redundanz aktivieren (aktive Replikate). Dadurch wird eine Sammlung im Entwicklungs- oder Testmodus erstellt und die Anzahl der OpenSearch Recheneinheiten (OCUs) in Ihrer Sammlung auf zwei reduziert. Wenn Sie in diesem Tutorial eine Produktionsumgebung erstellen möchten, lassen Sie das Kontrollkästchen aktiviert.

  6. Wählen Sie unter Sicherheit die Option Einfach erstellen aus, um Ihre Sicherheitskonfiguration zu optimieren. Alle Daten in der Vector Engine werden bei der Übertragung und im Ruhezustand standardmäßig verschlüsselt. Die Vektor-Engine unterstützt detaillierte IAM-Berechtigungen, sodass Sie definieren können, wer Verschlüsselungen, Netzwerke, Sammlungen und Indizes erstellen, aktualisieren und löschen darf.

  7. Wählen Sie Weiter aus.

  8. Überprüfen Sie Ihre Sammlungseinstellungen und wählen Sie Submit (Senden) aus. Warten Sie einige Minuten, bis der Sammlungsstatus Active erreicht ist.

Schritt 3: Daten hochladen und suchen

Ein Index ist eine Sammlung von Dokumenten mit einem gemeinsamen Datenschema, das es Ihnen ermöglicht, Ihre Vektoreinbettungen und andere Felder zu speichern, zu suchen und abzurufen. Sie können Daten erstellen und in Indizes in einer OpenSearch serverlosen Sammlung hochladen, indem Sie die Dev Tools-Konsole in OpenSearch Dashboards oder ein HTTP-Tool wie Postman oder awscurl verwenden. In diesem Tutorial werden Dev Tools verwendet.

So indizieren und durchsuchen Sie Daten in der Filme-Sammlung
  1. Um einen einzelnen Index für Ihre neue Sammlung zu erstellen, senden Sie die folgende Anfrage an die Dev Tools-Konsole. Standardmäßig wird dadurch ein Index mit einer nmslib Engine und einer euklidischen Distanz erstellt.

    PUT housing-index { "settings": { "index.knn": true }, "mappings": { "properties": { "housing-vector": { "type": "knn_vector", "dimension": 3 }, "title": { "type": "text" }, "price": { "type": "long" }, "location": { "type": "geo_point" } } } }
  2. Um ein einzelnes Dokument in den Housing-Index zu indexieren, senden Sie die folgende Anfrage:

    POST housing-index/_doc { "housing-vector": [ 10, 20, 30 ], "title": "2 bedroom in downtown Seattle", "price": "2800", "location": "47.71, 122.00" }
  3. Um nach Immobilien zu suchen, die denen in Ihrem Index ähnlich sind, senden Sie die folgende Abfrage:

    GET housing-index/_search { "size": 5, "query": { "knn": { "housing-vector": { "vector": [ 10, 20, 30 ], "k": 5 } } } }

Schritt 4: Sammlung löschen

Da die Wohnungssammlung zu Testzwecken dient, sollten Sie sie unbedingt löschen, wenn Sie mit dem Experimentieren fertig sind.

Um eine OpenSearch serverlose Sammlung zu löschen
  1. Gehen Sie zurück zur Amazon OpenSearch Service-Konsole.

  2. Wählen Sie im linken Navigationsbereich Sammlungen und dann die Eigenschaftensammlung aus.

  3. Wählen Sie Löschen und bestätigen Sie den Löschvorgang.

Gefilterte Suche

Sie können Filter verwenden, um Ihre semantischen Suchergebnisse zu verfeinern. Um einen Index zu erstellen und eine gefilterte Suche in Ihren Dokumenten durchzuführen, ersetzen Sie die folgenden Anweisungen anstelle von Daten hochladen und suchen aus dem vorherigen Tutorial. Die anderen Schritte bleiben gleich. Weitere Informationen zu Filtern finden Sie unter k-NN-Suche mit Filtern.

So indizieren und durchsuchen Sie Daten in der Filme-Sammlung
  1. Um einen einzelnen Index für Ihre Sammlung zu erstellen, senden Sie die folgende Anfrage in der Dev Tools-Konsole:

    PUT housing-index-filtered { "settings": { "index.knn": true }, "mappings": { "properties": { "housing-vector": { "type": "knn_vector", "dimension": 3, "method": { "engine": "faiss", "name": "hnsw" } }, "title": { "type": "text" }, "price": { "type": "long" }, "location": { "type": "geo_point" } } } }
  2. Um ein einzelnes Dokument zu indexieren housing-index-filtered, senden Sie die folgende Anfrage:

    POST housing-index-filtered/_doc { "housing-vector": [ 10, 20, 30 ], "title": "2 bedroom in downtown Seattle", "price": "2800", "location": "47.71, 122.00" }
  3. Um nach Ihren Daten nach einer Wohnung in Seattle zu einem bestimmten Preis und in einer bestimmten Entfernung von einem geografischen Punkt zu suchen, senden Sie die folgende Anfrage:

    GET housing-index-filtered/_search { "size": 5, "query": { "knn": { "housing-vector": { "vector": [ 0.1, 0.2, 0.3 ], "k": 5, "filter": { "bool": { "must": [ { "query_string": { "query": "Find me 2 bedroom apartment in Seattle under $3000 ", "fields": [ "title" ] } }, { "range": { "price": { "lte": 3000 } } }, { "geo_distance": { "distance": "100miles", "location": { "lat": 48, "lon": 121 } } } ] } } } } } }

Workloads im Milliardenbereich

Vektorsuchsammlungen unterstützen Workloads mit Milliarden von Vektoren. Sie müssen zu Skalierungszwecken keine Neuindizierung durchführen, da Auto Scaling dies für Sie erledigt. Wenn Sie über Millionen von Vektoren (oder mehr) mit einer hohen Anzahl von Dimensionen verfügen und mehr als 200 OCUs benötigen, wenden Sie sich an den AWS Support, um die maximale Anzahl an OpenSearch Recheneinheiten (OCUs) für Ihr Konto zu erhöhen.

Einschränkungen

Für Sammlungen mit Vektorsuche gelten die folgenden Einschränkungen:

  • Sammlungen für die Vektorsuche unterstützen die Apache Lucene ANN-Engine nicht.

  • Sammlungen mit Vektorsuche unterstützen nur den HNSW-Algorithmus mit Faiss und nicht IVF und IVFQ.

  • Sammlungen für die Vektorsuche unterstützen die API-Operationen Warmup, Statistik und Modelltraining nicht.

  • Sammlungen für die Vektorsuche unterstützen keine Inline- oder gespeicherten Skripts.

  • Informationen zur Indexanzahl sind in den Sammlungen AWS Management Console für die Vektorsuche nicht verfügbar.

  • Das Aktualisierungsintervall für Indizes für Vektorsuchsammlungen beträgt 60 Sekunden.

Nächste Schritte

Da Sie nun wissen, wie Sie eine Vektorsuchsammlung erstellen und Daten indexieren, möchten Sie vielleicht einige der folgenden Übungen ausprobieren:

  • Verwenden Sie den OpenSearch Python-Client, um mit Vektorsuchsammlungen zu arbeiten. Sehen Sie sich dieses Tutorial unter an GitHub.

  • Verwenden Sie den OpenSearch Java-Client, um mit Vektorsuchsammlungen zu arbeiten. Sehen Sie sich dieses Tutorial unter an GitHub.

  • Für LangChain die Verwendung OpenSearch als Vektorspeicher eingerichtet. LangChain ist ein Open-Source-Framework für die Entwicklung von Anwendungen, die auf Sprachmodellen basieren. Weitere Informationen finden Sie in der LangChain Dokumentation.