Trasformatori di frasi
Milvus si integra con i modelli preaddestrati di Sentence Transformer tramite la classe SentenceTransformerEmbeddingFunction. Questa classe fornisce metodi per codificare documenti e query utilizzando i modelli Sentence Transformer preaddestrati e restituendo le incorporazioni come vettori densi compatibili con l'indicizzazione di Milvus.
Per utilizzare questa funzione, installare le dipendenze necessarie:
pip install --upgrade pymilvus
pip install "pymilvus[model]"
Quindi, istanziare la SentenceTransformerEmbeddingFunction:
from pymilvus import model
sentence_transformer_ef = model.dense.SentenceTransformerEmbeddingFunction(
model_name='all-MiniLM-L6-v2', # Specify the model name
device='cpu' # Specify the device to use, e.g., 'cpu' or 'cuda:0'
)
Parametri:
nome_modello(stringa)
Il nome del modello di Sentence Transformer da usare per la codifica. Il valore predefinito è all-MiniLM-L6-v2. È possibile utilizzare uno qualsiasi dei modelli preaddestrati di Sentence Transformer. Per un elenco dei modelli disponibili, fare riferimento a Modelli preaddestrati.
dispositivo(stringa)
Il dispositivo da usare, con cpu per la CPU e cuda:n per l'ennesimo dispositivo GPU.
Per creare embeddings per i documenti, utilizzare il metodo 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 = sentence_transformer_ef.encode_documents(docs)
# Print embeddings
print("Embeddings:", docs_embeddings)
# Print dimension and shape of embeddings
print("Dim:", sentence_transformer_ef.dim, docs_embeddings[0].shape)
Il risultato atteso è simile al seguente:
Embeddings: [array([-3.09392996e-02, -1.80662833e-02, 1.34775648e-02, 2.77156215e-02,
-4.86349640e-03, -3.12581174e-02, -3.55921760e-02, 5.76934684e-03,
2.80773244e-03, 1.35783911e-01, 3.59678417e-02, 6.17732145e-02,
...
-4.61330153e-02, -4.85207550e-02, 3.13997865e-02, 7.82178566e-02,
-4.75336798e-02, 5.21207601e-02, 9.04406682e-02, -5.36676683e-02],
dtype=float32)]
Dim: 384 (384,)
Per creare embeddings per le query, utilizzare il metodo encode_queries():
queries = ["When was artificial intelligence founded",
"Where was Alan Turing born?"]
query_embeddings = sentence_transformer_ef.encode_queries(queries)
# Print embeddings
print("Embeddings:", query_embeddings)
# Print dimension and shape of embeddings
print("Dim:", sentence_transformer_ef.dim, query_embeddings[0].shape)
Il risultato atteso è simile al seguente:
Embeddings: [array([-2.52114702e-02, -5.29330298e-02, 1.14570223e-02, 1.95571519e-02,
-2.46500354e-02, -2.66519729e-02, -8.48201662e-03, 2.82961670e-02,
-3.65092754e-02, 7.50745758e-02, 4.28900979e-02, 7.18822703e-02,
...
-6.76431581e-02, -6.45996556e-02, -4.67132553e-02, 4.78532910e-02,
-2.31596199e-03, 4.13446948e-02, 1.06935494e-01, -1.08258888e-01],
dtype=float32)]
Dim: 384 (384,)