Integrieren Sie Milvus mit MindsDB
MindsDB ist ein leistungsstarkes Tool für die Integration von KI-Anwendungen mit verschiedenen Unternehmensdatenquellen. Es fungiert als föderierte Abfrage-Engine, die Ordnung in den Datenwust bringt und Abfragen über strukturierte und unstrukturierte Daten präzise beantwortet. Ganz gleich, ob Ihre Daten über SaaS-Anwendungen, Datenbanken oder Data Warehouses verstreut sind, MindsDB kann sie alle mit Standard-SQL verbinden und abfragen. Es verfügt über hochmoderne autonome RAG-Systeme durch Knowledge Bases, unterstützt Hunderte von Datenquellen und bietet flexible Bereitstellungsoptionen von der lokalen Entwicklung bis zu Cloud-Umgebungen.
Dieses Tutorial demonstriert die Integration von Milvus mit MindsDB, so dass Sie die KI-Funktionen von MindsDB mit der Vektordatenbankfunktionalität von Milvus durch SQL-ähnliche Operationen zur Verwaltung und Abfrage von Vektoreinbettungen nutzen können.
Dieses Tutorial bezieht sich hauptsächlich auf die offizielle Dokumentation des MindsDB Milvus Handlers. Wenn Sie veraltete Teile in diesem Tutorial finden, können Sie sich vorrangig an der offiziellen Dokumentation orientieren und ein Issue für uns erstellen.
MindsDB installieren
Bevor wir beginnen, installieren Sie MindsDB lokal über Docker oder Docker Desktop.
Bevor Sie fortfahren, stellen Sie sicher, dass Sie ein solides Verständnis der grundlegenden Konzepte und Abläufe von MindsDB und Milvus haben.
Einführung in die Argumente
Die erforderlichen Argumente zum Herstellen einer Verbindung sind:
uriuri für die Milvus-Datenbank, kann auf eine lokale ".db"-Datei oder einen Docker- oder Cloud-Dienst gesetzt werdentoken: Token zur Unterstützung von Docker oder Cloud Service entsprechend der uri-Option
Die optionalen Argumente zum Aufbau einer Verbindung sind:
Diese werden für SELECT Abfragen verwendet:
search_default_limit: Standard-Limit, das in Select-Anweisungen übergeben wird (default=100)search_metric_typeMetrik-Typ, der für die Suche verwendet wird (Standard="L2")search_ignore_growingob wachsende Segmente bei der Ähnlichkeitssuche ignoriert werden sollen (default=False)search_params: spezifisch für diesearch_metric_type(default={"nprobe": 10})
Diese werden für CREATE Abfragen verwendet:
create_auto_id: ob die ID automatisch generiert werden soll, wenn Datensätze ohne ID eingefügt werden (default=False)create_id_max_lenMaximale Länge des id-Feldes bei der Erstellung einer Tabelle (default=64)create_embedding_dimEinbettungsdimension für die Tabellenerstellung (default=8)create_dynamic_fieldob die erstellten Tabellen dynamische Felder haben oder nicht (default=True)create_content_max_lenMaximale Länge der Inhaltsspalte (default=200)create_content_default_valueStandardwert der Inhaltsspalte (default='')create_schema_descriptionBeschreibung der erstellten Schemata (default='')create_aliasAlias des erstellten Schemas (default='default')create_index_paramsIndex: Parameter des auf der Einbettungsspalte erstellten Index (default={})create_index_metric_typeMetrik, die zur Erstellung des Index verwendet wird (default='L2')create_index_typeTyp des Indexes (default='AUTOINDEX')
Verwendung
Bevor Sie fortfahren, vergewissern Sie sich, dass die Version von pymilvus mit dieser angehefteten Version übereinstimmt. Wenn Sie Probleme mit der Versionskompatibilität feststellen, können Sie Ihre Version von pymilvus zurücksetzen oder sie in dieser Anforderungsdatei anpassen.
Verbindung erstellen
Um diesen Handler zu nutzen und eine Verbindung zu einem Milvus-Server in MindsDB herzustellen, kann die folgende Syntax verwendet werden:
CREATE DATABASE milvus_datasource
WITH
ENGINE = 'milvus',
PARAMETERS = {
"uri": "./milvus_local.db",
"token": "",
"create_embedding_dim": 3,
"create_auto_id": true
};
- Wenn Sie nur eine lokale Vektordatenbank für kleine Datenmengen oder Prototypen benötigen, ist die Angabe der Uri als lokale Datei, z. B.
./milvus.db, die bequemste Methode, da sie automatisch Milvus Lite verwendet, um alle Daten in dieser Datei zu speichern.- Für größere Datenmengen und Datenverkehr in der Produktion können Sie einen Milvus-Server auf Docker oder Kubernetes einrichten. Bei dieser Einrichtung verwenden Sie bitte die Serveradresse und den Port als
uri, z. B.http://localhost:19530. Wenn Sie die Authentifizierungsfunktion auf Milvus aktivieren, stellen Sietokenals"<your_username>:<your_password>"ein, andernfalls ist es nicht notwendig, das Token einzustellen.- Sie können auch vollständig verwaltetes Milvus auf Zilliz Cloud verwenden. Setzen Sie einfach die
uriundtokenauf den öffentlichen Endpunkt und den API-Schlüssel Ihrer Zilliz Cloud-Instanz.
Trennen der Verbindung
Um die Verbindung zu trennen, verwenden Sie diesen Befehl
DROP DATABASE milvus_datasource;
Tabellen erstellen
Um Daten aus einer bereits existierenden Tabelle einzufügen, verwenden Sie CREATE
CREATE TABLE milvus_datasource.test
(SELECT * FROM sqlitedb.test);
Sammlungen löschen
Das Verwerfen einer Sammlung wird nicht unterstützt.
Abfragen und Auswählen
Um eine Datenbank mit einem Suchvektor abzufragen, können Sie search_vector in der WHERE Klausel verwenden.
Warnungen:
- Wenn Sie
LIMITweglassen, wirdsearch_default_limitverwendet, da Milvus dies erfordert. - Die Metadaten-Spalte wird nicht unterstützt, aber wenn die Sammlung ein dynamisches Schema hat, können Sie sie wie gewohnt abfragen, siehe das folgende Beispiel
- Dynamische Felder können nicht angezeigt werden, können aber abgefragt werden
SELECT * from milvus_datasource.test
WHERE search_vector = '[3.0, 1.0, 2.0, 4.5]'
LIMIT 10;
Wenn Sie search_vector weglassen, wird dies zu einer einfachen Suche und LIMIT oder search_default_limit Menge der Einträge in der Sammlung werden zurückgegeben
SELECT * from milvus_datasource.test
Sie können die WHERE Klausel für dynamische Felder wie normales SQL verwenden.
SELECT * FROM milvus_datasource.createtest
WHERE category = "science";
Löschen von Einträgen
Sie können Einträge mit DELETE genau wie in SQL löschen.
Warnungen:
- Milvus unterstützt nur das Löschen von Entitäten mit eindeutig spezifizierten Primärschlüsseln
- Sie können nur den Operator
INverwenden.
DELETE FROM milvus_datasource.test
WHERE id IN (1, 2, 3);
Einfügen von Datensätzen
Sie können auch einzelne Zeilen wie folgt einfügen:
INSERT INTO milvus_test.testable (id,content,metadata,embeddings)
VALUES ("id3", 'this is a test', '{"test": "test"}', '[1.0, 8.0, 9.0]');
Aktualisieren
Das Aktualisieren von Datensätzen wird von der Milvus-API nicht unterstützt. Sie können versuchen, eine Kombination aus DELETE und INSERT
Weitere Details und Beispiele finden Sie in der offiziellen MindsDB-Dokumentation.