جينا للذكاء الاصطناعي
نماذج التضمين من جينا للذكاء الاصطناعي هي نماذج تضمين نصية عالية الأداء يمكنها ترجمة المدخلات النصية إلى تمثيلات رقمية، والتقاط دلالات النص. تتفوق هذه النماذج في تطبيقات مثل الاسترجاع الكثيف، والتشابه النصي الدلالي، والفهم متعدد اللغات.
يتكامل ميلفوس مع نماذج التضمين في جينا للذكاء الاصطناعي عبر فئة JinaEmbeddingFunction
. توفر هذه الفئة طرقًا لترميز المستندات والاستعلامات باستخدام نماذج التضمين من Jina AI وإرجاع التضمينات كمتجهات كثيفة متوافقة مع فهرسة Milvus. للاستفادة من هذه الوظيفة، احصل على مفتاح API من Jina AI.
لاستخدام هذه الميزة، قم بتثبيت التبعيات اللازمة:
pip install --upgrade pymilvus
pip install "pymilvus[model]"
ثم، قم بإنشاء JinaEmbeddingFunction
:
from pymilvus.model.dense import JinaEmbeddingFunction
jina_ef = JinaEmbeddingFunction(
model_name="jina-embeddings-v3", # Defaults to `jina-embeddings-v3`
api_key=JINAAI_API_KEY, # Provide your Jina AI API key
task="retrieval.passage", # Specify the task
dimensions=1024, # Defaults to 1024
)
المعلمات:
model_name
(سلسلة)اسم نموذج تضمين Jina AI المراد استخدامه للترميز. يمكنك تحديد أي من أسماء نماذج تضمين جينا للذكاء الاصطناعي المتاحة، على سبيل المثال،
jina-embeddings-v3
،jina-embeddings-v2-base-en
، إلخ. إذا تركت هذه المعلمة غير محددة، فسيتم استخدامjina-embeddings-v3
. للاطلاع على قائمة النماذج المتاحة، راجع تضمينات جينا.api_key
(سلسلة)مفتاح واجهة برمجة التطبيقات للوصول إلى واجهة برمجة تطبيقات Jina AI.
task
(سلسلة)نوع المدخلات التي تم تمريرها إلى النموذج. مطلوب لتضمين النماذج v3 والإصدارات الأحدث.
"retrieval.passage"
: يُستخدم لترميز المستندات الكبيرة في مهام الاسترجاع في وقت الفهرسة."retrieval.query"
: يستخدم لترميز استفسارات المستخدم أو الأسئلة في مهام الاسترجاع."classification"
: تستخدم لترميز النصوص لمهام تصنيف النصوص."text-matching"
: تستخدم لترميز النص لمطابقة التشابه، مثل قياس التشابه بين جملتين."clustering"
: يُستخدم لتجميع أو إعادة ترتيب المهام.
dimensions
(int)عدد الأبعاد التي يجب أن تحتويها مخرجات التضمينات الناتجة. الافتراضي إلى 1024. مدعوم فقط لنماذج التضمين v3 والإصدارات الأحدث.
late_chunking
(bool)تتحكم هذه المعلمة في ما إذا كان سيتم استخدام طريقة التقطيع الجديدة التي قدمتها جينا للذكاء الاصطناعي الشهر الماضي لترميز مجموعة من الجمل. الإعداد الافتراضي هو
False
. عند ضبطه علىTrue
، ستقوم واجهة برمجة تطبيقات Jina AI API بتجميع كل الجمل في حقل الإدخال وتغذيتها كسلسلة واحدة للنموذج. داخليًا، يقوم النموذج بتضمين هذه السلسلة الطويلة المتسلسلة ثم يقوم بإجراء التقطيع المتأخر، ويعيد قائمة من التضمينات التي تطابق حجم قائمة الإدخال.
لإنشاء تضمينات للمستندات، استخدم الطريقة encode_documents()
. هذه الطريقة مصممة لتضمين المستندات في مهام الاسترجاع غير المتماثلة، مثل فهرسة المستندات لمهام البحث أو التوصية. تستخدم هذه الطريقة retrieval.passage
كمهمة.
```python
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 = jina_ef.encode_documents(docs)
# Print embeddings
print("Embeddings:", docs_embeddings)
# Print dimension and shape of embeddings
print("Dim:", jina_ef.dim, docs_embeddings[0].shape)
الناتج المتوقع مشابه لما يلي:
Embeddings: [array([9.80641991e-02, -8.51697400e-02, 7.36531913e-02, 1.42558888e-02,
-2.23589484e-02, 1.68494112e-03, -3.50753777e-02, -3.11530549e-02,
-3.26012149e-02, 5.04568312e-03, 3.69836427e-02, 3.48948985e-02,
8.19722563e-03, 5.88679723e-02, -6.71099266e-03, -1.82369724e-02,
...
2.48654783e-02, 3.43279652e-02, -1.66154150e-02, -9.90478322e-03,
-2.96043139e-03, -8.57473817e-03, -7.39028037e-04, 6.25024503e-03,
-1.08831357e-02, -4.00776342e-02, 3.25369164e-02, -1.42691191e-03])]
Dim: 1024 (1024,)
لإنشاء تضمينات للاستعلامات، استخدم الطريقة encode_queries()
. تم تصميم هذه الطريقة لتضمينات الاستعلام في مهام الاسترجاع غير المتماثلة، مثل استعلامات البحث أو الأسئلة. تستخدم هذه الطريقة retrieval.query
كمهمة.
queries = ["When was artificial intelligence founded",
"Where was Alan Turing born?"]
query_embeddings = jina_ef.encode_queries(queries)
print("Embeddings:", query_embeddings)
print("Dim", jina_ef.dim, query_embeddings[0].shape)
الناتج المتوقع مشابه لما يلي:
Embeddings: [array([8.79201014e-03, 1.47551354e-02, 4.02722731e-02, -2.52991207e-02,
1.12719582e-02, 3.75947170e-02, 3.97946090e-02, -7.36681819e-02,
-2.17952449e-02, -1.16298944e-02, -6.83426252e-03, -5.12507409e-02,
5.26071340e-02, 6.75181448e-02, 3.92445624e-02, -1.40817231e-02,
...
8.81703943e-03, 4.24629413e-02, -2.32944116e-02, -2.05193572e-02,
-3.22035812e-02, 2.81896023e-03, 3.85326855e-02, 3.64372656e-02,
-1.65050142e-02, -4.26847413e-02, 2.02664156e-02, -1.72684863e-02])]
Dim 1024 (1024,)
لإنشاء عمليات تضمين المدخلات لمطابقة التشابه (مثل مهام الاسترجاع المتماثل أو مهام الاسترجاع المتماثل)، أو تصنيف النصوص، أو التجميع، أو مهام إعادة الترتيب، استخدم قيمة المعلمة المناسبة task
عند إنشاء الفئة JinaEmbeddingFunction
.
from pymilvus.model.dense import JinaEmbeddingFunction
jina_ef = JinaEmbeddingFunction(
model_name="jina-embeddings-v3", # Defaults to `jina-embeddings-v3`
api_key=JINA_API_KEY, # Provide your Jina AI API key
task="text-matching",
dimensions=1024, # Defaults to 1024
)
texts = [
"Follow the white rabbit.", # English
"Sigue al conejo blanco.", # Spanish
"Suis le lapin blanc.", # French
"跟着白兔走。", # Chinese
"اتبع الأرنب الأبيض.", # Arabic
"Folge dem weißen Kaninchen.", # German
]
embeddings = jina_ef(texts)
# Compute similarities
print(embeddings[0] @ embeddings[1].T)