Трансформаторы предложений
Milvus интегрируется с предварительно обученными моделями Sentence Transformer с помощью класса SentenceTransformerEmbeddingFunction. Этот класс предоставляет методы для кодирования документов и запросов с помощью предварительно обученных моделей Sentence Transformer и возвращает вкрапления в виде плотных векторов, совместимых с индексацией Milvus.
Чтобы воспользоваться этой функцией, установите необходимые зависимости:
pip install --upgrade pymilvus
pip install "pymilvus[model]"
Затем инстанцируйте 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'
)
Параметры:
имя_модели(строка)
Имя модели Sentence Transformer, которую следует использовать для кодирования. По умолчанию используется значение all-MiniLM-L6-v2. Вы можете использовать любую из предварительно обученных моделей Sentence Transformers. Список доступных моделей см. в разделе Предварительно обученные модели.
устройство(строка)
Используемое устройство: cpu для CPU и cuda:n для n-го устройства GPU.
Чтобы создать вкрапления для документов, используйте метод 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)
Ожидаемый результат будет похож на следующий:
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,)
Для создания вкраплений для запросов используйте метод 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)
Ожидаемый результат похож на следующий:
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,)