Milvus
Zilliz
الصفحة الرئيسية
  • دليل المستخدم
  • Home
  • Docs
  • دليل المستخدم

  • التضمين وإعادة التصنيف

  • وظيفة التضمين

  • عناق الوجه TEI

عناق الوجه 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 الخاص بك:

  1. تكوين القيم.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: []
    
    
  2. نشر أو ترقية 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 لاستخدام هذا المفتاح:

  1. حدد مفاتيح واجهة برمجة التطبيقات في قسم credential:

    # milvus.yaml
    credential:
      tei_key:  # You can use any label name
        apikey: <YOUR_TEI_API_KEY>
    
  2. قم بالإشارة إلى بيانات الاعتماد في 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)

المعلمة

مطلوبة؟

الوصف

مثال القيمة

provider

نعم

موفر نموذج التضمين. تعيين إلى "TEI".

"TEI"

endpoint

نعم

عنوان الشبكة الذي يشير إلى خدمة TEI المنشورة. في حالة النشر عبر مخطط Milvus Helm، يكون هذا عادةً عنوان الخدمة الداخلي.

"http://localhost:8080"، "http://my-release-milvus-tei:80"

truncate

لا

ما إذا كان سيتم اقتطاع نصوص الإدخال التي تتجاوز الحد الأقصى لطول النموذج. الافتراضي إلى خطأ.

"صواب"

truncation_direction

لا يوجد

فعالة عندما يكون الاقتطاع صحيحاً. يحدد ما إذا كان سيتم الاقتطاع من اليسار أو اليمين. الافتراضي إلى اليمين.

"يسار"

max_client_batch_size

لا يوجد

الحد الأقصى لحجم الدفعة التي يرسلها عميل Milvus إلى TEI. الإعداد الافتراضي 32.

64

prompt_name

رقم

(متقدم) يحدد مفتاحاً في قاموس مطالبات تكوين محولات الجمل. يُستخدم لنماذج معينة تتطلب تنسيقات مطالبة محددة. قد يكون دعم TEI محدودًا ويعتمد على تكوين النموذج على المحور.

"مفتاح المطالبة الخاص بك"

ingestion_prompt

لا يوجد

(متقدم) يحدد المطالبة المراد استخدامها أثناء مرحلة إدخال البيانات (الإدخال). يعتمد على نموذج TEI المستخدم؛ يجب أن يدعم النموذج المطالبات.

"مرور "

search_prompt

رقم

(متقدم) يحدد المطالبة المراد استخدامها أثناء مرحلة البحث. يعتمد على نموذج TEI المستخدم؛ يجب أن يدعم النموذج المطالبات.

"استعلام: "

الخطوات التالية

بعد تكوين دالة التضمين، ارجع إلى نظرة عامة على الوظيفة للحصول على إرشادات إضافية حول تكوين الفهرس وأمثلة إدراج البيانات وعمليات البحث الدلالي.

جرب Managed Milvus مجاناً

Zilliz Cloud خالي من المتاعب، ويعمل بواسطة Milvus ويعمل بسرعة 10 أضعاف.

ابدأ
التعليقات

هل كانت هذه الصفحة مفيدة؟