Milvus verbinden
Milvus ist eine externe Vektordatenbank für die Vektorsuche in großem Umfang. Sie eignet sich, wenn Ihre Organisation Milvus bereits betreibt oder wenn die Suchdaten so umfangreich sind, dass sie in einem separaten Cluster verwaltet werden sollen.
Auch bei Verwendung von Milvus bleiben die Originaldateien und Dokumenttexte unverändert in SpaceBuilder. In Milvus werden nur die für die Suche benötigten Vektoren und ein Minimum an Informationen gespeichert.
Bevor Sie beginnen
- Erforderliche Berechtigung: Workspace-Administrator sowie die Berechtigung, Milvus-Collections zu verwalten
- Der SpaceBuilder-Server muss den Milvus-Endpunkt erreichen können.
- Prüfen Sie die Ausgabedimension des Einbettungsmodells, das Sie verwenden möchten.
Milvus installieren
SpaceBuilder verwendet die REST API (v2, Standardport 19530) von Milvus 2.4 oder höher. Da alle Anfragen an Pfade unter /v2/vectordb/... gesendet werden, funktioniert es nicht mit Milvus 2.3 oder älter. Sie benötigen ein Milvus, das vom SpaceBuilder-Server aus über diesen Port erreichbar ist. Wenn Sie bereits ein Milvus betreiben, überspringen Sie diesen Abschnitt und fahren Sie mit Collection vorab erstellen fort.
Milvus gibt es in zwei Varianten: Standalone für einen einzelnen Server und Distributed für große Cluster. Für die Verbindung mit SpaceBuilder reicht Standalone aus.
Vorbereitung
| Element | Inhalt |
|---|---|
| Server | Auf einem Linux-Server muss Docker installiert sein. Da Milvus ressourcenintensiver als Qdrant ist, empfehlen wir, es auf einem anderen Server als SpaceBuilder zu betreiben. |
| Arbeitsspeicher | Mindestens 8 GB. Bei mehr als 1 Million Vektoren werden 16 GB oder mehr empfohlen. |
| Festplatte | Da Daten und Protokolle gemeinsam gespeichert werden, planen Sie großzügig. Eine SSD wird empfohlen. |
| Ports | 19530 (API). SpaceBuilder verwendet nur diesen Port. 9091 dient der Statusprüfung und der Verwaltungsoberfläche. |
Ausführen
Mit dem von Milvus bereitgestellten Installationsskript läuft Milvus in einem einzigen Container, der alle benötigten Komponenten enthält.
mkdir -p ~/milvus && cd ~/milvus
curl -sfL https://raw.githubusercontent.com/milvus-io/milvus/master/scripts/standalone_embed.sh -o standalone_embed.sh
bash standalone_embed.sh start
- Die Daten werden unter
volumes/milvusim Ordner gespeichert, in dem Sie das Skript ausgeführt haben. Wenn Sie diesen Ordner löschen, gehen die Daten verloren. - Zum Anhalten oder Neustarten führen Sie im selben Ordner
bash standalone_embed.sh stopbzw.bash standalone_embed.sh startaus. - Um Einstellungen zu ändern, bearbeiten Sie die im selben Ordner erzeugte Datei
user.yamlund starten Sie neu.
Authentifizierung aktivieren
Wenn Sie Milvus auf einem anderen Server als SpaceBuilder betreiben oder in einem Netzwerk, auf das mehrere Personen zugreifen können, aktivieren Sie die Authentifizierung. Fügen Sie Folgendes in user.yaml ein und starten Sie neu.
common:
security:
authorizationEnabled: true
Nach dem Aktivieren der Authentifizierung können Sie sich mit dem Standardkonto root und dem Passwort Milvus anmelden. Ändern Sie unbedingt das Standardpasswort, und wir empfehlen, ein eigenes Konto nur für SpaceBuilder anzulegen. In den SpaceBuilder-Verbindungseinstellungen können Sie entweder einen API-Schlüssel (Token im Format Benutzername:Passwort) oder Benutzername und Passwort eingeben. Wenn Sie beides eingeben, wird der API-Schlüssel verwendet.
Installation prüfen
curl http://localhost:9091/healthz
Wenn OK zurückkommt, ist alles in Ordnung. Wenn Sie im Browser http://<Milvus-Serveradresse>:9091/webui/ öffnen, erscheint eine Verwaltungsoberfläche, in der Sie Collections und Status einsehen können (ab Milvus 2.5).
Betriebstipps
- Firewall: Beschränken Sie den Zugriff auf Port
19530auf den SpaceBuilder-Server. Öffnen Sie9091nicht nach außen. - Sicherung: Vektoren sind abgeleitete Daten, die sich aus den Originalen neu erzeugen lassen. Auch ohne separate Sicherung können Sie die Vektordatenbank mit
Vorhandene Einbettungen synchronisierenin SpaceBuilder neu füllen. - Aktualisierung: Folgen Sie beim Aktualisieren der Milvus-Version der offiziellen Upgrade-Anleitung von Milvus. Bei einem Wechsel der Minor-Version kann eine Datenmigration erforderlich sein.
Collection vorab erstellen
Anders als bei Qdrant werden Milvus-Collections nicht automatisch erstellt. Bevor Sie die Verbindungseinstellungen speichern, müssen Sie die Collection mit der folgenden Struktur erstellen.
| Feld | Typ | Beschreibung |
|---|---|---|
id | VARCHAR(64), Primärschlüssel | Vektor-ID |
instance_namespace | VARCHAR(64) | Instanz-Isolationsschlüssel. Für jede Instanz (einen separat installierten und betriebenen SpaceBuilder) ein anderer Wert. |
generation_id | VARCHAR(64) | Indexierungsgeneration |
chunk_id | INT64 | Nummer des Dokumentabschnitts |
space_flag | VARCHAR(16) | Teambereich (team) oder Persönlicher Bereich (client) |
owner_id | VARCHAR(64) | Eigentümer |
source_path | VARCHAR | Pfad der Originaldatei |
text | VARCHAR | Dokumentabschnitt, der in den Suchergebnissen angezeigt wird |
vector | FLOAT_VECTOR | Einbettungsvektor. Die Dimension muss der des Einbettungsmodells entsprechen. |
- Die Dimension (
dim) des Feldsvectormuss der in SpaceBuilder eingestellten Vektordimension entsprechen. (Fürbge-m3:1024) - Die Distanzmetrik (metric) des Index auf dem Feld
vectormussCOSINEsein. - SpaceBuilder kürzt
textbeim Speichern auf 4.096 Zeichen. Da in UTF-8 koreanische Zeichen 3 Byte und Emojis 4 Byte belegen, bleibt mit einermax_lengthvon mindestens16384(4.096 Zeichen × 4 Byte) kein Dokumentabschnitt an der Längenbeschränkung hängen. - Da
source_pathlange Dateipfade mit koreanischen Zeichen enthalten kann, setzen Sie den Wert großzügig auf etwa4096.
Im Folgenden der Befehl, mit dem Sie die Collection über die Milvus REST API (v2) erstellen. Passen Sie <Milvus-Serveradresse>, die Authentifizierungsdaten, den Collection-Namen und den Wert von dim an Ihre Umgebung an.
- Geben Sie bei
Authorization<Benutzername>:<Passwort>ein oder an dieser Stelle einen API-Schlüssel (Token). - Wenn Sie die Authentifizierung nicht aktiviert haben, entfernen Sie die Zeile
Authorization.
curl -X POST "http://<Milvus-Serveradresse>:19530/v2/vectordb/collections/create" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <Benutzername>:<Passwort>" \
-d '{
"collectionName": "setfn_knowledge_example",
"schema": {
"autoId": false,
"enableDynamicField": false,
"fields": [
{ "fieldName": "id", "dataType": "VarChar", "isPrimary": true, "elementTypeParams": { "max_length": 64 } },
{ "fieldName": "instance_namespace", "dataType": "VarChar", "elementTypeParams": { "max_length": 64 } },
{ "fieldName": "generation_id", "dataType": "VarChar", "elementTypeParams": { "max_length": 64 } },
{ "fieldName": "chunk_id", "dataType": "Int64" },
{ "fieldName": "space_flag", "dataType": "VarChar", "elementTypeParams": { "max_length": 16 } },
{ "fieldName": "owner_id", "dataType": "VarChar", "elementTypeParams": { "max_length": 64 } },
{ "fieldName": "source_path", "dataType": "VarChar", "elementTypeParams": { "max_length": 4096 } },
{ "fieldName": "text", "dataType": "VarChar", "elementTypeParams": { "max_length": 16384 } },
{ "fieldName": "vector", "dataType": "FloatVector", "elementTypeParams": { "dim": 1024 } }
]
},
"indexParams": [
{ "fieldName": "vector", "indexName": "vector", "metricType": "COSINE", "params": { "index_type": "AUTOINDEX" } }
]
}'
Wenn eine Antwort mit "code":0 zurückkommt, wurde die Collection erstellt.
Verbindung einrichten
Geben Sie auf der Seite Wissensspeicher unter Vektordatenbank einrichten Folgendes ein und speichern Sie.
| Element | Eingabewert | Beschreibung |
|---|---|---|
| Treiber | Milvus | Verwendet einen externen Milvus-Server. |
| Endpunkt | http://<Milvus-Serveradresse>:19530 | Wenn Sie http:// weglassen, wird es automatisch ergänzt. Bleibt das Feld leer, wird http://localhost:19530 verwendet. |
| Collection | Name der vorab erstellten Collection | Für jede Instanz wird ein eigener Name empfohlen. Der empfohlene Name für diese Instanz (setfn_knowledge_...) wird auf dem Bildschirm angezeigt. |
| API-Schlüssel | Milvus-Token | Nur eingeben, wenn Sie sich bei einem Milvus mit aktivierter Authentifizierung per Token anmelden. Der gespeicherte Wert wird maskiert angezeigt und bleibt erhalten, solange Sie ihn nicht ändern. Wenn Sie das Feld leeren und speichern, wird er gelöscht. |
| Benutzername / Passwort | Milvus-Konto | Eingeben, wenn Sie die Kontoauthentifizierung verwenden. Geben Sie das Passwort nur ein, wenn Sie es ändern möchten; bleibt das Feld leer, wird der gespeicherte Wert beibehalten. |
| Vektordimension | Derselbe Wert wie dim der Collection | Bei Abweichung wird die Verbindung zwar hergestellt, aber die Indexierung schlägt beim Speichern fehl. |
Da Milvus ein dienstbasierter Speicher ist, wird das Eingabefeld Datenpfad nicht angezeigt. Nach dem Speichern prüft der Indexierungsplaner die neuen Einstellungen und startet bei Bedarf automatisch eine vollständige Neuindexierung aller Originale.
Verbindung prüfen
Den Status prüfen Sie in der Vektordatenbank-Übersicht.
| Element | Im Normalzustand |
|---|---|
| Verbindungsstatus | Verbunden |
| Collection-Konfiguration | OK (mit den aktuellen Einstellungen kompatibel) |
| Gespeicherte Vektoren | Steigt mit fortschreitender Indexierung. Es werden nur die von dieser Instanz gespeicherten Vektoren gezählt. |
| Anzahl der Collections | Gesamtzahl der Collections auf dem Milvus-Server. |
Wenn der Zustand nicht normal ist, prüfen Sie Folgendes.
| Anzeige | Ursache und Maßnahme |
|---|---|
Collection nicht gefunden · Erstellen Sie sie zuerst in Milvus | Die Collection wurde noch nicht erstellt oder der Name weicht ab. Erstellen Sie die Collection mit der obigen Struktur oder passen Sie den Namen an. |
Die Collection-Konfiguration muss geprüft werden + collection dimension is ..., expected ... | Die Dimension der Collection weicht von der eingestellten Vektordimension ab. Erstellen Sie eine neue Collection mit passender Dimension und geben Sie diese an. |
Die Collection-Konfiguration muss geprüft werden + collection metric must be COSINE | Die Metrik des Index vector ist nicht COSINE. Erstellen Sie den Index mit COSINE neu. |