محولات الجمل
يتكامل ميلفوس مع نماذج محولات الجمل المدربة مسبقًا عبر فئة SentenceTransformerEmbeddingFunction. توفر هذه الفئة طرقًا لترميز المستندات والاستعلامات باستخدام نماذج محولات الجمل المدربة مسبقًا وإرجاع التضمينات كمتجهات كثيفة متوافقة مع فهرسة 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'
)
المعلمات:
اسم_النموذج(سلسلة)
اسم نموذج محول الجملة المراد استخدامه للترميز. يتم تعيين القيمة افتراضيًا إلى All-MiniLM-L6-v2. يمكنك استخدام أي من نماذج محولات الجملة المدربة مسبقًا. للاطلاع على قائمة النماذج المتاحة، راجع النماذج المدربة مسبقًا.
الجهاز(سلسلة)
الجهاز المراد استخدامه، مع cpu لوحدة المعالجة المركزية و cuda:n لجهاز وحدة معالجة الرسومات رقم n.
لإنشاء تضمينات للمستندات، استخدم طريقة 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,)