Jina AI
Die Einbettungsmodelle von Jina AI sind leistungsstarke Modelle zur Texteinbettung, die Texteingaben in numerische Darstellungen übersetzen können und dabei die Semantik des Textes erfassen. Diese Modelle eignen sich hervorragend für Anwendungen wie dichtes Retrieval, semantische Textähnlichkeit und mehrsprachiges Verständnis.
Milvus lässt sich über die Klasse JinaEmbeddingFunction
mit den Einbettungsmodellen von Jina AI integrieren. Diese Klasse bietet Methoden zur Kodierung von Dokumenten und Abfragen unter Verwendung der Jina AI Einbettungsmodelle und gibt die Einbettungen als dichte Vektoren zurück, die mit der Milvus-Indizierung kompatibel sind. Um diese Funktionalität nutzen zu können, müssen Sie einen API-Schlüssel von Jina AI erhalten.
Um diese Funktion zu nutzen, installieren Sie die erforderlichen Abhängigkeiten:
pip install --upgrade pymilvus
pip install "pymilvus[model]"
Dann instanziieren Sie die JinaEmbeddingFunction
:
from pymilvus.model.dense import JinaEmbeddingFunction
jina_ef = JinaEmbeddingFunction(
model_name="jina-embeddings-v3", # Defaults to `jina-embeddings-v3`
api_key=JINAAI_API_KEY, # Provide your Jina AI API key
task="retrieval.passage", # Specify the task
dimensions=1024, # Defaults to 1024
)
Parameter:
model_name
(String)Der Name des Jina AI Einbettungsmodells, das für die Kodierung verwendet werden soll. Sie können jeden der verfügbaren Namen des Jina AI-Einbettungsmodells angeben, z. B.
jina-embeddings-v3
,jina-embeddings-v2-base-en
, usw. Wenn Sie diesen Parameter nicht angeben, wirdjina-embeddings-v3
verwendet. Eine Liste der verfügbaren Modelle finden Sie unter Jina Embeddings.api_key
(Zeichenkette)Der API-Schlüssel für den Zugriff auf die Jina AI API.
task
(Zeichenkette)Der Typ der an das Modell übergebenen Eingabe. Erforderlich für Einbettungsmodelle v3 und höher.
"retrieval.passage"
: Wird verwendet, um große Dokumente in Retrieval-Aufgaben zum Zeitpunkt der Indizierung zu kodieren."retrieval.query"
: Wird verwendet, um Benutzeranfragen oder Fragen in Retrieval-Aufgaben zu kodieren."classification"
: Zur Kodierung von Text für Textklassifizierungsaufgaben."text-matching"
: Kodierung von Text für Ähnlichkeitsvergleiche, z. B. zur Messung der Ähnlichkeit zwischen zwei Sätzen."clustering"
: Wird für Clustering- oder Reranking-Aufgaben verwendet.
dimensions
(int)Die Anzahl der Dimensionen, die die resultierenden Ausgabeeinbettungen haben sollen. Der Standardwert ist 1024. Wird nur für Einbettungsmodelle v3 und höher unterstützt.
late_chunking
(bool)Dieser Parameter steuert, ob die neue Chunking-Methode verwendet werden soll, die Jina AI letzten Monat für die Kodierung einer Reihe von Sätzen eingeführt hat. Der Standardwert ist
False
. Wenn er aufTrue
gesetzt wird, verkettet Jina AI API alle Sätze im Eingabefeld und gibt sie als eine einzige Zeichenkette an das Modell weiter. Intern bettet das Modell diese lange, verkettete Zeichenkette ein und führt dann ein Late Chunking durch, wobei es eine Liste von Einbettungen zurückgibt, die der Größe der Eingabeliste entspricht.
Um Einbettungen für Dokumente zu erstellen, verwenden Sie die Methode encode_documents()
. Diese Methode wurde für die Einbettung von Dokumenten in asymmetrischen Retrieval-Aufgaben entwickelt, z. B. die Indizierung von Dokumenten für Such- oder Empfehlungsaufgaben. Diese Methode verwendet retrieval.passage
als Aufgabe.
```python
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 = jina_ef.encode_documents(docs)
# Print embeddings
print("Embeddings:", docs_embeddings)
# Print dimension and shape of embeddings
print("Dim:", jina_ef.dim, docs_embeddings[0].shape)
Die erwartete Ausgabe ist ähnlich wie die folgende:
Embeddings: [array([9.80641991e-02, -8.51697400e-02, 7.36531913e-02, 1.42558888e-02,
-2.23589484e-02, 1.68494112e-03, -3.50753777e-02, -3.11530549e-02,
-3.26012149e-02, 5.04568312e-03, 3.69836427e-02, 3.48948985e-02,
8.19722563e-03, 5.88679723e-02, -6.71099266e-03, -1.82369724e-02,
...
2.48654783e-02, 3.43279652e-02, -1.66154150e-02, -9.90478322e-03,
-2.96043139e-03, -8.57473817e-03, -7.39028037e-04, 6.25024503e-03,
-1.08831357e-02, -4.00776342e-02, 3.25369164e-02, -1.42691191e-03])]
Dim: 1024 (1024,)
Um Einbettungen für Abfragen zu erstellen, verwenden Sie die Methode encode_queries()
. Diese Methode wurde für die Einbettung von Abfragen in asymmetrischen Retrieval-Aufgaben entwickelt, wie z. B. Suchanfragen oder Fragen. Diese Methode verwendet retrieval.query
als Aufgabe.
queries = ["When was artificial intelligence founded",
"Where was Alan Turing born?"]
query_embeddings = jina_ef.encode_queries(queries)
print("Embeddings:", query_embeddings)
print("Dim", jina_ef.dim, query_embeddings[0].shape)
Das erwartete Ergebnis ist ähnlich wie das folgende:
Embeddings: [array([8.79201014e-03, 1.47551354e-02, 4.02722731e-02, -2.52991207e-02,
1.12719582e-02, 3.75947170e-02, 3.97946090e-02, -7.36681819e-02,
-2.17952449e-02, -1.16298944e-02, -6.83426252e-03, -5.12507409e-02,
5.26071340e-02, 6.75181448e-02, 3.92445624e-02, -1.40817231e-02,
...
8.81703943e-03, 4.24629413e-02, -2.32944116e-02, -2.05193572e-02,
-3.22035812e-02, 2.81896023e-03, 3.85326855e-02, 3.64372656e-02,
-1.65050142e-02, -4.26847413e-02, 2.02664156e-02, -1.72684863e-02])]
Dim 1024 (1024,)
Um Einbettungen von Eingaben für Ähnlichkeitsabgleiche (z. B. STS oder symmetrische Abrufaufgaben), Textklassifizierung, Clustering oder Reranking-Aufgaben zu erstellen, verwenden Sie den entsprechenden task
Parameterwert bei der Instanziierung der Klasse JinaEmbeddingFunction
.
from pymilvus.model.dense import JinaEmbeddingFunction
jina_ef = JinaEmbeddingFunction(
model_name="jina-embeddings-v3", # Defaults to `jina-embeddings-v3`
api_key=JINA_API_KEY, # Provide your Jina AI API key
task="text-matching",
dimensions=1024, # Defaults to 1024
)
texts = [
"Follow the white rabbit.", # English
"Sigue al conejo blanco.", # Spanish
"Suis le lapin blanc.", # French
"跟着白兔走。", # Chinese
"اتبع الأرنب الأبيض.", # Arabic
"Folge dem weißen Kaninchen.", # German
]
embeddings = jina_ef(texts)
# Compute similarities
print(embeddings[0] @ embeddings[1].T)