milvus-logo
LFAI
Home
  • Modelos

Jina AI

Los modelos de incrustación de Jina AI son modelos de incrustación de texto de alto rendimiento que pueden traducir entradas textuales en representaciones numéricas, capturando la semántica del texto. Estos modelos destacan en aplicaciones como la recuperación densa, la similitud semántica textual y la comprensión multilingüe.

Milvus se integra con los modelos de incrustación de Jina AI a través de la clase JinaEmbeddingFunction. Esta clase proporciona métodos para codificar documentos y consultas utilizando los modelos de incrustación de Jina AI y devolviendo las incrustaciones como vectores densos compatibles con la indexación de Milvus. Para utilizar esta funcionalidad, obtenga una clave API de Jina AI.

Para utilizar esta función, instale las dependencias necesarias:

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

A continuación, instancie 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
)

Parámetros:

  • model_name (cadena)

    Nombre del modelo de incrustación de Jina AI que se utilizará para la codificación. Puede especificar cualquiera de los nombres de modelo de incrustación de Jina AI disponibles, por ejemplo, jina-embeddings-v3, jina-embeddings-v2-base-en, etc. Si deja este parámetro sin especificar, se utilizará jina-embeddings-v3. Para obtener una lista de los modelos disponibles, consulte Jina Embeddings.

  • api_key (cadena)

    La clave API para acceder a la API de Jina AI.

  • task (cadena)

    Tipo de entrada que se pasa al modelo. Requerido para modelos de incrustación v3 y superiores.

    • "retrieval.passage": Se utiliza para codificar documentos de gran tamaño en tareas de recuperación en el momento de la indexación.
    • "retrieval.query": Se utiliza para codificar las consultas o preguntas de los usuarios en las tareas de recuperación.
    • "classification": Se utiliza para codificar texto en tareas de clasificación de texto.
    • "text-matching": Se utiliza para codificar texto en tareas de comparación de similitudes, como la medición de la similitud entre dos frases.
    • "clustering": Se utiliza para tareas de clustering o reranking.
  • dimensions (int)

    Número de dimensiones que deben tener las incrustaciones resultantes. El valor predeterminado es 1024. Sólo se admite para modelos de incrustación v3 y superiores.

  • late_chunking (bool)

    Este parámetro controla si se utiliza el nuevo método de fragmentación que Jina AI introdujo el mes pasado para codificar un lote de frases. El valor predeterminado es False. Si se establece en True, la API de Jina AI concatenará todas las frases del campo de entrada y las introducirá como una única cadena en el modelo. Internamente, el modelo incrusta esta larga cadena concatenada y, a continuación, realiza un chunking tardío, devolviendo una lista de incrustaciones que coincide con el tamaño de la lista de entrada.

Para crear incrustaciones de documentos, utilice el método encode_documents(). Este método está diseñado para incrustaciones de documentos en tareas de recuperación asimétrica, como la indexación de documentos para tareas de búsqueda o recomendación. Este método utiliza retrieval.passage como tarea.


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

El resultado esperado es similar al siguiente:

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

Para crear incrustaciones para consultas, utilice el método encode_queries(). Este método está diseñado para incrustaciones de consultas en tareas de recuperación asimétricas, como consultas de búsqueda o preguntas. Este método utiliza retrieval.query como tarea.

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)

El resultado esperado es similar al siguiente:

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

Para crear incrustaciones de entradas para la comparación de similitudes (como las tareas STS o de recuperación simétrica), la clasificación de textos, la agrupación o las tareas de reordenación, utilice el valor del parámetro task adecuado al instanciar la clase 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)

Traducido porDeepL

Tabla de contenidos

Try Managed Milvus for Free

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

Get Started
Feedback

¿Fue útil esta página?