milvus-logo
LFAI
Home
  • Modèles

Jina AI

Les modèles d'intégration de Jina AI sont des modèles d'intégration de texte très performants qui peuvent traduire des entrées textuelles en représentations numériques, en capturant la sémantique du texte. Ces modèles excellent dans des applications telles que la recherche dense, la similarité textuelle sémantique et la compréhension multilingue.

Milvus s'intègre aux modèles d'intégration de Jina AI via la classe JinaEmbeddingFunction. Cette classe fournit des méthodes pour coder les documents et les requêtes à l'aide des modèles d'intégration de Jina AI et pour renvoyer les intégrations sous forme de vecteurs denses compatibles avec l'indexation Milvus. Pour utiliser cette fonctionnalité, obtenez une clé API de Jina AI.

Pour utiliser cette fonctionnalité, installez les dépendances nécessaires :

pip install --upgrade pymilvus
pip install "pymilvus[model]"

Ensuite, instanciez l'application 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
)

Paramètres:

  • model_name (chaîne)

    Le nom du modèle d'intégration de Jina AI à utiliser pour l'encodage. Vous pouvez spécifier n'importe quel nom de modèle d'intégration Jina AI disponible, par exemple, jina-embeddings-v3, jina-embeddings-v2-base-en, etc. Si ce paramètre n'est pas spécifié, jina-embeddings-v3 sera utilisé. Pour obtenir la liste des modèles disponibles, reportez-vous à Jina Embeddings.

  • api_key (chaîne)

    La clé d'API pour accéder à l'API Jina AI.

  • task (chaîne)

    Le type d'entrée transmis au modèle. Requis pour les modèles d'intégration v3 et plus.

    • "retrieval.passage": Utilisé pour encoder des documents volumineux dans les tâches de recherche au moment de l'indexation.
    • "retrieval.query": Utilisé pour coder les requêtes ou les questions des utilisateurs dans les tâches de recherche.
    • "classification": Utilisé pour coder des textes dans le cadre de tâches de classification de textes.
    • "text-matching": Utilisé pour coder du texte pour la mise en correspondance de similarités, comme la mesure de la similarité entre deux phrases.
    • "clustering": Utilisé pour les tâches de regroupement ou de reclassement.
  • dimensions (int)

    Le nombre de dimensions que doivent avoir les encastrements de sortie résultants. La valeur par défaut est 1024. Pris en charge uniquement pour les modèles d'intégration v3 et supérieurs.

  • late_chunking (bool)

    Ce paramètre détermine s'il faut utiliser la nouvelle méthode de découpage en morceaux (chunking) que Jina AI a introduite le mois dernier pour encoder un lot de phrases. La valeur par défaut est False. Si la valeur est True, l'API Jina AI concaténera toutes les phrases du champ de saisie et les transmettra au modèle sous la forme d'une chaîne unique. En interne, le modèle incorpore cette longue chaîne concaténée et effectue ensuite un découpage tardif, renvoyant une liste d'incorporations correspondant à la taille de la liste d'entrée.

Pour créer des embeddings pour des documents, utilisez la méthode encode_documents(). Cette méthode est conçue pour l'intégration de documents dans des tâches de recherche asymétrique, telles que l'indexation de documents pour des tâches de recherche ou de recommandation. Cette méthode utilise retrieval.passage comme tâche.


```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)

Le résultat attendu est similaire à ce qui suit :

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,)

Pour créer des incorporations de requêtes, utilisez la méthode encode_queries(). Cette méthode est conçue pour l'intégration de requêtes dans des tâches de recherche asymétriques, telles que les requêtes de recherche ou les questions. Cette méthode utilise retrieval.query comme tâche.

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)

Le résultat attendu est similaire à ce qui suit :

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,)

Pour créer des encastrements d'entrées pour des tâches de correspondance de similarité (telles que les tâches STS ou de recherche symétrique), de classification de texte, de regroupement ou de reclassement, utilisez la valeur de paramètre task appropriée lors de l'instanciation de la classe 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)

Traduit parDeepLogo

Table de contenu

Try Managed Milvus for Free

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

Get Started
Feedback

Cette page a-t - elle été utile ?