Pinecone Index.Query()

Pinecone ist eine Vektordatenbank, die sich auf die Ähnlichkeitssuche und die Suche nach nächsten Nachbarn spezialisiert hat. Es verwendet Vektoreinbettungen, um Datenpunkte wie Dokumente, Bilder oder andere Datentypen in einem hochdimensionalen Raum darzustellen.

In diesem Beitrag erfahren Sie, wie Sie die Daten eines bestimmten Pinecone-Index mithilfe des Python-Clients für Pinecone DB abfragen.

Anforderungen:

Um diesem Tutorial folgen zu können, stellen Sie sicher, dass Sie über Folgendes verfügen:

  • Installierte Python 3.10 und höher
  • Grundlegende Python-Programmierkenntnisse
  • Installation des Pinecone-Clients

    Bevor wir mit Python mit dem Pinecone-Server interagieren, müssen wir den Pinecone-Client auf unserem Computer installieren. Glücklicherweise können wir dies mit einem einfachen „pip“-Befehl wie folgt tun:

    $ pip3 Pinecone-Client installieren

    Der vorherige Befehl sollte die neueste stabile Version des Pinecone-Clients herunterladen und in Ihrem Projekt installieren.

    Erstellen eines Index und Upsert

    Sobald wir den Pinecone-Client installiert haben, können wir einen Index zum Speichern der Vektordaten erstellen.

    Wir können dies mit der Methode create_index() tun, wie im folgenden Beispielcode gezeigt:

    numpy als np importieren
    Tannenzapfen importieren

    Pinecone.init(api_key=“0f57b6af-ea59-4fd3-a0ce-3c7f0c1d419f“, Environment=“us-west1-gcp-free“)
    tannenzapfen.create_index(„sample-index“, dimension=8)

    # Erstellen Sie zwei Sätze 8-dimensionaler Vektoren
    vectors_a = np.random.rand(15, 8).tolist()
    vectors_b = np.random.rand(20, 8).tolist()

    index = tannenzapfen.Index(„sample-index“)

    # IDs erstellen
    ids_a = map(str, np.arange(15).tolist())
    ids_b = map(str, np.arange(20).tolist())

    # In separate Namespaces einfügen
    index.upsert(vectors=zip(ids_a,vectors_a),namespace=’namespace_a‘)
    index.upsert(vectors=zip(ids_b,vectors_b),namespace=’namespace_b‘)

    Der vorherige Code beginnt mit der Initialisierung von Pinecone. Anschließend erstellt es einen Basisindex namens „sample-index“ mit angegebenen Parametern und stellt eine Verbindung zum Index her.

    Als nächstes generieren wir zwei Sätze 8-dimensionaler Vektoren und die entsprechenden IDs.

    Als nächstes erstellen wir die IDs für die Vektorpaare, die wir zur Identifizierung der Vektoren verwenden.

    Schließlich fügt es die Vektoren in „namespace_a“ und „namespace_b“ ein.

    Der vorherige Code sollte die Vektoren in ihre entsprechenden Namespaces einfügen, wie in der Funktion upsert() angegeben.

    Pinecone-Abfrage nach Namespace

    Sobald die Daten im Index gespeichert sind, können wir die Methode query() verwenden, um einen Namespace mithilfe eines Abfragevektors zu durchsuchen. Die Methode ruft die IDs der ähnlichsten Elemente in einem Namespace und ihre Ähnlichkeitswerte ab.

    Die Funktionssyntax lautet wie folgt:

    Index.query(**kwargs)

    Die Funktion akzeptiert die folgenden Parameter:

  • Namespace – Legt den abzufragenden Namespace fest.
  • Top_k – Legt die Anzahl der Ergebnisse fest, die für jede Abfrage zurückgegeben werden sollen.
  • Filter – Definiert den Filter, der auf die Vektoren angewendet werden soll. Weitere Informationen finden Sie in unserem Tutorial zu Vektormetadaten.
  • include_values ​​– Gibt an, ob die Vektorwerte in der Antwort enthalten sind.
  • Include_metadata – Gibt an, ob die Metadaten in der Antwort und den IDs enthalten sind.
  • Vektor – Gibt den Abfragevektor an.
  • Sparse_vector – Gibt den spärlichen Abfragevektor an.
  • Id – Gibt die eindeutige ID des Vektors an, der als Abfragevektor verwendet werden soll.
  • Verwendung von Pinecone Index.query()

    Im Folgenden wird gezeigt, wie Sie mit der Funktion query() die zehn am häufigsten übereinstimmenden Vektoren aus namespace_b zurückgeben:

    query_response = index.query(

    namespace=’namespace_b‘,

    top_k=10,

    include_values=True,

    include_metadata=True,

    Vektor=[0.02, 0.99, 0.80, 0.54, 0.20, 0.12, 0.84, 0.56]

    )

    print(query_response)

    Wie Sie sich vorstellen können, sollte diese Abfrage die zehn am häufigsten übereinstimmenden Vektoren aus dem angegebenen Namespace zurückgeben.

    Eine Beispielausgabe sieht wie folgt aus:

    Abschluss

    Sie haben gelernt, wie Sie die vom Pinecone-Client für Python bereitgestellte query()-Methode verwenden, um ähnlich übereinstimmende Vektoren in einem bestimmten Namespace zu finden.

    Kommentar verfassen

    Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

    Nach oben scrollen