Pemeringkat TEICompatible with Milvus 2.6.x

TEI Ranker memanfaatkan layanan Text Embedding Inference (TEI ) dari Hugging Face untuk meningkatkan relevansi penelusuran melalui pemeringkatan semantik. Ini merupakan pendekatan canggih untuk pengurutan hasil pencarian yang melampaui kemiripan vektor tradisional.

Prasyarat

Sebelum menerapkan TEI Ranker di Milvus, pastikan Anda memiliki:

  • Koleksi Milvus dengan bidang VARCHAR yang berisi teks yang akan diperingkat ulang

  • Layanan TEI yang sedang berjalan dengan kemampuan pemeringkatan ulang. Untuk petunjuk terperinci tentang cara menyiapkan layanan TEI, lihat dokumentasi resmi TEI.

Membuat fungsi pemeringkat TEI

Untuk menggunakan TEI Ranker di aplikasi Milvus Anda, buatlah sebuah objek Function yang menentukan bagaimana pemeringkatan ulang harus beroperasi. Fungsi ini akan diteruskan ke operasi pencarian Milvus untuk meningkatkan peringkat hasil.

from pymilvus import MilvusClient, Function, FunctionType

# Connect to your Milvus server
client = MilvusClient(
    uri="http://localhost:19530"  # Replace with your Milvus server URI
)

# Configure TEI Ranker
tei_ranker = Function(
    name="tei_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": "tei",                 # Specifies TEI as the service provider
        "queries": ["renewable energy developments"],  # Query text for relevance evaluation
        "endpoint": "http://localhost:8080",  # Your TEI service URL
        "max_client_batch_size": 32,                    # Optional: batch size for processing (default: 32)
        "truncate": True,                # Optional: Truncate the inputs that are longer than the maximum supported size
        "truncation_direction": "Right",    # Optional: Direction to truncate the inputs
    }
)
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(NAME_FIELD))
        .param("reranker", "model")
        .param("provider", "tei")
        .param("queries", "[\"renewable energy developments\"]")
        .param("endpoint", "http://localhost:8080")
        .param("max_client_batch_size", "32")
        .param("truncate", "true")
        .param("truncation_direction", "Right")
        .build();
searchWithRanker(scientists, ranker);
// nodejs
// go
# restful

Parameter khusus pemeringkat TEI

Parameter berikut ini khusus untuk pemeringkat TEI:

Parameter

Diperlukan?

Deskripsi

Nilai / Contoh

reranker

Ya

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

"model"

provider

Ya

Penyedia layanan model yang akan digunakan untuk pemeringkatan ulang.

"tei"

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.

["kueri penelusuran"]

endpoint

Ya

URL layanan TEI Anda.

"http://localhost:8080"

max_client_batch_size

Tidak

Karena layanan model tidak dapat memproses semua data sekaligus, ini menetapkan ukuran batch untuk mengakses layanan model dalam beberapa permintaan.

32 (default)

truncate

Tidak

Apakah akan memotong input yang melebihi panjang urutan maksimal. Jika False, input yang panjang akan menimbulkan kesalahan.

True atau False

truncation_direction

Tidak

Arah untuk memotong ketika input terlalu panjang:

  • "Right" (default): Token akan dihapus dari akhir urutan sampai ukuran maksimum yang didukung cocok.

  • "Left": Token dihapus dari awal urutan.

"Right" atau "Left"

Untuk parameter umum yang digunakan bersama di semua pemeringkat model (misalnya, provider, queries), lihat Membuat pemeringkat model.

Untuk menerapkan TEI Ranker ke pencarian vektor standar:

# 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=tei_ranker,                         # Apply tei 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

Coba Milvus yang Dikelola secara Gratis

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

Mulai
Umpan balik

Apakah halaman ini bermanfaat?