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 möglicherweise semantische Ähnlichkeitssuchen durchführen (https://zilliz.com.cn/glossary/%E8%AF%AD%E4%B9%89 %E6). %90%9C%E7%B4%A2-%EF%BC%88semantic-search%EF%BC%89) Filtern Sie die Daten zunächst nach bestimmten Bedingungen, 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 (https://zilliz.com/what-is-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 (https://zilliz.com/zilliz-cloud-pipelines) – die integrierte Funktion von Zilliz Cloud zum Kodieren unstrukturierter Daten in Einbettungsvektoren und unterstützt gleichzeitig direkten Text und Filterausdrücke Suchvektor. 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.


Zilliz Cloud Pipelines-Demo


01.

Erstellen Sie Sammlungen und Pipelines


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.



2. 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.


3. 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.


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


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


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



7. 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.



8. 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.



9. 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.

Rufen Sie Vektoren ab, die einer bestimmten Bezeichnung entsprechen, mit Skalarfilterung


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.



3. Bearbeiten Sie die „Filterbedingungen“. 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! Sie können eine bedingte Filterung für alle Skalarfelder außer Vektorfeldern über boolesche Ausdrücke durchführen (https://zilliz.com/zilliz-cloud-free-tier).


03.

Suche über 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)

用 API 进行元数据过滤搜索就是这么简单!如果大家有兴趣了解更多 Zilliz Cloud Pipelines 的使用方法,可以参考 Notebook(https://github.com/milvus-io/bootcamp/blob/master/bootcamp/RAG/zilliz_pipeline_rag_advanced.ipynb) 用 Pipelines 搭建一个有标签过滤功能的 RAG 问答机器人,欢迎上手尝试。


本文作者

Christy Bergman
Zilliz 开发者布道师

推荐阅读




本文分享自微信公众号 - ZILLIZ(Zilliztech)。
如有侵权,请联系 [email protected] 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

B站崩了两次、腾讯“3.29”一级事故……盘点 2023 十大宕机事故“冥场面” Vue 3.4 “灌篮高手”发布 MySQL 5.7、魔趣、李跳跳……盘点 2023“停更”的(开源)项目和网站 回顾 30 年前的 IDE:只有 TUI、背景颜色亮瞎眼…… Vim 9.1 发布,谨献给 Bram Moolenaar Redis 之父“锐评” LLM 编程:全知全能 && Stupid “后开源”时代已来:许可证失效、无法为普罗大众服务 联通宽带突然限制上传速度,遭大量用户投诉 Windows 主管承诺改进:让开始菜单再次伟大 Pascal 之父 Niklaus Wirth 逝世
{{o.name}}
{{m.name}}

Supongo que te gusta

Origin my.oschina.net/u/4209276/blog/10555421
Recomendado
Clasificación