Vektor-DB-Lookup#
Vector DB Lookup ist ein Werkzeug für die Vektorsuche, das es Benutzern ermöglicht, die Top-k ähnlichsten Vektoren aus einer Vektordatenbank zu suchen. Dieses Werkzeug ist eine Hülle für mehrere Vektordatenbanken von Drittanbietern. Die Liste der derzeit unterstützten Datenbanken ist wie folgt.
Name |
Beschreibung |
|---|---|
Azure Cognitive Search |
Microsofts Cloud-Suchdienst mit integrierten KI-Funktionen, die alle Arten von Informationen anreichern, um die Identifizierung und Erkundung relevanter Inhalte in großem Maßstab zu unterstützen. |
Qdrant |
Qdrant ist eine Vektor-Ähnlichkeitssuchmaschine, die einen produktionsbereiten Dienst mit einer praktischen API zum Speichern, Suchen und Verwalten von Punkten (d. h. Vektoren) mit zusätzlichem Payload bereitstellt. |
Weaviate |
Weaviate ist eine Open-Source-Vektordatenbank, die sowohl Objekte als auch Vektoren speichert. Dies ermöglicht die Kombination von Vektorsuche mit strukturierter Filterung. |
Dieses Werkzeug wird weitere Vektordatenbanken unterstützen.
Anforderungen#
Für AzureML-Benutzer ist das Tool im Standard-Image installiert. Sie können das Tool ohne zusätzliche Installation verwenden.
Für lokale Benutzer,
pip install promptflow-vectordb
Voraussetzungen#
Das Werkzeug sucht Daten aus einer Vektordatenbank eines Drittanbieters. Um es zu verwenden, sollten Sie im Voraus Ressourcen erstellen und eine Verbindung zwischen dem Werkzeug und der Ressource herstellen.
Azure Cognitive Search
Ressource erstellen Azure Cognitive Search.
Fügen Sie die Verbindung „Cognitive Search“ hinzu. Füllen Sie das Feld „API Key“ mit dem „Primary admin key“ aus dem Abschnitt „Keys“ der erstellten Ressource und füllen Sie das Feld „API Base“ mit der URL. Das URL-Format ist
https://{Ihr_Service_Name}.search.windows.net.
Qdrant
Folgen Sie der Installation, um Qdrant auf einem selbst verwalteten Cloud-Server bereitzustellen.
Fügen Sie die Verbindung „Qdrant“ hinzu. Füllen Sie „API Base“ mit der Adresse Ihres selbst verwalteten Cloud-Servers und das Feld „API Key“.
Weaviate
Folgen Sie der Installation, um Weaviate auf einer selbst verwalteten Instanz bereitzustellen.
Fügen Sie die Verbindung „Weaviate“ hinzu. Füllen Sie „API Base“ mit der Adresse Ihrer selbst verwalteten Instanz und das Feld „API Key“.
Eingaben#
Das Tool akzeptiert die folgenden Eingaben
Azure Cognitive Search
Name
Typ
Beschreibung
Erforderlich
Verbindung
CognitiveSearchConnection
Die erstellte Verbindung für den Zugriff auf den Cognitive Search Endpunkt.
Ja
index_name
string
Der im Cognitive Search-Ressource erstellte Indexname.
Ja
text_field
string
Der Name des Textfelds. Das zurückgegebene Textfeld wird den Text der Ausgabe füllen.
Nein
vector_field
string
Der Name des Vektorfelds. Der Zielvektor wird in diesem Vektorfeld gesucht.
Ja
search_params
dict
Die Suchparameter. Es handelt sich um Schlüssel-Wert-Paare. Abgesehen von den Parametern in der obigen Werkzeug-Eingabeliste können zusätzliche Suchparameter als JSON-Objekt unter dem Namen search_params gebildet werden. Verwenden Sie zum Beispiel
{"select": ""}als search_params, um die zurückgegebenen Felder auszuwählen, oder{"search": ""}, um eine Hybrid-Suche durchzuführen.Nein
search_filters
dict
Die Suchfilter. Es handelt sich um Schlüssel-Wert-Paare, das Eingabeformat ist wie
{"filter": ""}.Nein
vector
Liste
Der Zielvektor, der abgefragt werden soll, welcher vom Embedding-Werkzeug generiert werden kann.
Ja
top_k
int
Die Anzahl der zurückzugebenden Top-bewerteten Entitäten. Der Standardwert ist 3.
Nein
Qdrant
Name
Typ
Beschreibung
Erforderlich
Verbindung
QdrantConnection
Die erstellte Verbindung für den Zugriff auf den Qdrant-Server.
Ja
collection_name
string
Der im selbst verwalteten Cloud-Server erstellte Sammlungsname.
Ja
text_field
string
Der Name des Textfelds. Das zurückgegebene Textfeld wird den Text der Ausgabe füllen.
Nein
search_params
dict
Die Suchparameter können als JSON-Objekt unter dem Namen search_params gebildet werden. Verwenden Sie zum Beispiel
{"params": {"hnsw_ef": 0, "exact": false, "quantization": null}}, um search_params einzustellen.Nein
search_filters
dict
Die Suchfilter. Es handelt sich um Schlüssel-Wert-Paare, das Eingabeformat ist wie
{"filter": {"should": [{"key": "", "match": {"value": ""}}]}}.Nein
vector
Liste
Der Zielvektor, der abgefragt werden soll, welcher vom Embedding-Werkzeug generiert werden kann.
Ja
top_k
int
Die Anzahl der zurückzugebenden Top-bewerteten Entitäten. Der Standardwert ist 3.
Nein
Weaviate
Name
Typ
Beschreibung
Erforderlich
Verbindung
WeaviateConnection
Die erstellte Verbindung für den Zugriff auf Weaviate.
Ja
class_name
string
Der Klassenname.
Ja
text_field
string
Der Name des Textfelds. Das zurückgegebene Textfeld wird den Text der Ausgabe füllen.
Nein
vector
Liste
Der Zielvektor, der abgefragt werden soll, welcher vom Embedding-Werkzeug generiert werden kann.
Ja
top_k
int
Die Anzahl der zurückzugebenden Top-bewerteten Entitäten. Der Standardwert ist 3.
Nein
Ausgaben#
Das Folgende ist ein Beispiel für ein JSON-Format-Ergebnis, das vom Werkzeug zurückgegeben wird und die Top-k-bewerteten Entitäten enthält. Die Entität folgt einem generischen Schema für Vektorsuchergebnisse, das vom promptflow-vectordb SDK bereitgestellt wird.
Azure Cognitive Search
Für Azure Cognitive Search werden die folgenden Felder ausgefüllt:
Feldname
Typ
Beschreibung
original_entity
dict
Die ursprüngliche Antwort-JSON von der Such-REST-API.
score
float
Der "@search.score" der ursprünglichen Entität, der die Ähnlichkeit zwischen der Entität und dem Abfragevektor bewertet.
text
string
Text der Entität
vector
Liste
Vektor der Entität
Ausgabe
[ { "metadata": null, "original_entity": { "@search.score": 0.5099789, "id": "", "your_text_filed_name": "sample text1", "your_vector_filed_name": [-0.40517663431890405, 0.5856996257406859, -0.1593078462266455, -0.9776269170785785, -0.6145604369828972], "your_additional_field_name": "" }, "score": 0.5099789, "text": "sample text1", "vector": [-0.40517663431890405, 0.5856996257406859, -0.1593078462266455, -0.9776269170785785, -0.6145604369828972] } ]
Qdrant
Für Qdrant werden die folgenden Felder ausgefüllt:
Feldname
Typ
Beschreibung
original_entity
dict
Die ursprüngliche Antwort-JSON von der Such-REST-API.
metadata
dict
Payload der ursprünglichen Entität
score
float
Der Score der ursprünglichen Entität, der die Ähnlichkeit zwischen der Entität und dem Abfragevektor bewertet.
text
string
Text der Payload
vector
Liste
Vektor der Entität
Ausgabe
[ { "metadata": { "text": "sample text1" }, "original_entity": { "id": 1, "payload": { "text": "sample text1" }, "score": 1, "vector": [0.18257418, 0.36514837, 0.5477226, 0.73029673], "version": 0 }, "score": 1, "text": "sample text1", "vector": [0.18257418, 0.36514837, 0.5477226, 0.73029673] } ]
Weaviate
Für Weaviate werden die folgenden Felder ausgefüllt:
Feldname
Typ
Beschreibung
original_entity
dict
Die ursprüngliche Antwort-JSON von der Such-REST-API.
score
float
Die "certainty" der ursprünglichen Entität, die die Ähnlichkeit zwischen der Entität und dem Abfragevektor bewertet.
text
string
Text in der ursprünglichen Entität
vector
Liste
Vektor der Entität
Ausgabe
[ { "metadata": null, "original_entity": { "_additional": { "certainty": 1, "distance": 0, "vector": [ 0.58, 0.59, 0.6, 0.61, 0.62 ] }, "text": "sample text1." }, "score": 1, "text": "sample text1.", "vector": [ 0.58, 0.59, 0.6, 0.61, 0.62 ] } ]