Model2Vec

Model2Vec é uma técnica de incorporação leve e de alto desempenho que transforma os modelos do Sentence Transformer em modelos compactos e estáticos. Reduz o tamanho do modelo em até 50 vezes e acelera a inferência em até 500 vezes, com perda mínima de desempenho. O Model2Vec é ideal quando existem dispositivos com recursos limitados.

O Milvus integra-se com os modelos do Model2Vec através da classe Model2VecEmbeddingFunction. Esta classe fornece métodos para codificar documentos e consultas usando os modelos Model2Vec pré-treinados e retornando os embeddings como vetores densos compatíveis com a indexação Milvus.

Ela suporta tanto o carregamento de modelos do Hub Hugging Face quanto o carregamento de modelos locais do Model2Vec, oferecendo flexibilidade para implantação em vários ambientes.

Para usar esse recurso, instale as dependências necessárias:

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

Em seguida, instancie a Model2VecEmbeddingFunction:

from pymilvus import model

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

Parâmetros:

  • model_source(string)

    Especifica a fonte do modelo Model2Vec a ser usado para gerar embeddings. Ele suporta dois métodos de carregamento de modelos:

    1. Carregamento a partir do Hugging Face Hub (Recomendado):

      • Fornece o nome do modelo como uma string (por exemplo, "minishlab/potion-base-8M").
      • As opções de modelo são listadas a seguir:
        • minishlab/potion-base-8M (Padrão)
        • minishlab/potion-base-4M
        • minishlab/potion-base-2M
        • minishlab/potion-base-32M
        • minishlab/potion-retrieval-32M
    2. Loading Locally (Carregando localmente):

      • Forneça o caminho do ficheiro local onde o modelo Model2Vec está armazenado (por exemplo, "/path/to/local/model").

Para criar embeddings para documentos, use o 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)

O resultado esperado é semelhante ao seguinte:

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 criar embeddings para consultas, utilize o 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)

O resultado esperado é semelhante ao seguinte:

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,)
Tabela de conteúdos

Try Managed Milvus for Free

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

Get Started
Feedback

Esta página foi útil?