كوهيرCompatible with Milvus 2.6.x

يصف هذا الموضوع كيفية تكوين واستخدام دالات تضمين Cohere في ميلفوس.

اختيار نموذج التضمين

يدعم Milvus نماذج التضمين المقدمة من Cohere. فيما يلي نماذج التضمين المتاحة حاليًا للرجوع إليها سريعًا:

اسم النموذج

الأبعاد

الحد الأقصى للرموز

الوصف

تضمين-إنجليزي-ف3.0

1,024

512

نموذج يسمح بتصنيف النص أو تحويله إلى تضمينات. الإنجليزية فقط.

تضمين-متعدد اللغات-v3.0

1,024

512

يوفر دعماً للتصنيف والتضمين متعدد اللغات. انظر اللغات المدعومة هنا.

تضمين-إنجليزي-إنجليزي-لايت-v3.0

384

512

نسخة أصغر وأسرع من embed-english-v3.0. بنفس القدرة تقريباً، ولكن أسرع بكثير. الإنجليزية فقط.

تضمين-متعدد اللغات-لايت-v3.0

384

512

نسخة أصغر وأسرع من embed-multilingual-v3.0. بنفس القدرة تقريباً، ولكن أسرع بكثير. يدعم لغات متعددة.

embed-english-v2.0

4,096

512

نموذج تضمينات أقدم يسمح بتصنيف النص أو تحويله إلى تضمينات. الإنجليزية فقط.

تضمين-إنجليزي-إنجليزي-لايت-v2.0

1,024

512

نسخة أصغر وأسرع من embed-english-v2.0. بنفس القدرة تقريباً، لكن أسرع بكثير. الإنجليزية فقط.

تضمين متعدد اللغات-v2.0

768

256

يوفر دعم التصنيف والتضمين متعدد اللغات. انظر اللغات المدعومة هنا.

للحصول على التفاصيل، راجع نماذج التضمين الخاصة بـ Cohere.

تكوين بيانات الاعتماد

يجب أن يعرف Milvus مفتاح Cohere API الخاص بك قبل أن يتمكن من طلب التضمينات. يوفر ميلفوس طريقتين لتكوين بيانات الاعتماد:

  • ملف التكوين (موصى به): قم بتخزين مفتاح واجهة برمجة التطبيقات في milvus.yaml بحيث تلتقطه كل إعادة تشغيل وعقدة تلقائيًا.

  • متغيرات البيئة: أدخل المفتاح في وقت النشر - مثالي لـ Docker Compose.

اختر إحدى الطريقتين أدناه - من الأسهل الحفاظ على ملف التهيئة على الأجهزة العارية والأجهزة الافتراضية، بينما يناسب مسار env-var سير عمل الحاوية.

إذا كان مفتاح واجهة برمجة التطبيقات لنفس الموفر موجودًا في كل من ملف التكوين ومتغير البيئة، يستخدم Milvus دائمًا القيمة في milvus.yaml ويتجاهل متغير البيئة.

احتفظ بمفاتيح واجهة برمجة التطبيقات الخاصة بك في milvus.yaml ؛ يقرأها Milvus عند بدء التشغيل ويتجاوز أي متغير بيئة لنفس الموفر.

  1. **أعلن مفاتيحك تحت credential:

    يمكنك إدراج مفتاح واحد أو أكثر من مفاتيح واجهة برمجة التطبيقات - أعطِ كل مفتاح تسمية تخترعها وستشير إليها لاحقًا.

    # milvus.yaml
    credential:
      apikey_dev:            # dev environment
        apikey: <YOUR_DEV_KEY>
      apikey_prod:           # production environment
        apikey: <YOUR_PROD_KEY>    
    

    وضع مفاتيح واجهة برمجة التطبيقات هنا يجعلها ثابتة عند إعادة التشغيل ويتيح لك تبديل المفاتيح بمجرد تغيير التسمية.

  2. أخبر ميلفوس بالمفتاح الذي سيستخدمه لاستدعاءات OpenAI

    في نفس الملف، وجّه موفر Cohere إلى التسمية التي تريده أن يستخدمها.

    function:
      textEmbedding:
        providers:
          cohere:
            credential: apikey_dev      # ← choose any label you defined above
            # url: https://api.cohere.com/v2/embed   # (optional) custom url
    

    هذا يربط مفتاحًا محددًا لكل طلب يرسله ميلفوس إلى نقطة نهاية تضمينات Cohere.

الخيار 2: متغير البيئة

استخدم هذه الطريقة عندما تقوم بتشغيل Milvus مع Docker Compose وتفضل الاحتفاظ بالأسرار خارج الملفات والصور.

يعود Milvus إلى متغير البيئة فقط إذا لم يتم العثور على مفتاح للموفر في milvus.yaml.

المتغير

مطلوب

الوصف

MILVUSAI_COHERE_API_KEY

نعم

مفتاح Cohere API الصالح الخاص بك.

في ملف docker-compose.yaml الخاص بك، قم بتعيين متغير البيئة MILVUSAI_COHERE_API_KEY.

# docker-compose.yaml (standalone service section)
standalone:
  # ... other configurations ...
  environment:
    # ... other environment variables ...
    # Set the environment variable pointing to the OpenAI API key inside the container
    MILVUSAI_COHERE_API_KEY: <MILVUSAI_COHERE_API_KEY>

تقوم كتلة environment: بحقن المفتاح فقط في حاوية Milvus، تاركةً نظام التشغيل المضيف الخاص بك دون تغيير. لمزيد من التفاصيل، راجع تكوين Milvus مع Docker Compose.

استخدام وظيفة التضمين

بمجرد تكوين بيانات الاعتماد، اتبع هذه الخطوات لتعريف دوال التضمين واستخدامها.

الخطوة 1: تحديد حقول المخطط

لاستخدام دالة التضمين، قم بإنشاء مجموعة بمخطط محدد. يجب أن يتضمن هذا المخطط ثلاثة حقول ضرورية على الأقل:

  • الحقل الأساسي الذي يحدد بشكل فريد كل كيان في المجموعة.

  • حقل قياسي يخزن البيانات الأولية المراد تضمينها.

  • حقل متجه محجوز لتخزين التضمينات المتجهة التي ستقوم الدالة بإنشائها للحقل القياسي.

يحدد المثال التالي مخططًا يحتوي على حقل قياسي واحد "document" لتخزين البيانات النصية وحقل متجه واحد "dense" لتخزين التضمينات التي سيتم إنشاؤها بواسطة الوحدة النمطية للدالة. تذكر تعيين البعد المتجه (dim) لمطابقة مخرجات نموذج التضمين الذي اخترته.

from pymilvus import MilvusClient, DataType, Function, FunctionType

# Initialize Milvus client
client = MilvusClient(
    uri="http://localhost:19530",
)

# Create a new schema for the collection
schema = client.create_schema()

# Add primary field "id"
schema.add_field("id", DataType.INT64, is_primary=True, auto_id=False)

# Add scalar field "document" for storing textual data
schema.add_field("document", DataType.VARCHAR, max_length=9000)

# Add vector field "dense" for storing embeddings.
# IMPORTANT: Set dim to match the exact output dimension of the embedding model.
schema.add_field("dense", DataType.FLOAT_VECTOR, dim=1024)

الخطوة 2: إضافة دالة التضمين إلى المخطط

تقوم الوحدة النمطية الدالة في ميلفوس تلقائيًا بتحويل البيانات الأولية المخزنة في حقل قياسي إلى تضمينات وتخزينها في حقل المتجه المحدد صراحة.

يضيف المثال أدناه وحدة الدالة (cohere_func) التي تقوم بتحويل الحقل القياسي "document" إلى تضمينات، وتخزين المتجهات الناتجة في الحقل المتجه "dense" المحدد مسبقًا.

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

# Define embedding function specifically for embedding model provider
text_embedding_function = Function(
    name="cohere_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 field(s) for storing embeddings
    params={                                            # Provider-specific embedding parameters (function-level)
        "provider": "cohere",                           # Must be set to "cohere"
        "model_name": "embed-english-v3.0",             # Specifies the embedding model to use
        # Optional parameters:
        # "credential": "apikey_dev",               # Optional: Credential label specified in milvus.yaml
        # "url": "https://api.cohere.com/v2/embed",     # Defaults to the official endpoint if omitted
        # "truncate": "NONE",                           # Specifies how the API will handle inputs longer than the maximum token length.
    }
)

# Add the configured embedding function to your existing collection schema
schema.add_function(text_embedding_function)

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

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