مصنف سيليكون فلو SiliconFlowCompatible with Milvus 2.6.x

يستفيد برنامج SiliconFlow Ranker من نماذج إعادة الترتيب الشاملة الخاصة ب SiliconFlow لتعزيز ملاءمة البحث من خلال إعادة الترتيب الدلالي. وهو يوفر إمكانات مرنة لتقطيع المستندات ويدعم مجموعة واسعة من نماذج إعادة الترتيب المتخصصة من مختلف المزودين.

يعتبر برنامج SiliconFlow Ranker ذا قيمة خاصة للتطبيقات التي تتطلب:

  • تقطيع متقدم للمستندات مع تداخل قابل للتكوين لمعالجة المستندات الطويلة

  • الوصول إلى نماذج إعادة الترتيب المتنوعة بما في ذلك سلسلة BAAI/Bge-reranker ونماذج متخصصة أخرى

  • تسجيل مرن قائم على القطع حيث تمثل القطعة الأعلى نقاطًا درجة المستند

  • إعادة ترتيب فعالة من حيث التكلفة مع دعم كل من النماذج القياسية والنماذج الاحترافية

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

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

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

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

    • تعيين متغير البيئة SILICONFLOW_API_KEY ، أو

    • تحديد مفتاح واجهة برمجة التطبيقات (API) مباشرةً في تكوين المُصنِّف

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

لاستخدام مصنف SiliconFlow 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 SiliconFlow Ranker
siliconflow_ranker = Function(
    name="siliconflow_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": "siliconflow",          # Specifies SiliconFlow as the service provider
        "model_name": "BAAI/bge-reranker-v2-m3", # SiliconFlow reranking model to use
        "queries": ["renewable energy developments"], # Query text for relevance evaluation
        "max_client_batch_size": 128,       # Optional: batch size for model service requests (default: 128)
        "max_chunks_per_doc": 5,            # Optional: max chunks per document for supported models
        "overlap_tokens": 50,               # Optional: token overlap between chunks for supported models
        # "credential": "your-siliconflow-api-key" # Optional: if not set, uses SILICONFLOW_API_KEY env var
    }
)
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("siliconflow_semantic_ranker")
                       .inputFieldNames(Collections.singletonList("document"))
                       .param("reranker", "model")
                       .param("provider", "siliconflow")
                       .param("model_name", "BAAI/bge-reranker-v2-m3")
                       .param("queries", "[\"renewable energy developments\"]")
                       .param("endpoint", "http://localhost:8080")
                       .param("max_client_batch_size", "32")
                       .param("max_chunks_per_doc", "5")
                       .param("overlap_tokens", "50")
                       .build();
// nodejs
// go
# restful

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

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

المعلمة

مطلوبة؟

الوصف

القيمة / مثال

reranker

نعم

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

"model"

provider

نعم

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

"siliconflow"

model_name

نعم

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

للحصول على قائمة نماذج إعادة الترتيب المتاحة، راجع وثائق SiliconFlow.

"BAAI/bge-reranker-v2-m3"

queries

نعم

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

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

max_client_batch_size

لا

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

128 (افتراضي)

max_chunks_per_doc

لا

الحد الأقصى لعدد القطع التي تم إنشاؤها من داخل المستند. يتم تقسيم المستندات الطويلة إلى أجزاء متعددة لحسابها، ويتم أخذ أعلى درجة من بين الأجزاء كدرجة المستند. مدعومة فقط من قبل نماذج محددة: BAAI/bge-reranker-v2-m3 ، Pro/BAAI/bge-reranker-v2-m3 ، و netease-youdao/bce-reranker-base_v1.

5, 10

overlap_tokens

لا يوجد

عدد الرموز المتداخلة بين الأجزاء المتجاورة عند تقسيم المستندات إلى أجزاء. يضمن ذلك الاستمرارية عبر حدود القطع لفهم دلالي أفضل. مدعومة فقط من قبل نماذج محددة: BAAI/bge-reranker-v2-m3 ، Pro/BAAI/bge-reranker-v2-m3 ، و netease-youdao/bce-reranker-base_v1.

50

credential

لا يوجد

بيانات اعتماد المصادقة للوصول إلى خدمات واجهة برمجة تطبيقات SiliconFlow. إذا لم يتم تحديدها، سيبحث النظام عن متغير البيئة SILICONFLOW_API_KEY.

"مفتاحك-سيليكون فلو-API-مفتاح"

دعم الميزة الخاصة بالنموذج: المعلمات max_chunks_per_doc و overlap_tokens مدعومة فقط من قبل نماذج محددة. عند استخدام نماذج أخرى، سيتم تجاهل هذه المعلمات.

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

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

# Execute search with SiliconFlow 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=siliconflow_ranker,                  # Apply SiliconFlow 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 أضعاف.

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

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