Zum Inhalt springen

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

ElementInhalt
ServerAuf einem Linux-Server muss Docker installiert sein. Da Milvus ressourcenintensiver als Qdrant ist, empfehlen wir, es auf einem anderen Server als SpaceBuilder zu betreiben.
ArbeitsspeicherMindestens 8 GB. Bei mehr als 1 Million Vektoren werden 16 GB oder mehr empfohlen.
FestplatteDa Daten und Protokolle gemeinsam gespeichert werden, planen Sie großzügig. Eine SSD wird empfohlen.
Ports19530 (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/milvus im 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 stop bzw. bash standalone_embed.sh start aus.
  • Um Einstellungen zu ändern, bearbeiten Sie die im selben Ordner erzeugte Datei user.yaml und 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 19530 auf den SpaceBuilder-Server. Öffnen Sie 9091 nicht 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 synchronisieren in 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.

FeldTypBeschreibung
idVARCHAR(64), PrimärschlüsselVektor-ID
instance_namespaceVARCHAR(64)Instanz-Isolationsschlüssel. Für jede Instanz (einen separat installierten und betriebenen SpaceBuilder) ein anderer Wert.
generation_idVARCHAR(64)Indexierungsgeneration
chunk_idINT64Nummer des Dokumentabschnitts
space_flagVARCHAR(16)Teambereich (team) oder Persönlicher Bereich (client)
owner_idVARCHAR(64)Eigentümer
source_pathVARCHARPfad der Originaldatei
textVARCHARDokumentabschnitt, der in den Suchergebnissen angezeigt wird
vectorFLOAT_VECTOREinbettungsvektor. Die Dimension muss der des Einbettungsmodells entsprechen.
  • Die Dimension (dim) des Felds vector muss der in SpaceBuilder eingestellten Vektordimension entsprechen. (Für bge-m3: 1024)
  • Die Distanzmetrik (metric) des Index auf dem Feld vector muss COSINE sein.
  • SpaceBuilder kürzt text beim Speichern auf 4.096 Zeichen. Da in UTF-8 koreanische Zeichen 3 Byte und Emojis 4 Byte belegen, bleibt mit einer max_length von mindestens 16384 (4.096 Zeichen × 4 Byte) kein Dokumentabschnitt an der Längenbeschränkung hängen.
  • Da source_path lange Dateipfade mit koreanischen Zeichen enthalten kann, setzen Sie den Wert großzügig auf etwa 4096.

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.

ElementEingabewertBeschreibung
TreiberMilvusVerwendet einen externen Milvus-Server.
Endpunkthttp://<Milvus-Serveradresse>:19530Wenn Sie http:// weglassen, wird es automatisch ergänzt. Bleibt das Feld leer, wird http://localhost:19530 verwendet.
CollectionName der vorab erstellten CollectionFür jede Instanz wird ein eigener Name empfohlen. Der empfohlene Name für diese Instanz (setfn_knowledge_...) wird auf dem Bildschirm angezeigt.
API-SchlüsselMilvus-TokenNur 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 / PasswortMilvus-KontoEingeben, 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.
VektordimensionDerselbe Wert wie dim der CollectionBei 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.

ElementIm Normalzustand
VerbindungsstatusVerbunden
Collection-KonfigurationOK (mit den aktuellen Einstellungen kompatibel)
Gespeicherte VektorenSteigt mit fortschreitender Indexierung. Es werden nur die von dieser Instanz gespeicherten Vektoren gezählt.
Anzahl der CollectionsGesamtzahl der Collections auf dem Milvus-Server.

Wenn der Zustand nicht normal ist, prüfen Sie Folgendes.

AnzeigeUrsache und Maßnahme
Collection nicht gefunden · Erstellen Sie sie zuerst in MilvusDie 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 COSINEDie Metrik des Index vector ist nicht COSINE. Erstellen Sie den Index mit COSINE neu.

Verwandte Dokumente