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 VARCHAR dalam 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:

Model Ranker Overview Gambaran Umum Pemeringkat Model

  1. Kueri awal: Aplikasi Anda mengirimkan kueri ke Milvus

  2. Pencarian vektor: Milvus melakukan pencarian vektor standar untuk mengidentifikasi dokumen kandidat

  3. Pengambilan kandidat: Sistem mengidentifikasi kumpulan awal dokumen kandidat berdasarkan kesamaan vektor

  4. 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

  5. Pemeringkatan ulang yang cerdas: Dokumen disusun ulang berdasarkan skor relevansi yang dihasilkan model

  6. 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

  • Mendukung berbagai model bahasa besar

  • Opsi penerapan yang fleksibel

  • Persyaratan komputasi yang lebih tinggi

  • Potensi penyesuaian yang lebih besar

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

  • Layanan ringan yang dioptimalkan untuk operasi teks

  • Penerapan yang lebih mudah dengan kebutuhan sumber daya yang lebih rendah

  • Model pemeringkatan ulang yang telah dioptimalkan sebelumnya

  • Biaya overhead infrastruktur minimal

Sistem manajemen konten yang membutuhkan kemampuan pemeringkatan ulang yang efisien dengan persyaratan standar

Cohere

Aplikasi perusahaan yang memprioritaskan keandalan dan kemudahan integrasi

  • Keandalan dan skalabilitas tingkat perusahaan

  • Layanan terkelola tanpa pemeliharaan infrastruktur

  • Kemampuan pemeringkatan ulang multibahasa

  • Pembatasan tarif bawaan dan penanganan kesalahan

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

  • Model yang secara khusus dilatih untuk tugas pemeringkatan ulang

  • Kontrol pemotongan granular untuk panjang dokumen yang beragam

  • Inferensi yang dioptimalkan untuk beban kerja produksi

  • Berbagai varian model (rerank-2, rerank-lite, dll.)

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

  • Pemenggalan dokumen tingkat lanjut dengan tumpang tindih yang dapat dikonfigurasi

  • Penilaian berbasis potongan (potongan dengan nilai tertinggi mewakili dokumen)

  • Dukungan untuk beragam model pemeringkatan ulang

  • Hemat biaya dengan varian model standar dan pro

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 VARCHAR yang berisi teks yang akan diperingkat

  • Layanan 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

name

Ya

Pengenal untuk fungsi Anda yang digunakan saat menjalankan pencarian.

"semantic_ranker"

input_field_names

Ya

Nama bidang teks yang akan digunakan untuk pemeringkatan ulang.

Harus berupa bidang tipe VARCHAR.

["document"]

function_type

Ya

Menentukan jenis fungsi yang sedang dibuat.

Harus diatur ke RERANK untuk semua pemeringkat model.

FunctionType.RERANK

params

Ya

Kamus yang berisi konfigurasi untuk fungsi pemeringkatan berbasis model. Parameter (kunci) yang tersedia bervariasi tergantung pada penyedia layanan.

{...}

params.reranker

Ya

Harus diatur ke "model" untuk mengaktifkan pemeringkatan ulang model.

"model"

params.provider

Ya

Penyedia layanan model yang akan digunakan untuk pemeringkatan ulang.

"tei"

params.queries

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.

["search query"]

params.endpoint

Ya

URL layanan model.

"http://localhost:8080"

max_client_batch_size

Tidak

Jumlah maksimum dokumen yang akan diproses dalam satu batch. Nilai yang lebih besar akan meningkatkan hasil tetapi membutuhkan lebih banyak memori.

32 (default)

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

Coba Milvus yang Dikelola secara Gratis

Zilliz Cloud bebas masalah, didukung oleh Milvus dan 10x lebih cepat.

Mulai
Umpan balik

Apakah halaman ini bermanfaat?