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
        ]
      }
    ]