Model2Vec

Model2Vec adalah teknik penyematan ringan dan berkinerja tinggi yang mengubah model Sentence Transformer menjadi model statis yang ringkas. Teknik ini mengurangi ukuran model hingga 50x dan mempercepat inferensi hingga 500x, dengan penurunan performa yang minimal. Model2Vec sangat ideal ketika Anda memiliki perangkat dengan sumber daya terbatas.

Milvus terintegrasi dengan model-model Model2Vec melalui kelas Model2VecEmbeddingFunction. Kelas ini menyediakan metode untuk menyandikan dokumen dan kueri menggunakan model Model2Vec yang telah dilatih sebelumnya dan mengembalikan sematan sebagai vektor padat yang kompatibel dengan pengindeksan Milvus.

Kelas ini mendukung pemuatan model dari Hugging Face Hub dan pengunggahan model Model2Vec lokal, yang menawarkan fleksibilitas untuk digunakan di berbagai lingkungan.

Untuk menggunakan fitur ini, instal dependensi yang diperlukan:

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

Kemudian, instal Model2VecEmbeddingFunction:

from pymilvus import model

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

Parameter:

  • model_source(string)

    Menentukan sumber model Model2Vec yang akan digunakan untuk menghasilkan penyematan. Ini mendukung dua metode pemuatan model:

    1. Memuat dari Hugging Face Hub (Disarankan):

      • Berikan nama model sebagai string (misalnya, "minishlab/potion-base-8M").
      • Opsi model dicantumkan sebagai berikut:
        • minishlab/potion-base-8M (Default)
        • minishlab/potion-base-4M
        • minishlab/potion-base-2M
        • minishlab/potion-base-32M
        • minishlab/potion-retrieval-32M
    2. Memuat Secara Lokal:

      • Berikan jalur file lokal tempat model Model2Vec disimpan (misalnya, "/path/to/local/model").

Untuk membuat penyematan untuk dokumen, gunakan metode 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)

Keluaran yang diharapkan mirip dengan yang berikut ini:

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

Untuk membuat penyematan untuk kueri, gunakan metode 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)

Keluaran yang diharapkan mirip dengan yang berikut ini:

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

Coba Milvus yang Dikelola secara Gratis

Zilliz Cloud bebas masalah, didukung oleh Milvus dan 10x lebih cepat.

Mulai
Umpan balik

Apakah halaman ini bermanfaat?