مصنف vLLMCompatible with Milvus 2.6.x

يعمل مصنف vLLM على الاستفادة من إطار عمل استدلال vLLM لتعزيز ملاءمة البحث من خلال إعادة الترتيب الدلالي. وهو يمثل نهجًا متقدمًا لترتيب نتائج البحث يتجاوز التشابه المتجه التقليدي.

يعد vLLLM Ranker ذا قيمة خاصة للتطبيقات التي تكون فيها الدقة والسياق أمرًا بالغ الأهمية، مثل:

  • البحث في الوثائق التقنية التي تتطلب فهماً عميقاً للمفاهيم

  • قواعد البيانات البحثية التي تفوق فيها العلاقات الدلالية مطابقة الكلمات الرئيسية

  • أنظمة دعم العملاء التي تحتاج إلى مطابقة مشاكل المستخدم مع الحلول ذات الصلة

  • البحث في التجارة الإلكترونية التي يجب أن تفهم سمات المنتج ونية المستخدم.

المتطلبات الأساسية

قبل تطبيق vLLM Ranker في Milvus، تأكد من أن لديك

  • مجموعة Milvus مع حقل VARCHAR يحتوي على النص المطلوب إعادة تصنيفه

  • خدمة vLLM قيد التشغيل مع إمكانات إعادة التصنيف. للحصول على إرشادات مفصلة حول إعداد خدمة vLLLM، راجع وثائق vLLM الرسمية. للتحقق من توفر خدمة vLLM:

    # Replace YOUR_VLLM_ENDPOINT_URL with the actual URL (e.g., http://<service-ip>:<port>/v1/rerank)
    # Replace 'BAAI/bge-reranker-base' if you deployed a different model
    
    curl -X 'POST' \
      'YOUR_VLLM_ENDPOINT_URL' \
      -H 'accept: application/json' \
      -H 'Content-Type: application/json' \
      -d '{
      "model": "BAAI/bge-reranker-base",
      "query": "What is the capital of France?",
      "documents": [
        "The capital of Brazil is Brasilia.",
        "The capital of France is Paris.",
        "Horses and cows are both animals"
      ]
    }'
    

    يجب أن تُرجع الاستجابة الناجحة المستندات مرتبة حسب درجات الملاءمة، على غرار استجابة واجهة برمجة التطبيقات OpenAI rerank API.

    ارجع إلى وثائق خادم vLLM OpenAI المتوافق مع vLLM لمزيد من الوسيطات والخيارات الخاصة بالخادم.

إنشاء دالة مصنف vLLM

لاستخدام مصنف vLLM vLLM في تطبيق Milvus الخاص بك، قم بإنشاء كائن دالة يحدد كيفية عمل إعادة الترتيب. سيتم تمرير هذه الدالة إلى عمليات بحث Milvus لتحسين ترتيب النتائج.

from pymilvus import MilvusClient, Function, FunctionType

# Connect to your Milvus server
client = MilvusClient(
    uri="http://localhost:19530"  # Replace with your Milvus server URI
)

# Create a vLLM Ranker function
vllm_ranker = Function(
    name="vllm_semantic_ranker",    # Choose a descriptive name
    input_field_names=["document"],  # Field containing text to rerank
    function_type=FunctionType.RERANK,  # Must be RERANK
    params={
        "reranker": "model",        # Specifies model-based reranking
        "provider": "vllm",         # Specifies vLLM service
        "queries": ["renewable energy developments"],  # Query text
        "endpoint": "http://localhost:8080",  # vLLM service address
        "max_client_batch_size": 32,              # Optional: batch size
        "truncate_prompt_tokens": 256,  # Optional: Use last 256 tokens
    }
)
import io.milvus.v2.client.ConnectConfig;
import io.milvus.v2.client.MilvusClientV2;
import io.milvus.common.clientenum.FunctionType;
import io.milvus.v2.service.collection.request.CreateCollectionReq;

MilvusClientV2 client = new MilvusClientV2(ConnectConfig.builder()
        .uri("http://localhost:19530")
        .build());

CreateCollectionReq.Function ranker = CreateCollectionReq.Function.builder()
                       .functionType(FunctionType.RERANK)
                       .name("vllm_semantic_ranker")
                       .inputFieldNames(Collections.singletonList("document"))
                       .param("reranker", "model")
                       .param("provider", "vllm")
                       .param("queries", "[\"renewable energy developments\"]")
                       .param("endpoint", "http://localhost:8080")
                       .param("max_client_batch_size", "32")
                       .param("truncate_prompt_tokens", "256")
                       .build();
// nodejs
// go
# restful

معلمات خاصة بمصنّف vLLM

المعلمات التالية خاصة بمصنّف vLLM:

المعلمة

مطلوبة؟

الوصف

القيمة / مثال

reranker

نعم

يجب ضبطها على "model" لتمكين إعادة ترتيب النماذج.

"model"

provider

نعم

مزود خدمة النموذج المراد استخدامه لإعادة ترتيب النماذج.

"vllm"

queries

نعم

قائمة بسلاسل الاستعلامات التي يستخدمها نموذج إعادة الترتيب لحساب درجات الملاءمة. يجب أن يتطابق عدد سلاسل الاستعلامات مع عدد الاستعلامات في عملية البحث تمامًا (حتى عند استخدام ناقلات الاستعلامات بدلاً من النص)، وإلا سيتم الإبلاغ عن خطأ.

["استعلام البحث"]

endpoint

نعم

عنوان خدمة vLLM الخاص بك

"http://localhost:8080"

max_client_batch_size

لا

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

32 (افتراضي)

truncate_prompt_tokens

لا

إذا تم تعيينه إلى عدد صحيح فسيستخدم فقط آخر k من المطالبة (أي الاقتطاع الأيسر). افتراضي إلى لا شيء (أي لا اقتطاع).

256

للحصول على معلمات عامة مشتركة بين جميع مصنفات النماذج (على سبيل المثال، provider ، queries)، راجع إنشاء مصنف نموذج.

لتطبيق vLLM Ranker على بحث متجه قياسي:

# Execute search with vLLM reranking
results = client.search(
    collection_name="your_collection",
    data=[your_query_vector],  # Replace with your query vector
    anns_field="dense_vector",                   # Vector field to search
    limit=5,                                     # Number of results to return
    output_fields=["document"],                  # Include text field for reranking
    ranker=vllm_ranker,                         # Apply vLLM reranking
    consistency_level="Bounded"
)
import io.milvus.v2.common.ConsistencyLevel;
import io.milvus.v2.service.vector.request.SearchReq;
import io.milvus.v2.service.vector.response.SearchResp;
import io.milvus.v2.service.vector.request.data.EmbeddedText;

SearchReq searchReq = SearchReq.builder()
        .collectionName("your_collection")
        .data(Arrays.asList(new EmbeddedText("AI Research Progress"), new EmbeddedText("What is AI")))
        .annsField("vector_field")
        .limit(10)
        .outputFields(Collections.singletonList("document"))
        .functionScore(FunctionScore.builder()
                .addFunction(ranker)
                .build())
        .consistencyLevel(ConsistencyLevel.BOUNDED)
        .build();
SearchResp searchResp = client.search(searchReq);
// nodejs
// go
# restful

جرب Managed Milvus مجاناً

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

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

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