Transformadores de frases
Milvus se integra con los modelos preentrenados de Sentence Transformer a través de la clase SentenceTransformerEmbeddingFunction. Esta clase proporciona métodos para codificar documentos y consultas utilizando los modelos Sentence Transformer preentrenados y devolviendo las incrustaciones como vectores densos compatibles con la indexación Milvus.
Para utilizar esta función, instale las dependencias necesarias:
pip install --upgrade pymilvus
pip install "pymilvus[model]"
A continuación, instancie 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'
)
Parámetros:
model_name(cadena)
El nombre del modelo de Sentence Transformer a utilizar para la codificación. El valor predeterminado es all-MiniLM-L6-v2. Puede utilizar cualquiera de los modelos preentrenados de Sentence Transformers. Para obtener una lista de los modelos disponibles, consulte Modelos preentrenados.
dispositivo(cadena)
El dispositivo a utilizar, con cpu para la CPU y cuda:n para el enésimo dispositivo GPU.
Para crear incrustaciones de 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 = 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)
El resultado esperado es similar al siguiente:
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,)
Para crear incrustaciones de consultas, utiliza el método 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)
El resultado esperado es similar al siguiente:
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,)