عناق الوجه TEICompatible with Milvus 2.6.x
إن Hugging Face Inference تضمين النص (TEI) هو خادم استدلال عالي الأداء مصمم خصيصًا لنماذج تضمين النص. يشرح هذا الدليل كيفية استخدام Hugging Face TEI مع Milvus لتوليد تضمين نصي فعال.
تعمل TEI مع العديد من نماذج تضمين النصوص من Hugging Face Hub، بما في ذلك:
سلسلة BAAI/bge-*
سلسلة محولات الجملة/*
نماذج E5
نماذج GTE
وغيرها الكثير
للحصول على أحدث قائمة من النماذج المدعومة، راجع مستودع TEI GitHub ومستودع TEI GitHub و Hugging Face Hub.
نشر TEI
قبل تكوين Milvus مع وظيفة TEI، يجب أن يكون لديك خدمة TEI قيد التشغيل. يدعم ميلفوس طريقتين لنشر TEI:
النشر القياسي (خارجي)
يمكنك نشر TEI كخدمة مستقلة باستخدام الطرق الرسمية من Hugging Face. يمنحك هذا الأسلوب أقصى قدر من المرونة والتحكم في خدمة TEI الخاصة بك.
للحصول على إرشادات مفصلة حول نشر TEI باستخدام Docker أو طرق أخرى، راجع الوثائق الرسمية لـ Hugging Face Text Embedddings Inference.
بعد النشر، قم بتدوين نقطة نهاية خدمة TEI الخاصة بك (على سبيل المثال، http://localhost:8080) حيث ستحتاج إليها عند استخدام وظيفة TEI في Milvus.
نشر مخطط Milvus Helm البياني (متكامل)
بالنسبة لبيئات Kubernetes، تقدم Milvus خيار النشر المتكامل من خلال مخطط Helm. هذا يبسط العملية عن طريق نشر وتكوين TEI جنبًا إلى جنب مع Milvus.
لتمكين TEI في نشر Milvus Helm الخاص بك:
تكوين القيم.yaml لتمكين TEI:
tei: enabled: true image: repository: ghcr.io/huggingface/text-embeddings-inference tag: "1.7" # Modify based on hardware model: "BAAI/bge-large-en-v1.5" # Modify based on requirements # revision: "main" # hfTokenSecretName: "my-huggingface-token-secret" # apiKey: "your_secure_api_key" # apiKeySecret: # name: "my-tei-api-key-secret" # key: "api-key" resources: requests: cpu: "1" memory: "4Gi" # nvidia.com/gpu: "1" # For GPU limits: cpu: "2" memory: "8Gi" # nvidia.com/gpu: "1" # For GPU extraArgs: []نشر أو ترقية Milvus:
helm install my-release milvus/milvus -f values.yaml -n <your-milvus-namespace> # or helm upgrade my-release milvus/milvus -f values.yaml --reset-then-reuse-values -n <your-milvus-namespace>عند استخدام نشر مخطط Helm، سيتم الوصول إلى خدمة TEI داخل مجموعة Kubernetes الخاصة بك على
http://my-release-milvus-tei:80(باستخدام اسم الإصدار الخاص بك). استخدم هذا كنقطة نهاية في تكوين وظيفة TEI.
التكوين في ميلفوس
بعد نشر خدمة TEI الخاصة بك، ستحتاج إلى توفير نقطة النهاية الخاصة بها عند تحديد دالة تضمين TEI. في معظم الحالات، لا يلزم إجراء أي تكوين إضافي حيث يتم تمكين TEI افتراضيًا في Milvus.
ومع ذلك، إذا تم نشر خدمة TEI الخاصة بك مع مصادقة مفتاح واجهة برمجة التطبيقات (--api-key )، فستحتاج إلى تكوين Milvus لاستخدام هذا المفتاح:
حدد مفاتيح واجهة برمجة التطبيقات في قسم
credential:# milvus.yaml credential: tei_key: # You can use any label name apikey: <YOUR_TEI_API_KEY>قم بالإشارة إلى بيانات الاعتماد في milvus.yaml:
function: textEmbedding: providers: tei: credential: tei_key # ← choose any label you defined above enable: true # enabled by default. no action required.
استخدام وظيفة التضمين
بمجرد تكوين خدمة TEI، اتبع هذه الخطوات لتعريف دوال التضمين واستخدامها.
الخطوة 1: تحديد حقول المخطط
لاستخدام دالة التضمين، قم بإنشاء مجموعة بمخطط محدد. يجب أن يتضمن هذا المخطط ثلاثة حقول ضرورية على الأقل:
الحقل الأساسي الذي يحدد بشكل فريد كل كيان في المجموعة.
حقل قياسي يخزن البيانات الأولية المراد تضمينها.
حقل متجه محجوز لتخزين التضمينات المتجهة التي ستقوم الدالة بإنشائها للحقل القياسي.
يحدد المثال التالي مخططًا يحتوي على حقل قياسي واحد "document" لتخزين البيانات النصية وحقل متجه واحد "dense_vector" لتخزين التضمينات التي سيتم إنشاؤها بواسطة الوحدة النمطية للدالة. تذكر تعيين البعد المتجه (dim) لمطابقة مخرجات نموذج التضمين الذي اخترته.
from pymilvus import MilvusClient, DataType, Function, FunctionType, CollectionSchema, FieldSchema
# Assume you have connected to Milvus
# client = MilvusClient(uri="http://localhost:19530")
# 1. Create Schema
schema = MilvusClient.create_schema()
# 2. Add fields
schema.add_field("id", DataType.INT64, is_primary=True, auto_id=False)
schema.add_field("document", DataType.VARCHAR, max_length=9000) # Store text data
# IMPORTANT: Set dim to exactly match the TEI model's output dimension
schema.add_field("dense_vector", DataType.FLOAT_VECTOR, dim=1024) # Store embedding vectors (example dimension)
الخطوة 2: إضافة دالة التضمين إلى المخطط
تقوم الوحدة النمطية الدالة في ميلفوس تلقائيًا بتحويل البيانات الأولية المخزنة في حقل قياسي إلى تضمينات وتخزينها في حقل المتجه المحدد صراحة.
يضيف المثال أدناه وحدة الدالة (tei_func) التي تقوم بتحويل الحقل القياسي "document" إلى تضمينات، وتخزين المتجهات الناتجة في الحقل المتجه "dense_vector" المحدد مسبقًا.
بمجرد تعريف دالة التضمين الخاصة بك، قم بإضافتها إلى مخطط مجموعتك. هذا يوجه ميلفوس لاستخدام دالة التضمين المحددة لمعالجة التضمينات وتخزينها من بياناتك النصية.
# 3. Define TEI embedding function
text_embedding_function = Function(
name="tei_func", # Unique identifier for this embedding function
function_type=FunctionType.TEXTEMBEDDING, # Indicates a text embedding function
input_field_names=["document"], # Scalar field(s) containing text data to embed
output_field_names=["dense_vector"], # Vector field(s) for storing embeddings
params={ # TEI specific parameters (function-level)
"provider": "TEI", # Must be set to "TEI"
"endpoint": "http://your-tei-service-endpoint:80", # Required: Points to your TEI service address
# Optional parameters:
# "truncate": "true", # Optional: Whether to truncate long input (default false)
# "truncation_direction": "right", # Optional: Truncation direction (default right)
# "max_client_batch_size": 64, # Optional: Client max batch size (default 32)
# "ingestion_prompt": "passage: ", # Optional: (Advanced) Ingestion phase prompt
# "search_prompt": "query: " # Optional: (Advanced) Search phase prompt
}
)
# Add the configured embedding function to your existing collection schema
schema.add_function(text_embedding_function)
المعلمة |
مطلوبة؟ |
الوصف |
مثال القيمة |
|---|---|---|---|
|
نعم |
موفر نموذج التضمين. تعيين إلى "TEI". |
"TEI" |
|
نعم |
عنوان الشبكة الذي يشير إلى خدمة TEI المنشورة. في حالة النشر عبر مخطط Milvus Helm، يكون هذا عادةً عنوان الخدمة الداخلي. |
"http://localhost:8080"، "http://my-release-milvus-tei:80" |
|
لا |
ما إذا كان سيتم اقتطاع نصوص الإدخال التي تتجاوز الحد الأقصى لطول النموذج. الافتراضي إلى خطأ. |
"صواب" |
|
لا يوجد |
فعالة عندما يكون الاقتطاع صحيحاً. يحدد ما إذا كان سيتم الاقتطاع من اليسار أو اليمين. الافتراضي إلى اليمين. |
"يسار" |
|
لا يوجد |
الحد الأقصى لحجم الدفعة التي يرسلها عميل Milvus إلى TEI. الإعداد الافتراضي 32. |
64 |
|
رقم |
(متقدم) يحدد مفتاحاً في قاموس مطالبات تكوين محولات الجمل. يُستخدم لنماذج معينة تتطلب تنسيقات مطالبة محددة. قد يكون دعم TEI محدودًا ويعتمد على تكوين النموذج على المحور. |
"مفتاح المطالبة الخاص بك" |
|
لا يوجد |
(متقدم) يحدد المطالبة المراد استخدامها أثناء مرحلة إدخال البيانات (الإدخال). يعتمد على نموذج TEI المستخدم؛ يجب أن يدعم النموذج المطالبات. |
"مرور " |
|
رقم |
(متقدم) يحدد المطالبة المراد استخدامها أثناء مرحلة البحث. يعتمد على نموذج TEI المستخدم؛ يجب أن يدعم النموذج المطالبات. |
"استعلام: " |
الخطوات التالية
بعد تكوين دالة التضمين، ارجع إلى نظرة عامة على الوظيفة للحصول على إرشادات إضافية حول تكوين الفهرس وأمثلة إدراج البيانات وعمليات البحث الدلالي.