milvus-logo
LFAI
Home
  • Modelle

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 notwendigen 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, wird jina-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 auf True 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)

Die erwartete Ausgabe ist ähnlich wie die 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 den Ähnlichkeitsabgleich (z. B. STS- oder symmetrische Retrieval-Aufgaben), die Textklassifizierung, das Clustering oder Reranking-Aufgaben zu erstellen, verwenden Sie bei der Instanziierung der Klasse JinaEmbeddingFunction den entsprechenden Parameterwert task.

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)

Übersetzt vonDeepLogo

Tabelle der Inhalte

Try Managed Milvus for Free

Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

Get Started
Feedback

War diese Seite hilfreich?