Modelo2Vec

Model2Vec es una técnica de incrustación ligera y de alto rendimiento que transforma los modelos de Sentence Transformer en modelos compactos y estáticos. Reduce el tamaño del modelo hasta 50 veces y acelera la inferencia hasta 500 veces, con una pérdida de rendimiento mínima. Model2Vec es ideal cuando se dispone de dispositivos con recursos limitados.

Milvus se integra con los modelos de Model2Vec a través de la clase Model2VecEmbeddingFunction. Esta clase proporciona métodos para codificar documentos y consultas utilizando los modelos Model2Vec preentrenados y devolviendo las incrustaciones como vectores densos compatibles con la indexación Milvus.

Admite tanto la carga de modelos desde Hugging Face Hub como la carga de modelos Model2Vec locales, lo que ofrece flexibilidad para el despliegue en diversos entornos.

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

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

A continuación, instancie la Model2VecEmbeddingFunction:

from pymilvus import model

model2vec_ef = model.dense.Model2VecEmbeddingFunction(
    model_source='minishlab/potion-base-8M', # or local directory
)

Parámetros:

  • model_source(cadena)

    Especifica el origen del modelo Model2Vec que se utilizará para generar las incrustaciones. Admite dos métodos de carga de modelos:

    1. Carga desde Hugging Face Hub (Recomendado):

      • Proporcione el nombre del modelo como cadena (por ejemplo, "minishlab/potion-base-8M").
      • Las opciones de modelo son las siguientes
        • minishlab/potion-base-8M (Por defecto)
        • minishlab/potion-base-4M
        • minishlab/potion-base-2M
        • minishlab/potion-base-32M
        • minishlab/potion-retrieval-32M
    2. Cargar localmente:

      • Proporcione la ruta del archivo local donde se almacena el modelo Model2Vec (por ejemplo, "/path/to/local/model").

Para crear incrustaciones para documentos, utilice el método 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 = model2vec_ef.encode_documents(docs)

# Print embeddings
print("Embeddings:", docs_embeddings)
# Print dimension and shape of embeddings
print("Dim:", model2vec_ef.dim, docs_embeddings[0].shape)

El resultado esperado es similar al siguiente:

Embeddings: [array([ 0.02220882,  0.11436888, -0.15094341,  0.08149259,  0.20425692,
       -0.15727402, -0.25320682, -0.00669029,  0.03157463,  0.08974048,
       -0.00148778, -0.01803541,  0.00230828, -0.0137875 , -0.19242321,
...
       -7.29782460e-03, -2.15345751e-02, -4.13905866e-02,  3.70773636e-02,
        5.45082428e-02,  1.36436718e-02,  1.38598625e-02,  3.91175086e-03],
      dtype=float32)]
Dim: 256 (256,)

Para crear incrustaciones de consultas, utilice el método encode_queries():

queries = ["When was artificial intelligence founded", 
           "Where was Alan Turing born?"]

query_embeddings = model2vec_ef.encode_queries(queries)

# Print embeddings
print("Embeddings:", query_embeddings)
# Print dimension and shape of embeddings
print("Dim", model2vec_ef.dim, query_embeddings[0].shape)

El resultado esperado es similar al siguiente:

Embeddings: [array([-1.87109038e-02, -2.81724217e-03, -1.67356253e-01, -5.30372337e-02,
        1.08304240e-01, -1.09269567e-01, -2.53464818e-01, -1.77880954e-02,
        3.05427872e-02,  1.68244764e-01, -7.25950347e-03, -2.52178032e-02,
...
        8.60440824e-03,  2.12906860e-03,  1.50156394e-02, -1.29304864e-02,
       -3.66544276e-02,  5.01735881e-03, -1.53137008e-02,  9.57900891e-04],
      dtype=float32)]
Dim 256 (256,)
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?