Gemini
Milvus ist mit den Gemini-Modellen über die Klasse GeminiEmbeddingFunction integriert. Diese Klasse bietet Methoden zur Kodierung von Dokumenten und Abfragen unter Verwendung der trainierten Gemini-Modelle und gibt die Einbettungen als dichte Vektoren zurück, die mit der Milvus-Indizierung kompatibel sind. Um diese Funktionalität zu nutzen, erhalten Sie einen API-Schlüssel von Gemini, indem Sie ein Konto auf deren Plattform erstellen.
Um diese Funktion zu nutzen, installieren Sie die erforderlichen Abhängigkeiten:
pip install --upgrade pymilvus
pip install "pymilvus[model]"
Dann instanziieren Sie die GeminiEmbeddingFunction:
from pymilvus import model
gemini_ef = model.dense.GeminiEmbeddingFunction(
model_name='gemini-embedding-exp-03-07', # Specify the model name
api_key='YOUR_API_KEY', # Provide your OpenAI API key
)
Parameter:
model_name(String)
Der Name des Gemini-Modells, das für die Kodierung verwendet werden soll. Gültige Optionen sind gemini-embedding-exp-03-07(Standard), models/embedding-001 und models/text-embedding-004.
api_key(Zeichenfolge)
Der API-Schlüssel für den Zugriff auf die Gemini-API.
config(types.EmbedContentConfig) Optionale Konfiguration für das Einbettungsmodell.
- Die output_dimensionality kann für die Anzahl der resultierenden Ausgabeeinbettungen angegeben werden.
- Der task_type kann angegeben werden, um optimierte Einbettungen für bestimmte Aufgaben zu generieren, wodurch Zeit und Kosten gespart und die Leistung verbessert werden kann. Wird nur im Modell gemini-embedding-exp-03-07 unterstützt.
| Modell Name | Abmessungen |
|---|---|
| gemini-embedding-exp-03-07 | 3072(default),1536,768 |
| models/einbettung-001 | 768 |
| models/text-einbettung-004 | 768 |
| Aufgabe Typ | Beschreibung |
|---|---|
| SEMANTISCHE_ÄHNLICHKEIT | Dient der Erzeugung von Einbettungen, die für die Bewertung der Textähnlichkeit optimiert sind. |
| KLASSIFIZIERUNG | Dient der Erzeugung von Einbettungen, die für die Klassifizierung von Texten anhand vorgegebener Etiketten optimiert sind. |
| CLUSTERUNG | Dient zur Erzeugung von Einbettungen, die für das Clustern von Texten auf der Grundlage ihrer Ähnlichkeiten optimiert sind. |
| RETRIEVAL_DOCUMENT, RETRIEVAL_QUERY, QUESTION_ANSWERING und FACT_VERIFICATION | Dienen der Erzeugung von Einbettungen, die für die Dokumentensuche oder das Information Retrieval optimiert sind. |
| CODE_RETRIEVAL_QUERY | Dient zum Abrufen eines Codeblocks auf der Grundlage einer natürlichsprachlichen Abfrage, z. B. zum Sortieren eines Arrays oder zum Umkehren einer verknüpften Liste. Die Einbettungen der Codeblöcke werden mit RETRIEVAL_DOCUMENT berechnet. |
Um Einbettungen für Dokumente zu erstellen, verwenden Sie die Methode encode_documents():
docs = [
"Artificial intelligence was founded as an academic discipline in 1956.",
"Alan Turing was the first person to conduct substantial research in AI.",
"Born in Maida Vale, London, Turing was raised in southern England.",
]
docs_embeddings = gemini_ef.encode_documents(docs)
# Print embeddings
print("Embeddings:", docs_embeddings)
# Print dimension and shape of embeddings
print("Dim:", gemini_ef.dim, docs_embeddings[0].shape)
Die erwartete Ausgabe ist ähnlich wie die folgende:
Embeddings: [array([-0.00894029, 0.00573813, 0.013351 , ..., -0.00042766,
-0.00603091, -0.00341043], shape=(3072,)), array([ 0.00222347, 0.03725113, 0.01152256, ..., 0.01047272,
-0.01701597, 0.00565377], shape=(3072,)), array([ 0.00661134, 0.00232328, -0.01342973, ..., -0.00514429,
-0.02374139, -0.00701721], shape=(3072,))]
Dim: 3072 (3072,)
Um Einbettungen für Abfragen zu erstellen, verwenden Sie die Methode encode_queries():
queries = ["When was artificial intelligence founded",
"Where was Alan Turing born?"]
query_embeddings = gemini_ef.encode_queries(queries)
# Print embeddings
print("Embeddings:", query_embeddings)
# Print dimension and shape of embeddings
print("Dim", gemini_ef.dim, query_embeddings[0].shape)
Die erwartete Ausgabe ist ähnlich wie die folgende:
Embeddings: [array([-0.02066572, 0.02459551, 0.00707774, ..., 0.00259341,
-0.01797572, -0.00626168], shape=(3072,)), array([ 0.00674969, 0.03023903, 0.01230692, ..., 0.00160009,
-0.01710967, 0.00972728], shape=(3072,))]
Dim 3072 (3072,)