Model2Vec

Model2Vec ist eine leichtgewichtige und leistungsstarke Einbettungstechnik, die Sentence Transformer-Modelle in kompakte, statische Modelle umwandelt. Es reduziert die Modellgröße um das bis zu 50-fache und beschleunigt die Inferenz um das bis zu 500-fache, bei minimalem Leistungsverlust. Model2Vec ist ideal, wenn Sie über ressourcenbeschränkte Geräte verfügen.

Milvus lässt sich über die Klasse Model2VecEmbeddingFunction in die Modelle von Model2Vec integrieren. Diese Klasse bietet Methoden zur Kodierung von Dokumenten und Abfragen unter Verwendung der vortrainierten Model2Vec-Modelle und gibt die Einbettungen als dichte Vektoren zurück, die mit der Milvus-Indizierung kompatibel sind.

Sie unterstützt sowohl das Laden von Modellen aus dem Hugging Face Hub als auch das Hochladen von lokalen Model2Vec-Modellen und bietet damit Flexibilität für den Einsatz in verschiedenen Umgebungen.

Um diese Funktion zu nutzen, installieren Sie die notwendigen Abhängigkeiten:

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

Dann instanziieren Sie die Model2VecEmbeddingFunction:

from pymilvus import model

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

Parameter:

  • model_source(string)

    Gibt die Quelle des Model2Vec-Modells an, das für die Erzeugung von Einbettungen verwendet werden soll. Es werden zwei Methoden zum Laden von Modellen unterstützt:

    1. Laden vom Hugging Face Hub (empfohlen):

      • Geben Sie den Modellnamen als String an (z. B. "minishlab/potion-base-8M").
      • Die Modelloptionen sind wie folgt aufgelistet:
        • minishlab/potion-base-8M (Standard)
        • minishlab/potion-base-4M
        • minishlab/potion-base-2M
        • minishlab/potion-base-32M
        • minishlab/potion-retrieval-32M
    2. Lokales Laden:

      • Geben Sie den lokalen Dateipfad an, in dem das Model2Vec-Modell gespeichert ist (z. B. "/path/to/local/model").

Um Einbettungen für Dokumente zu erstellen, verwenden Sie die Methode 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)

Die erwartete Ausgabe ist ähnlich wie die folgende:

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

Um Einbettungen für Abfragen zu erstellen, verwenden Sie die Methode 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)

Die erwartete Ausgabe ist ähnlich wie die folgende:

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,)
Tabelle der Inhalte

Try Managed Milvus for Free

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

Get Started
Feedback

War diese Seite hilfreich?