

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)](https://opensearch.org/docs/latest/search-plugins/knn/index/) basiert OpenSearch, erhalten Sie dieselbe Funktionalität mit der Einfachheit einer serverlosen Umgebung. [Die Engine unterstützt die k-NN-Plug-in-API.](https://opensearch.org/docs/latest/search-plugins/knn/api/) 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. Die gemeinsame Zuordnung der Datentypen reduziert die Komplexität, erhöht die Wartbarkeit und vermeidet Datenduplizierungen, Probleme mit der Versionskompatibilität und Lizenzprobleme. 

**Anmerkung**  
Notieren Sie die folgenden Informationen:  
Amazon OpenSearch Serverless unterstützt die skalare 16-Bit-Quantisierung von Faiss, mit der Konvertierungen zwischen 32-Bit-Floating- und 16-Bit-Vektoren durchgeführt werden können. [Weitere Informationen finden Sie unter Faiss-16-Bit-Skalarquantisierung.](https://opensearch.org/docs/latest/search-plugins/knn/knn-vector-quantization/#faiss-16-bit-scalar-quantization) Sie können auch binäre Vektoren verwenden, um die Speicherkosten zu senken. Weitere Informationen finden Sie unter [Binäre Vektoren](https://opensearch.org/docs/latest/field-types/supported-field-types/knn-vector#binary-vectors).
Amazon OpenSearch Serverless unterstützt die festplattenbasierte Vektorsuche. Die festplattenbasierte Vektorsuche reduziert die Betriebskosten für Vektor-Workloads in Umgebungen mit wenig Arbeitsspeicher erheblich. Weitere Informationen finden Sie unter [Festplattenbasierte](https://docs.opensearch.org/2.19/vector-search/optimizing-storage/disk-based-vector-search/) Vektorsuche.

## Erste Schritte mit Sammlungen für die Vektorsuche
Erste Schritte

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

1. [Konfigurieren von Berechtigungen](#serverless-vector-permissions)

1. [Erstellen einer Sammlung](#serverless-vector-create)

1. [Hochladen und Suchen von Daten](#serverless-vector-index)

1. [Löschen der Sammlung](#serverless-vector-delete)

### 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](security-iam-serverless.md#security-iam-serverless-id-based-policies) mit den folgenden Mindestberechtigungen verfügen:

------
#### [ JSON ]

****  

```
{
  "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](security-iam-serverless.md)

### 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 zu [https://console.aws.amazon.com/aos/Hause](https://console.aws.amazon.com/aos/home ).

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

1. Nennen Sie das **Sammelgehäuse**.

1. Wählen Sie als Sammlungstyp die Option **Vektorsuche** aus. Weitere Informationen finden Sie unter [Auswahl eines Sammlungstyps](serverless-overview.md#serverless-usecase).

1. 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. 

1. 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.

1. Wählen Sie **Weiter** aus.

1. Ü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. [https://www.postman.com/downloads/](https://www.postman.com/downloads/) In diesem Tutorial werden Dev Tools verwendet.

**Um Daten in der Wohnsammlung zu indizieren und zu suchen**

1. Um einen einzigen Index für Ihre neue Sammlung zu erstellen, senden Sie die folgende Anfrage an die [Dev Tools-Konsole](https://opensearch.org/docs/latest/dashboards/dev-tools/index-dev/). 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"
            }
         }
      }
   }
   ```

1. 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"
   }
   ```

1. 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**.

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

1. 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](#serverless-vector-index) aus dem vorherigen Tutorial. Die anderen Schritte bleiben gleich. Weitere Informationen zu Filtern finden Sie unter [k-NN-Suche mit Filtern](https://opensearch.org/docs/latest/search-plugins/knn/filter-search-knn/).

**Um Daten in der Wohnsammlung zu indizieren und zu durchsuchen**

1. Um einen einzigen Index für Ihre Sammlung zu erstellen, senden Sie die folgende Anfrage an die [Dev Tools-Konsole](https://opensearch.org/docs/latest/dashboards/dev-tools/index-dev/):

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

1. 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"
   }
   ```

1. 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 benötigen OCUs, wenden Sie sich an den [AWS Support](https://aws.amazon.com/premiumsupport/), um die maximale Anzahl an OpenSearch Recheneinheiten (OCUs) für Ihr Konto zu erhöhen. 

## Einschränkungen


Für Sammlungen der Vektorsuche gelten die folgenden Einschränkungen:
+ Vektorsuchsammlungen 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-Managementkonsole 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](https://github.com/opensearch-project/opensearch-py/blob/main/guides/plugins/knn.md). 
+ Verwenden Sie den OpenSearch Java-Client, um mit Vektorsuchsammlungen zu arbeiten. Sehen Sie sich dieses Tutorial unter an [GitHub](https://github.com/opensearch-project/opensearch-java/blob/main/guides/plugins/knn.md). 
+ 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](https://python.langchain.com/docs/integrations/vectorstores/opensearch).