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