SiliconFLowCompatible with Milvus 2.6.x
In diesem Thema wird beschrieben, wie Sie die SiliconFLow-Einbettungsfunktionen in Milvus konfigurieren und verwenden.
Wählen Sie ein Einbettungsmodell
Milvus unterstützt die von SiliconFLow bereitgestellten Einbettungsmodelle. Nachfolgend finden Sie die derzeit verfügbaren SiliconFLow-Einbettungsmodelle zur schnellen Orientierung:
Modell Name |
Abmessungen |
Max. Token |
Beschreibung |
|---|---|---|---|
BAAI/bge-large-zh-v1.5 |
1,024 |
512 |
Ein großes chinesisches Texteinbettungsmodell, das Teil der BGE-Serie (BAAI General Embedding) ist. |
BAAI/bge-groß-de-v1.5 |
1,024 |
512 |
Ein großes englisches Texteinbettungsmodell, das Teil der BGE-Reihe (BAAI General Embedding) ist. |
netease-youdao/bce-einbettung-basis_v1 |
768 |
512 |
Ein zweisprachiges und sprachenübergreifendes Einbettungsmodell, das von NetEase Youdao entwickelt wurde. Das Modell zeigt exzellente Leistungen in chinesischen und englischen semantischen Repräsentations- und Retrievalaufgaben, wobei es besonders in sprachübergreifenden Szenarien brilliert. |
BAAI/bge-m3 |
1,024 |
8,192 |
Ein multifunktionales, mehrsprachiges, mehrgranulares Modell zur Texteinbettung. Es unterstützt drei gängige Retrievalfunktionen: Dense Retrieval, Multi-Vector Retrieval und Sparse Retrieval. |
Pro/BAAI/bge-m3 |
1,024 |
8,192 |
Ein multifunktionales, mehrsprachiges, multigranulares Texteinbettungsmodell. Es unterstützt drei gängige Retrievalfunktionen: Dense Retrieval, Multi-Vector Retrieval und Sparse Retrieval. Das Modell kann Eingaben in über 100 Sprachen verarbeiten und ist in der Lage, verschiedene Granularitäten zu verarbeiten. |
Anmeldeinformationen konfigurieren
Milvus muss Ihren SiliconFlow-API-Schlüssel kennen, bevor es Einbettungen anfordern kann. Milvus bietet zwei Methoden zur Konfiguration von Anmeldeinformationen:
Konfigurationsdatei (empfohlen): Speichern Sie den API-Schlüssel in
milvus.yaml, damit er bei jedem Neustart und jedem Knoten automatisch übernommen wird.Umgebungsvariablen: Injizieren Sie den Schlüssel zum Zeitpunkt der Bereitstellung - ideal für Docker Compose.
Entscheiden Sie sich für eine der beiden Methoden: Die Konfigurationsdatei ist auf Bare-Metal- und VM-Systemen einfacher zu verwalten, während der Weg über die Umgebungsvariablen für Container-Workflows geeignet ist.
Wenn ein API-Schlüssel für denselben Anbieter sowohl in der Konfigurationsdatei als auch in einer Umgebungsvariablen vorhanden ist, verwendet Milvus immer den Wert in milvus.yaml und ignoriert die Umgebungsvariable.
Option 1: Konfigurationsdatei
Bewahren Sie Ihre API-Schlüssel in milvus.yaml auf; Milvus liest sie beim Start und setzt jede Umgebungsvariable für denselben Anbieter außer Kraft.
**Deklarieren Sie Ihre Schlüssel unter
credential:Sie können einen oder mehrere API-Schlüssel auflisten - geben Sie jedem einen Namen, den Sie erfinden und später referenzieren werden.
# milvus.yaml credential: apikey_dev: # dev environment apikey: <YOUR_DEV_KEY> apikey_prod: # production environment apikey: <YOUR_PROD_KEY>Wenn Sie die API-Schlüssel hier angeben, bleiben sie über Neustarts hinweg bestehen und Sie können die Schlüssel einfach durch Ändern einer Bezeichnung wechseln.
Teilen Sie Milvus mit, welchen Schlüssel es für Dienstaufrufe verwenden soll
In derselben Datei weisen Sie dem SiliconFlow-Anbieter das Label zu, das er verwenden soll.
function: textEmbedding: providers: siliconflow: credential: apikey_dev # ← choose any label you defined above # url: https://api.siliconflow.cn/v1/embeddings # (optional) custom urlDies bindet einen bestimmten Schlüssel an jede Anfrage, die Milvus an den OpenAI-Embedding-Endpunkt sendet.
Option 2: Umgebungsvariable
Verwenden Sie diese Methode, wenn Sie Milvus mit Docker Compose ausführen und es vorziehen, Geheimnisse aus Dateien und Images herauszuhalten.
Milvus greift nur dann auf die Umgebungsvariable zurück, wenn unter milvus.yaml kein Schlüssel für den Provider gefunden wird.
Variable |
Erforderlich |
Beschreibung |
|---|---|---|
|
Ja |
Ihr gültiger SiliconFlow-API-Schlüssel. |
Setzen Sie in Ihrer Datei docker-compose.yaml die Umgebungsvariable MILVUSAI_SILICONFLOW_API_KEY.
# docker-compose.yaml (standalone service section)
standalone:
# ... other configurations ...
environment:
# ... other environment variables ...
# Set the environment variable pointing to the SiliconFlow API key inside the container
MILVUSAI_SILICONFLOW_API_KEY: <MILVUSAI_SILICONFLOW_API_KEY>
Der Block environment: injiziert den Schlüssel nur in den Milvus-Container und lässt Ihr Host-Betriebssystem unberührt. Weitere Informationen finden Sie unter Konfigurieren von Milvus mit Docker Compose.
Einbettungsfunktion verwenden
Sobald die Anmeldeinformationen konfiguriert sind, folgen Sie diesen Schritten, um Einbettungsfunktionen zu definieren und zu verwenden.
Schritt 1: Definieren Sie Schemafelder
Um eine Einbettungsfunktion zu verwenden, erstellen Sie eine Sammlung mit einem bestimmten Schema. Dieses Schema muss mindestens drei notwendige Felder enthalten:
Das Primärfeld, das jede Entität in einer Sammlung eindeutig identifiziert.
Ein Skalarfeld, das die einzubettenden Rohdaten speichert.
Ein Vektorfeld, das für die Speicherung von Vektoreinbettungen reserviert ist, die die Funktion für das Skalarfeld erzeugen wird.
Das folgende Beispiel definiert ein Schema mit einem Skalarfeld "document" zum Speichern von Textdaten und einem Vektorfeld "dense" zum Speichern von Einbettungen, die vom Funktionsmodul erzeugt werden. Denken Sie daran, die Vektordimension (dim) so einzustellen, dass sie der Ausgabe des von Ihnen gewählten Einbettungsmodells entspricht.
from pymilvus import MilvusClient, DataType, Function, FunctionType
# Initialize Milvus client
client = MilvusClient(
uri="http://localhost:19530",
)
# Create a new schema for the collection
schema = client.create_schema()
# Add primary field "id"
schema.add_field("id", DataType.INT64, is_primary=True, auto_id=False)
# Add scalar field "document" for storing textual data
schema.add_field("document", DataType.VARCHAR, max_length=9000)
# Add vector field "dense" for storing embeddings.
# IMPORTANT: Set dim to match the exact output dimension of the embedding model.
schema.add_field("dense", DataType.FLOAT_VECTOR, dim=1024)
Schritt 2: Einbettungsfunktion zum Schema hinzufügen
Das Function-Modul in Milvus wandelt Rohdaten, die in einem Skalarfeld gespeichert sind, automatisch in Einbettungen um und speichert sie in dem explizit definierten Vektorfeld.
Das folgende Beispiel fügt ein Funktionsmodul (siliconflow_embedding) hinzu, das das Skalarfeld "document" in Einbettungen umwandelt und die resultierenden Vektoren in dem zuvor definierten Vektorfeld "dense" speichert.
Sobald Sie Ihre Einbettungsfunktion definiert haben, fügen Sie sie zu Ihrem Sammelschema hinzu. Dies weist Milvus an, die angegebene Einbettungsfunktion zu verwenden, um Einbettungen aus Ihren Textdaten zu verarbeiten und zu speichern.
# Define embedding function specifically for embedding model provider
text_embedding_function = Function(
name="siliconflow_embedding", # Unique identifier for this embedding function
function_type=FunctionType.TEXTEMBEDDING, # Indicates a text embedding function
input_field_names=["document"], # Scalar field(s) containing text data to embed
output_field_names=["dense"], # Vector field(s) for storing embeddings
params={ # Provider-specific embedding parameters (function-level)
"provider": "siliconflow", # Must be set to "siliconflow"
"model_name": "BAAI/bge-large-en-v1.5", # Specifies the SiliconFlow embedding model to use
# Optional parameters:
# "credential": "apikey_dev", # Optional: Credential label specified in milvus.yaml
# "url": "https://api.siliconflow.cn/v1/embeddings", # Defaults to the official endpoint if omitted
}
)
# Add the configured embedding function to your existing collection schema
schema.add_function(text_embedding_function)
Nächste Schritte
Nachdem Sie die Einbettungsfunktion konfiguriert haben, finden Sie in der Funktionsübersicht weitere Anleitungen zur Indexkonfiguration, Beispiele für das Einfügen von Daten und semantische Suchvorgänge.