Brauchen wir bei einer Vektordatenbank noch eine SQL-Datenbank?

„Benötige ich zusätzlich zu einer Vektordatenbank eine reguläre SQL-Datenbank?“

Das ist eine Frage, die uns oft gestellt wird. Wenn Benutzer zusätzlich zu Vektordaten über andere Skalardateninformationen verfügen, muss ihr Unternehmen die Daten möglicherweise auf der Grundlage bestimmter Bedingungen filtern, bevor semantische Ähnlichkeitssuchen durchgeführt werden, zum Beispiel:

  • Im juristischen Bereich kann es erforderlich sein, lediglich in einer bestimmten Datenbank nach relevanten juristischen Begriffen zu suchen;

  • Im Einzelhandel müssen Sie möglicherweise nach Herrenschuhen in einer bestimmten Größe suchen;

  • Wenn Sie nach Bildern suchen, möchten Sie möglicherweise nach Postern für Filme suchen, die zwischen 2010 und 2016 veröffentlicht wurden und eine IMDB-Filmbewertung von mehr als 7,0 haben.

Darauf lautet unsere Antwort: Nein. Mit der Vektordatenbank Milvus oder dem vollständig verwalteten Milvus-Dienst – Zilliz Cloud – ist es nicht erforderlich, eine zusätzliche SQL-Datenbank zum Speichern von Skalaren zu pflegen. Mit nur einem System können Benutzer Hybridanfragen senden, die „Vektorsuche + Skalarfilterung“ implementieren, um genauere Suchergebnisse zu erhalten.

Unter anderem ermöglicht Milvus Benutzern die Durchführung einer bedingten Filterung basierend auf Skalardaten bei der Durchführung von Vektorsuchen. Die Datenattribute können jedes Feld außer Vektoren sein. Milvus erstellt einen Vektorindex für das Vektorfeld und führt eine Vektorähnlichkeitssuche durch. Gleichzeitig kann es auch eine Metadatenfilterung der Suchergebnisse anhand von Ausdrücken durchführen. Geben Sie bei der Suche einfach einen Filterausdruck ein und Milvus erledigt beides automatisch für Sie.

Dieses Tutorial verwendet Zilliz Cloud Pipelines – die integrierte Funktionalität von Zilliz Cloud zum Kodieren unstrukturierter Daten in Einbettungsvektoren und unterstützt gleichzeitig die direkte Suche von Vektoren mit Text und Filterausdrücken. Wir zeigen, wie Sie mithilfe der Skalarfilterung nur Dokumentfragmente abrufen, die bestimmten Kriterien entsprechen, z. B. einer bestimmten Quell-URL oder einem bestimmten Dateinamen. Sie können ähnliche Ideen auch verwenden, um Dokumente mit bestimmten Tags wie Veröffentlichungsjahr, Versionsnummer usw. abzurufen.

01. Sammlung und Pipelines erstellen

Für dieses Tutorial ist die kostenlose Version von Zilliz Cloud (Überseeversion) erforderlich. Zilliz Cloud ist ein vollständig verwalteter Milvus-Dienst, der die Datenbank des Benutzers auf einem serverlosen Cloud-Server bereitstellt. Wir können die Zilliz Cloud-Vektordatenbank jedoch weiterhin lokal verwenden, indem wir die PyMiluvs-API-Schnittstelle aufrufen. Der folgende zum Testen verwendete Text stammt aus der PyMilvus-Dokumentation

  1. Öffnen Sie https://cloud.zilliz.com/ und erstellen Sie einen „Starter“-Versionscluster.

  1. Fügen Sie den Sammlungsnamen hinzu und klicken Sie auf „Sammlung und Cluster erstellen“.

Beim Erstellen eines Zilliz Cloud-Clusters wird standardmäßig 1 Sammlung erstellt, die in diesem Tutorial nicht verwendet wird. Wenn wir später Zilliz Cloud Pipelines erstellen, wird automatisch eine weitere Sammlung erstellt. Beachten Sie, dass die beiden Sammlungen nicht identisch sind.

  1. Klicken Sie in der linken Navigationsleiste auf Pipelines und folgen Sie den Anweisungen der Benutzeroberfläche, um Pipelines zu erstellen und Daten hochzuladen:

a. Bitte wählen Sie zunächst die Erstellung einer „Ingestion Pipeline“ aus.

b. Wählen Sie den soeben erstellten Serverless-Cluster aus, geben Sie die Namen der Sammlung bzw. Pipeline ein und klicken Sie auf „Funktion hinzufügen“.

c. Wählen Sie die Funktion INDEX_DOC aus, geben Sie den Funktionsnamen ein, belassen Sie andere Parameterwerte als Standard und klicken Sie auf „Hinzufügen“. Diese Funktion zerlegt das Dokument in Vektoren.

d. (Optional) Klicken Sie erneut auf „Funktion hinzufügen“.

e. (Optional) Wählen Sie die Funktion PRESERVE aus, benennen Sie sie und klicken Sie auf „Hinzufügen“. Mit dieser Funktion werden die Tag-Informationen des Dokuments gespeichert.

  1. Klicken Sie auf „Ingestion-Pipeline erstellen“. Jetzt haben wir die Erstellung der Ingestion Pipeline und Collection abgeschlossen.

  1. Klicken Sie auf „Lösch- und Suchpipeline erstellen“.

  2. Rufen Sie die Seite „Pipelines“ auf und klicken Sie auf die Schaltfläche „▶️“, um die Aufnahmepipeline auszuführen.

  1. Ingestion Pipeline unterstützt das Hochladen Ihrer Dateien auf Objektspeicher (z. B. AWS S3 und Google Cloud Storage). In diesem Beispiel laden wir die Daten auf AWS S3 hoch. Sobald der Upload abgeschlossen ist, klicken Sie auf „Über vorsignierte URL teilen“. Kopieren Sie den Freigabelink (vorsignierte URL). Wenn kein Objektspeicher vorhanden ist, können Sie den von uns bereitgestellten Testdatei-Link https://publicdataset.zillizcloud.com/milvus_doc.md als vorsignierte URL verwenden.

  1. Fügen Sie die vorsignierte URL in den Code ein und klicken Sie auf Ausführen. Durch diesen Schritt wird die Datei fragmentiert, um Vektoren zu extrahieren und sie in die Vektordatenbank-Sammlung zu importieren.

  1. Rufen Sie die Sammlungsseite auf und prüfen Sie, ob Sammlung und Schema korrekt sind. Zu diesem Zeitpunkt sollten die Vektoren für die Dokumentfragmente bereits in der Datenvorschau angezeigt werden.

Anschließend können die Daten auf der Playground-Schnittstelle oder durch Aufruf der API abgefragt werden.

02. Verwenden Sie die Skalarfilterung, um Vektoren abzurufen, die mit bestimmten Beschriftungen übereinstimmen

  1. Suchen Sie in der Pipeline-Liste nach „Suchpipeline“ und klicken Sie rechts auf die Schaltfläche „▶️“, um die Suchpipeline auszuführen.

  2. Geben Sie in der Anfrage eine Frage ein und klicken Sie auf Ausführen.

  1. Bearbeiten Sie „Filter“. Bitte verwenden Sie boolesche Ausdrücke. Nachdem Sie auf „Ausführen“ geklickt haben, können Sie sehen, dass Zilliz Cloud die Suchergebnisse basierend auf den von Ihnen eingegebenen Bedingungen gefiltert hat.

So einfach ist die Metadatenfilterung mit Zilliz Cloud Pipelines! Mithilfe boolescher Ausdrücke können Sie alle Skalarfelder außer Vektorfeldern bedingt filtern .

03. Suche über die API-Schnittstelle

In ähnlicher Weise können wir auch durch Aufrufen der API-Schnittstelle suchen. Bei Verwendung der API muss der Benutzer die folgenden zwei Punkte angeben:

  • Zilliz API-Token

  • Pipeline-ID

Wir können das API-Token über die Cluster-Detailseite erhalten.

Um die Pipeline-ID zu erhalten, suchen Sie zunächst auf der Listenseite „Pipelines“ nach der Suchpipeline und kopieren Sie dann die Pipeline-ID in die Spalte „Pipeline-ID“. Fügen Sie beim Aufruf der API-Schnittstelle die Pipeline-ID in die URL ein.


import requests, json
url = "https://controller.api.gcp-us-west1.zillizcloud.com/v1/pipelines/pipe-xxxx/run"
headers = {
    "Content-Type": "application/json",
    "Authorization": f"Bearer {TOKEN}",
}
data = {
    "data": {
        "query_text": SAMPLE_QUESTION
    },
    "params": {
        "limit": TOP_K,
        "offset": 0,
        # Any of these fields can be used in filter expression.
        "outputFields": ["chunk_text", "chunk_id", "doc_name", "source"],
        "filter": "doc_name == 'param.html'"
    }
}

# Send the POST request
response = requests.post(url, headers=headers, json=data)

So einfach sind Metadatenfiltersuchen mit der API! Wenn Sie mehr über die Verwendung von Zilliz Cloud Pipelines erfahren möchten, können Sie im Notebook nachlesen , wie Sie mit Pipelines einen RAG-Q&A-Roboter mit Tag-Filterfunktion erstellen können. Sie können es gerne ausprobieren.

Broadcom kündigte die Beendigung des bestehenden VMware-Partnerprogramms Deepin-IDE-Versionsupdate, ein neues Erscheinungsbild, an. WAVE SUMMIT feiert seine 10. Ausgabe. Wen Xinyiyan wird die neueste Enthüllung haben! Zhou Hongyi: Der gebürtige Hongmeng wird auf jeden Fall Erfolg haben. Der komplette Quellcode von GTA 5 wurde öffentlich durchgesickert. Linus: Ich werde den Code an Heiligabend nicht lesen. Ich werde eine neue Version des Java-Tool-Sets Hutool-5.8.24 veröffentlichen nächstes Jahr. Lasst uns gemeinsam über Furion klagen. Kommerzielle Erkundung: Das Boot ist vorbei. Wan Zhongshan, v4.9.1.15 Apple veröffentlicht Open-Source-Multimodal-Großsprachenmodell Ferret Yakult Company bestätigt, dass 95 G-Daten durchgesickert sind
{{o.name}}
{{m.name}}

Je suppose que tu aimes

Origine my.oschina.net/u/4209276/blog/10456214
conseillé
Classement