مصنف TEI RankerCompatible with Milvus 2.6.x

يستفيد مُصنِّف TEI Ranker من خدمة الاستدلال على تضمين النص (TEI) من Hugging Face لتعزيز ملاءمة البحث من خلال إعادة الترتيب الدلالي. وهو يمثل نهجًا متقدمًا لترتيب نتائج البحث يتجاوز التشابه المتجه التقليدي.

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

قبل تنفيذ TEI Ranker في Milvus، تأكد من أن لديك:

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

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

إنشاء وظيفة مصنف TEI

لاستخدام مصنف TEI Ranker في تطبيق 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
)

# Configure TEI Ranker
tei_ranker = Function(
    name="tei_semantic_ranker",            # Unique identifier for your ranker
    input_field_names=["document"],        # VARCHAR field containing text to rerank
    function_type=FunctionType.RERANK,     # Must be RERANK for reranking functions
    params={
        "reranker": "model",               # Enables model-based reranking
        "provider": "tei",                 # Specifies TEI as the service provider
        "queries": ["renewable energy developments"],  # Query text for relevance evaluation
        "endpoint": "http://localhost:8080",  # Your TEI service URL
        "max_client_batch_size": 32,                    # Optional: batch size for processing (default: 32)
        "truncate": True,                # Optional: Truncate the inputs that are longer than the maximum supported size
        "truncation_direction": "Right",    # Optional: Direction to truncate the inputs
    }
)
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(NAME_FIELD))
        .param("reranker", "model")
        .param("provider", "tei")
        .param("queries", "[\"renewable energy developments\"]")
        .param("endpoint", "http://localhost:8080")
        .param("max_client_batch_size", "32")
        .param("truncate", "true")
        .param("truncation_direction", "Right")
        .build();
searchWithRanker(scientists, ranker);
// nodejs
// go
# restful

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

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

المعلمة

مطلوبة؟

الوصف

القيمة / مثال

reranker

نعم

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

"model"

provider

نعم

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

"tei"

queries

نعم

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

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

endpoint

نعم

عنوان URL لخدمة TEI الخاصة بك.

"http://localhost:8080"

max_client_batch_size

لا

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

32 (افتراضي)

truncate

لا

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

True أو False

truncation_direction

لا

اتجاه الاقتطاع من عندما تكون المدخلات طويلة جدًا:

  • "Right" (افتراضي): تتم إزالة الرموز من نهاية التسلسل حتى يتم مطابقة الحد الأقصى للحجم المدعوم.

  • "Left": تتم إزالة الرموز من بداية التسلسل.

"Right" أو "Left"

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

لتطبيق مصنف TEI 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=tei_ranker,                         # Apply tei 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 أضعاف.

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

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