Löschen Sie einen Vektor mithilfe von Metadaten in Pinecone

Indexmetadaten in Pinecone beziehen sich auf die zusätzlichen Informationen oder Attribute, die mit Vektoren verknüpft sind, die in einem Index gespeichert sind. Pinecone ermöglicht es uns, die Schlüssel-Wert-Paare auf Vektoren anzugreifen, die als Metadaten behandelt werden. Dadurch können wir die Kontextinformationen oder beschreibenden Attribute bereitstellen, die jedem Vektor zugeordnet sind.

Eine Verwendung von Vektormetadaten ist die Vektorfilterung. Beispielsweise können Sie beim Abfragen eines Pinecone-Index einen Filterausdruck angeben, der nur die Vektoren filtert, die mit diesen Metadaten übereinstimmen.

Solche Filterausdrücke ermöglichen es, die Vektorsuche basierend auf bestimmten Metadatenkriterien einzuschränken. Wir können nur die Ergebnisse des nächsten Nachbarn abrufen, die den angegebenen Metadatenfiltern entsprechen, indem wir die Filterausdrücke einschließen.

Diese Funktion ermöglicht präzisere und gezieltere Suchvorgänge, da wir die Metadaten nutzen können, um den Suchraum einzugrenzen und die Ergebnisse abzurufen, die einem bestimmten Kriterium entsprechen.

In diesem Tutorial lernen wir, wie man einen Vektor basierend auf bestimmten Metadaten löscht.

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 Beispielindex

    Der erste Schritt besteht darin, einen Basisindex einzurichten, den wir zu Demonstrationszwecken verwenden werden. In diesem Fall erstellen wir einen Basisindex, der die Buchinformationen speichert.

    Tannenzapfen importieren

    # Pinecone-Konfiguration initiieren

    Pinecone.init(api_key=“YOUR_API_KEY“, Environment=“YOUR_ENV“)

    # Basisindex erstellen

    pinecone.create_index(„book“, dimension=8, metric=“euklidisch“, pod_type=“p1″, pods=1, Replicas=1)

    # Mit dem Index verbinden

    index = tannenzapfen.Index(„book“)

    Der vorherige Code initialisiert die Pinecone-Instanz und erstellt einen Buchindex mit der Dimension 8.

    Einfügen von Vektoren mit Metadaten

    Sobald wir einen Index erstellt haben, können wir die Upsert-Operation verwenden, um die Vektoren mit Metadaten einzufügen, wie im folgenden Beispielcode gezeigt:

    index.upsert([
    („A“, [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1]{„genre“: „comedy“, „year“: 2020, „title“: „Book A“}),
    („B“, [0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2]{„genre“: „mystery“, „year“: 2019, „title“: „Book B“}),
    („C“, [0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3]{„genre“: „comedy“, „year“: 2019, „title“: „Book C“}),
    („D“, [0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4]{„genre“: „drama“, „title“: „Book D“}),
    („E“, [0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5]{„Genre“: „Romantik“, „Titel“: „Buch E“})
    ])

    Der vorherige Code fügt die Vektoren ein, die die Buchinformationen darstellen. Es enthält auch Metadaten wie Genre, Jahr und Titel.

    Filtern mit Metadaten

    Sobald wir die Vektoren mit Metadaten eingefügt haben, können wir diese Informationen verwenden, um die granulare Filterung durchzuführen, wie im folgenden Beispielcode gezeigt:

    index.query(
    Vektor=[0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1],
    filter={
    „genre“: {“$eq“: „comedy“},
    „Jahr“: 2020
    },

    Der vorherige Code sollte den Index abfragen und nur die Vektoren zurückgeben, bei denen das Genre Komödie und das Jahr 2020 entspricht.

    Die unterstützten Metadatenfilter sind wie folgt:

    Sie können die Metadatenfilter mit den Operatoren AND und OR kombinieren.

    • $eq – Gleich (Zahl, Zeichenfolge, boolescher Wert)
    • $ne – Ungleich (Zahl, Zeichenfolge, Boolescher Wert)
    • $gt – Größer als (Anzahl)
    • $gte – Größer oder gleich (Anzahl)
    • $lt – Kleiner als (Anzahl)
    • $lte – Kleiner oder gleich (Anzahl)
    • $in – Im Array (String oder Zahl)
    • $nin – Nicht im Array (String oder Zahl)

    Vektoren durch Metadatenfilter löschen

    Wir können auch einen Metadatenfilterausdruck verwenden, um die Vektoren zu löschen, die den angegebenen Bedingungen entsprechen.

    Ein Beispiel ist wie folgt:

    index.delete(

    filter={

    „genre“: {“$eq“: „comedy“},

    „Jahr“: 2020

    }

    )

    Wie Sie sich vorstellen können, sollte der vorherige Code den Index entfernen, dessen Metadaten mit dem angegebenen Genre und Jahr übereinstimmen.

    Abschluss

    Wir haben gelernt, wie wir in Pinecone mit Vektormetadaten arbeiten können, einschließlich der Löschung der Vektoren basierend auf einem passenden Metadatenfilter.

    Kommentar verfassen

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

    Nach oben scrollen