Pemeringkat SiliconFlowCompatible with Milvus 2.6.x

SiliconFlow Ranker memanfaatkan model pemeringkatan ulang SiliconFlow yang komprehensif untuk meningkatkan relevansi pencarian melalui pemeringkatan ulang semantik. Ini menyediakan kemampuan pemotongan dokumen yang fleksibel dan mendukung berbagai model pemeringkatan khusus dari berbagai penyedia.

SiliconFlow Ranker sangat berharga untuk aplikasi yang membutuhkan:

  • Pemotongan dokumen tingkat lanjut dengan tumpang tindih yang dapat dikonfigurasi untuk menangani dokumen yang panjang

  • Akses ke berbagai model pemeringkatan ulang termasuk seri BAAI / bge-reranker dan model khusus lainnya

  • Penilaian berbasis potongan yang fleksibel di mana potongan dengan nilai tertinggi mewakili nilai dokumen

  • Pemeringkatan ulang yang hemat biaya dengan dukungan untuk varian model standar dan pro

Prasyarat

Sebelum mengimplementasikan SiliconFlow Ranker di Milvus, pastikan Anda memiliki:

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

  • Kunci API SiliconFlow yang valid dengan akses ke model perangkingan ulang. Mendaftarlah di platform SiliconFlow untuk mendapatkan kredensial API Anda. Anda dapat memilih salah satu:

    • Mengatur variabel lingkungan SILICONFLOW_API_KEY, atau

    • Tentukan kunci API secara langsung dalam konfigurasi pemeringkat

Membuat fungsi pemeringkat SiliconFlow

Untuk menggunakan SiliconFlow Ranker di aplikasi Milvus Anda, buat objek Function yang menentukan bagaimana pemeringkatan 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 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

Parameter khusus pemeringkat SiliconFlow

Parameter berikut ini khusus untuk pemeringkat SiliconFlow:

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.

"siliconflow"

model_name

Ya

Model pemeringkatan ulang SiliconFlow yang akan digunakan dari model yang didukung pada platform SiliconFlow.

Untuk daftar model peringkat ulang yang tersedia, lihat dokumentasi SiliconFlow.

"BAAI/bge-reranker-v2-m3"

queries

Ya

Daftar string kueri yang digunakan oleh model perankingan 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"]

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.

128 (default)

max_chunks_per_doc

Tidak

Jumlah maksimum potongan yang dihasilkan dari dalam dokumen. Dokumen yang panjang dibagi menjadi beberapa bagian untuk dihitung, dan nilai tertinggi di antara bagian tersebut diambil sebagai nilai dokumen. Hanya didukung oleh model tertentu: BAAI/bge-reranker-v2-m3, Pro/BAAI/bge-reranker-v2-m3, dan netease-youdao/bce-reranker-base_v1.

5, 10

overlap_tokens

Tidak

Jumlah token yang tumpang tindih di antara potongan-potongan yang berdekatan saat dokumen dipotong-potong. Hal ini memastikan kesinambungan di seluruh batas potongan untuk pemahaman semantik yang lebih baik. Hanya didukung oleh model tertentu: BAAI/bge-reranker-v2-m3, Pro/BAAI/bge-reranker-v2-m3, dan netease-youdao/bce-reranker-base_v1.

50

credential

Tidak

Kredensial otentikasi untuk mengakses layanan API SiliconFlow. Jika tidak ditentukan, sistem akan mencari variabel lingkungan SILICONFLOW_API_KEY.

"your-siliconflow-api-key"

Dukungan fitur khusus model: Parameter max_chunks_per_doc dan overlap_tokens hanya didukung oleh model tertentu. Saat menggunakan model lain, parameter ini akan diabaikan.

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

Untuk menerapkan SiliconFlow Ranker ke pencarian vektor standar:

# 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

Coba Milvus yang Dikelola secara Gratis

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

Mulai
Umpan balik

Apakah halaman ini bermanfaat?