Mit der Search API können Sie Data Objects finden, die einer bestimmten Anfrage ähneln, und eine Liste mit nach Ähnlichkeit sortierten Ergebnissen zurückgeben. Die Search API unterstützt auch das Filtern.
Die Search API bietet verschiedene Möglichkeiten zum Suchen nach Data-Objekten: Vektorsuche, Volltextsuche und semantische Suche. Außerdem können mehrere Suchanfragen beliebigen Typs kombiniert werden, um eine Hybridsuche zu ermöglichen.
Vektorsuche
Bei der Vektorsuche können Sie Ihren eigenen Anfragevektor angeben. Dies ist die erforderliche Methode zum Suchen von Einbettungsfeldern ohne embedding-config.
Wenn mehrere search_vector-Felder angegeben werden, werden die Ergebnisse mit gleichen Gewichtungen kombiniert.
Das folgende Beispiel zeigt, wie Sie eine Vektorsuche in einer Sammlung mit der ID movies durchführen.
curl -X POST \
'https://vectorsearch.googleapis.com/v1beta/projects/PROJECT_ID/locations/LOCATION/collections/movies/dataObjects:search' \
-H 'Bearer $(gcloud auth print-access-token)' \
-H 'Content-Type: application/json' \
-d '{ \
"vector_search": { \
"search_field": "plot_embedding", \
"vector": { \
"values": [ \
0.42426406871192845, \
0.565685424949238, \
0.7071067811865475 \
] \
}, \
"filter": { \
"genre": { \
"$eq": "Thriller" \
} \
}, \
"top_k": 5, \
"output_fields": { \
"data_fields": "*", \
"vector_fields": "*", \
"metadata_fields": "*" \
} \
} \
}'
Textsuche
Dadurch wird eine Volltextsuche ohne Sparse-Vektoren durchgeführt. Im Standarddialekt für „word“-Abfragen wird die gesamte Eingabe als einzelne Suchbegriffe mit einem impliziten AND-Operator behandelt. Sie können enhanced_query auf true setzen, um Suchbegriffe zu erweitern, Stemming und das Entfernen von Stoppwörtern zu verarbeiten und zusätzliche Suchoperatoren zuzulassen:
OR: Ein Operator für die disjunktive Suche, bei dem die Groß- und Kleinschreibung berücksichtigt wird und der Dokumente abgleicht, die mindestens einen der angegebenen Begriffe enthalten. Sie gilt nur für die beiden angrenzenden Begriffe.": (doppelte Anführungszeichen) für die Suche nach Wortgruppen.-: Der Negationsoperator. Dokumente, die Begriffe enthalten, vor denen der Operator steht, werden ausgeschlossen.
Semantische Suche
Bei dieser Suche wird Ihre Textanfrage in Einbettungen umgewandelt, um Ergebnisse auf Grundlage der semantischen Bedeutung zu finden. Dabei wird die in Ihrem Schema definierte embedding-config verwendet, um die Abfrageeinbettung zu generieren. Wenn mehrere search_vector-Felder angegeben werden, werden die Ergebnisse mit gleichen Gewichtungen kombiniert.
Mit der Hybridsuche suchen
Mit batch_search_data_objects können Sie mehrere Suchvorgänge parallel ausführen (Vektorsuche, Textsuche und semantische Suche) und die Ergebnisse optional mit einem Ranker kombinieren und einstufen.
Die folgenden Ranker sind verfügbar:
ReciprocalRankFusion:Führt Ergebnismengen mit dem RRF-Algorithmus (Reciprocal Rank Fusion) zusammen.VertexRanker:Verwendet die Vertex Ranking API, um Ergebnisse zusammenzuführen und zu sortieren.