مصنف سيليكون فلو 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:
المعلمة |
مطلوبة؟ |
الوصف |
القيمة / مثال |
|---|---|---|---|
|
نعم |
يجب ضبطها على |
|
|
نعم |
مزود خدمة النموذج المراد استخدامه لإعادة الترتيب. |
|
|
نعم |
نموذج إعادة ترتيب نموذج SiliconFlow لاستخدامه من النماذج المدعومة على منصة SiliconFlow. للحصول على قائمة نماذج إعادة الترتيب المتاحة، راجع وثائق SiliconFlow. |
|
|
نعم |
قائمة سلاسل الاستعلامات المستخدمة من قبل نموذج إعادة الترتيب لحساب درجات الملاءمة. يجب أن يتطابق عدد سلاسل الاستعلامات مع عدد الاستعلامات في عملية البحث بالضبط (حتى عند استخدام ناقلات الاستعلام بدلاً من النص)، وإلا سيتم الإبلاغ عن خطأ. |
["استعلام البحث"] |
|
لا |
نظرًا لأن خدمات النماذج قد لا تعالج جميع البيانات في وقت واحد، فإن هذا يضبط حجم الدُفعات للوصول إلى خدمة النماذج في طلبات متعددة. |
|
|
لا |
الحد الأقصى لعدد القطع التي تم إنشاؤها من داخل المستند. يتم تقسيم المستندات الطويلة إلى أجزاء متعددة لحسابها، ويتم أخذ أعلى درجة من بين الأجزاء كدرجة المستند. مدعومة فقط من قبل نماذج محددة: |
|
|
لا يوجد |
عدد الرموز المتداخلة بين الأجزاء المتجاورة عند تقسيم المستندات إلى أجزاء. يضمن ذلك الاستمرارية عبر حدود القطع لفهم دلالي أفضل. مدعومة فقط من قبل نماذج محددة: |
|
|
لا يوجد |
بيانات اعتماد المصادقة للوصول إلى خدمات واجهة برمجة تطبيقات SiliconFlow. إذا لم يتم تحديدها، سيبحث النظام عن متغير البيئة |
"مفتاحك-سيليكون فلو-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