Gambaran Umum Pemeringkat ModelCompatible with Milvus 2.6.x
Pencarian vektor tradisional memberi peringkat hasil murni berdasarkan kemiripan matematis-seberapa dekat vektor cocok dalam ruang dimensi tinggi. Meskipun efisien, pendekatan ini sering kali melewatkan relevansi semantik yang sebenarnya. Pertimbangkan untuk mencari "praktik terbaik untuk pengoptimalan basis data": Anda mungkin menerima dokumen dengan kemiripan vektor yang tinggi yang sering menyebutkan istilah-istilah ini, tetapi tidak benar-benar memberikan strategi pengoptimalan yang dapat ditindaklanjuti.
Model Ranker mengubah pencarian Milvus dengan mengintegrasikan model bahasa tingkat lanjut yang memahami hubungan semantik antara kueri dan dokumen. Alih-alih hanya mengandalkan kemiripan vektor, model ini mengevaluasi makna dan konteks konten untuk memberikan hasil yang lebih cerdas dan relevan.
Batasan
Pemeringkat model tidak dapat digunakan dengan pencarian pengelompokan.
Bidang yang digunakan untuk pemeringkatan model harus berupa teks (
VARCHAR).Setiap pemeringkat model hanya dapat menggunakan satu bidang
VARCHARdalam satu waktu untuk evaluasi.
Bagaimana cara kerjanya
Pemeringkat model mengintegrasikan kemampuan pemahaman model bahasa ke dalam proses pencarian Milvus melalui alur kerja yang terdefinisi dengan baik:
Gambaran Umum Pemeringkat Model
Kueri awal: Aplikasi Anda mengirimkan kueri ke Milvus
Pencarian vektor: Milvus melakukan pencarian vektor standar untuk mengidentifikasi dokumen kandidat
Pengambilan kandidat: Sistem mengidentifikasi kumpulan awal dokumen kandidat berdasarkan kesamaan vektor
Evaluasi model: Fungsi Pemeringkat Model memproses pasangan kueri-dokumen:
Mengirimkan kueri asli dan dokumen kandidat ke layanan model eksternal
Model bahasa mengevaluasi relevansi semantik antara kueri dan setiap dokumen
Setiap dokumen menerima skor relevansi berdasarkan pemahaman semantik
Pemeringkatan ulang yang cerdas: Dokumen disusun ulang berdasarkan skor relevansi yang dihasilkan model
Hasil yang disempurnakan: Aplikasi Anda menerima hasil yang diberi peringkat berdasarkan relevansi semantik, bukan hanya kesamaan vektor
Pilih penyedia model untuk kebutuhan Anda
Milvus mendukung penyedia layanan model berikut untuk pemeringkatan ulang, masing-masing dengan karakteristik yang berbeda:
Penyedia |
Terbaik untuk |
Karakteristik |
Contoh Kasus Penggunaan |
|---|---|---|---|
vLLM |
Aplikasi kompleks yang membutuhkan pemahaman dan penyesuaian semantik yang mendalam |
|
Platform penelitian hukum yang menerapkan model khusus domain yang memahami terminologi hukum dan hubungan hukum kasus |
TEI |
Implementasi cepat dengan penggunaan sumber daya yang efisien |
|
Sistem manajemen konten yang membutuhkan kemampuan pemeringkatan ulang yang efisien dengan persyaratan standar |
Cohere |
Aplikasi perusahaan yang memprioritaskan keandalan dan kemudahan integrasi |
|
Platform e-commerce yang membutuhkan pencarian dengan ketersediaan tinggi dengan kinerja API yang konsisten dan katalog produk multibahasa |
Voyage AI |
Aplikasi RAG dengan persyaratan kinerja dan konteks yang spesifik |
|
Basis data penelitian dengan panjang dokumen yang bervariasi yang membutuhkan kontrol kinerja yang disesuaikan dengan baik dan pemahaman semantik khusus |
SiliconFlow |
Aplikasi yang memproses dokumen panjang dengan prioritas efektivitas biaya |
|
Sistem pencarian dokumentasi teknis yang memproses manual dan dokumen panjang yang membutuhkan segmentasi cerdas dan kontrol tumpang tindih |
Untuk informasi rinci tentang implementasi setiap layanan model, lihat dokumentasi khusus:
Implementasi
Sebelum mengimplementasikan Model Ranker, pastikan Anda memiliki:
Koleksi Milvus dengan bidang
VARCHARyang berisi teks yang akan diperingkatLayanan model eksternal yang sedang berjalan yang dapat diakses oleh instance Milvus Anda
Konektivitas jaringan yang sesuai antara Milvus dan layanan model yang Anda pilih
Pemeringkat model terintegrasi secara mulus dengan pencarian vektor standar dan operasi pencarian hibrida. Implementasinya melibatkan pembuatan objek Function yang mendefinisikan konfigurasi pemeringkatan Anda dan meneruskannya ke operasi pencarian.
Membuat pemeringkat model
Untuk mengimplementasikan pemeringkatan model, pertama-tama tentukan objek Function dengan konfigurasi yang sesuai. Dalam contoh ini, kita menggunakan TEI sebagai penyedia layanan:
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 model ranker function
model_ranker = Function(
name="semantic_ranker", # Function identifier
input_field_names=["document"], # VARCHAR field to use for reranking
function_type=FunctionType.RERANK, # Must be set to RERANK
params={
"reranker": "model", # Specify model reranker. Must be "model"
"provider": "tei", # Choose provider: "tei", "vllm", etc.
"queries": ["machine learning for time series"], # Query text
"endpoint": "http://model-service:8080", # Model service endpoint
# "maxBatch": 32 # Optional: batch size for processing
}
)
import io.milvus.v2.client.ConnectConfig;
import io.milvus.v2.client.MilvusClientV2;
import io.milvus.v2.service.vector.request.ranker.ModelRanker;
MilvusClientV2 client = new MilvusClientV2(ConnectConfig.builder()
.uri("http://localhost:19530")
.build());
ModelRanker ranker = ModelRanker.builder()
.name("semantic_ranker")
.inputFieldNames(Collections.singletonList("document"))
.provider("tei")
.queries(Collections.singletonList("machine learning for time series"))
.endpoint("http://model-service:8080")
.build();
// nodejs
// go
# restful
Parameter |
Diperlukan? |
Deskripsi |
Nilai / Contoh |
|---|---|---|---|
|
Ya |
Pengenal untuk fungsi Anda yang digunakan saat menjalankan pencarian. |
|
|
Ya |
Nama bidang teks yang akan digunakan untuk pemeringkatan ulang. Harus berupa bidang tipe |
|
|
Ya |
Menentukan jenis fungsi yang sedang dibuat. Harus diatur ke |
|
|
Ya |
Kamus yang berisi konfigurasi untuk fungsi pemeringkatan berbasis model. Parameter (kunci) yang tersedia bervariasi tergantung pada penyedia layanan. |
|
|
Ya |
Harus diatur ke |
|
|
Ya |
Penyedia layanan model yang akan digunakan untuk pemeringkatan ulang. |
|
|
Ya |
Daftar string kueri yang digunakan oleh model pemeringkatan ulang untuk menghitung skor relevansi. Jumlah string kueri harus sama persis dengan jumlah kueri dalam operasi pencarian Anda (bahkan saat menggunakan vektor kueri, bukan teks), jika tidak, kesalahan akan dilaporkan. |
|
|
Ya |
URL layanan model. |
|
|
Tidak |
Jumlah maksimum dokumen yang akan diproses dalam satu batch. Nilai yang lebih besar akan meningkatkan hasil tetapi membutuhkan lebih banyak memori. |
|
Menerapkan ke pencarian vektor standar
Setelah mendefinisikan pemeringkat model Anda, Anda dapat menerapkannya selama operasi pencarian dengan meneruskannya ke parameter pemeringkat:
# Use the model ranker in standard vector search
results = client.search(
collection_name,
data=[your_query_vector], # Number of query vectors must match that specified in model_ranker.params["queries"]
anns_field="vector_field",
limit=10,
output_fields=["document"], # Include the text field in outputs
ranker=model_ranker, # Apply the model ranker here
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(COLLECTION_NAME)
.data(Collections.singletonList(new EmbeddedText("machine learning for time series")))
.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