موديل2فيك
Model2Vec عبارة عن تقنية تضمين خفيفة الوزن وعالية الأداء تقوم بتحويل نماذج محول الجمل إلى نماذج مضغوطة وثابتة. يقلل من حجم النموذج بما يصل إلى 50 ضعفًا ويسرّع الاستدلال بما يصل إلى 500 ضعف، مع الحد الأدنى من فقدان الأداء. تعتبر Model2Vec مثالية عندما يكون لديك أجهزة محدودة الموارد.
تتكامل ميلفوس مع نماذج Model2Vec عبر فئة Model2VecEmbeddingFunction. توفر هذه الفئة طرقًا لترميز المستندات والاستعلامات باستخدام نماذج Model2Vec المدربة مسبقًا وإرجاع التضمينات كمتجهات كثيفة متوافقة مع فهرسة Milvus.
وهي تدعم كلاً من تحميل النماذج من Hugging Face Hub وتحميل نماذج Model2Vec المحلية، مما يوفر مرونة للنشر في بيئات مختلفة.
لاستخدام هذه الميزة، قم بتثبيت التبعيات اللازمة:
pip install --upgrade pymilvus
pip install "pymilvus[model]"
ثم، قم بإنشاء دالة Model2VecEmbeddingFunction:
from pymilvus import model
model2vec_ef = model.dense.Model2VecEmbeddingFunction(
model_source='minishlab/potion-base-8M', # or local directory
)
المعلمات:
مصدر_النموذج(سلسلة)
يحدد مصدر نموذج Model2Vec المراد استخدامه لتوليد التضمينات. يدعم طريقتين لتحميل النماذج:
التحميل من محور تعانق الوجه (موصى به):
- توفير اسم النموذج كسلسلة (على سبيل المثال،
"minishlab/potion-base-8M"). - يتم سرد خيارات النموذج على النحو التالي:
minishlab/potion-base-8M(افتراضي)minishlab/potion-base-4Mminishlab/potion-base-2Mminishlab/potion-base-32Mminishlab/potion-retrieval-32M
- توفير اسم النموذج كسلسلة (على سبيل المثال،
التحميل محلياً:
- أدخل مسار الملف المحلي حيث يتم تخزين نموذج Model2Vec (على سبيل المثال،
"/path/to/local/model").
- أدخل مسار الملف المحلي حيث يتم تخزين نموذج Model2Vec (على سبيل المثال،
لإنشاء تضمينات للمستندات، استخدم طريقة تشفير_المستندات():
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)
الناتج المتوقع مشابه لما يلي:
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,)
لإنشاء تضمينات للاستعلامات، استخدم الأسلوب 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)
المخرجات المتوقعة مشابهة لما يلي:
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,)