Cohere Ranker
Cohere Ranker は、Cohere の rerank モデルを活用し、取得した候補にセマンティック reranking を適用することで結果の並び順を改善します。
取得関数や embedding 関数とは異なり、Cohere Ranker は 取得後のステップ として実行されます。クエリとドキュメントテキスト間のセマンティック関連性を評価し、それに応じて候補結果を再並び替えします。
Cohere Ranker が特に有用なのは、次のような場合です。
-
取得結果は関連しているが、並び順が最適ではない
-
vector distance だけではなく、セマンティック関連性がより重要である
-
多言語または長文テキストの reranking が必要である
始める前に
Cohere Ranker を使用する前に、次の前提条件を満たしていることを確認してください。
-
rerank モデルを選択する
rerank-english-v3.0など、使用する Cohere rerank モデルを決定します。選択したモデルによって、reranking 中にセマンティック関連性がどのように評価されるかが決まります。詳細は、Cohere 公式ドキュメント を参照してください。 -
Cohere と統合し、integration ID を取得する
Cohere Ranker を使用するには、まず Zilliz Cloud console で Cohere を model provider として統合する必要があります。詳細な手順については、Integrate with Model Providers を参照してください。
-
rerank 可能なテキストフィールドを含む collection schema を計画する
collection に、rerank 対象のテキストを含む
VARCHARフィールドが 1 つ含まれていることを確認してください。
Cohere Ranker を使用する
このセクションでは、検索時に Cohere Ranker を適用して取得結果を rerank する方法を示します。
Cohere Ranker は検索時に定義して適用するため、クエリごとに reranking を有効または無効にできます。
準備
次のセットアップでは、検索と reranking のための collection とサンプルデータを準備します。
サンプルデータを含む collection を準備する
from pymilvus import MilvusClient, DataType
client = MilvusClient(
uri="YOUR_ZILLIZ_CLOUD_URI",
token="YOUR_ZILLIZ_CLOUD_TOKEN",
)
collection_name = "cohere_rerank_demo"
# Define collection schema
schema = client.create_schema()
schema.add_field("id", DataType.INT64, is_primary=True, auto_id=False)
schema.add_field("document", DataType.VARCHAR, max_length=1000)
schema.add_field("dense", DataType.FLOAT_VECTOR, dim=4)
# Configure index
index_params = client.prepare_index_params()
index_params.add_index(
field_name="dense",
index_type="AUTOINDEX",
metric_type="COSINE"
)
# Create collection
client.create_collection(
collection_name=collection_name,
schema=schema,
index_params=index_params
)
# Insert sample data
data = [
{
"id": 1,
"document": "Recent renewable energy developments include improved solar efficiency.",
"dense": [0.10, 0.20, 0.30, 0.40],
},
{
"id": 2,
"document": "Climate policy and carbon markets have evolved rapidly in recent years.",
"dense": [0.11, 0.19, 0.28, 0.39],
},
{
"id": 3,
"document": "New battery technology helps stabilize wind and solar power generation.",
"dense": [0.90, 0.10, 0.05, 0.02],
},
{
"id": 4,
"document": "Vector databases support similarity search for machine learning applications.",
"dense": [0.01, 0.02, 0.03, 0.04],
},
]
client.insert(collection_name, data)
rerank 関数を定義する
Cohere Ranker は collection schema の一部としてではなく、検索時に 定義されます。
rerank 関数では、以下を指定します。
-
rerank 対象のテキストフィールド (
VARCHAR) -
使用する Cohere rerank モデル
-
関連性評価の対象となるクエリテキスト
from pymilvus import Function, FunctionType
cohere_ranker = Function(
name="cohere_semantic_ranker",
input_field_names=["document"],
function_type=FunctionType.RERANK,
params={
"reranker": "model",
"provider": "cohere",
"model_name": "rerank-english-v3.0",
"queries": ["renewable energy developments"],
"integration_id": "YOUR_INTEGRATION_ID",
}
)
queries 内の文字列数は、検索リクエストで発行されるクエリ数と一致している必要があります。
rerank 関数を使って検索する
query_vector = [0.12, 0.21, 0.29, 0.41]
results = client.search(
collection_name=collection_name,
data=[query_vector],
anns_field="dense",
limit=3,
output_fields=["document"],
ranker=cohere_ranker,
)
print(results)
この検索中に、以下が実行されます。
-
Zilliz Cloud が vector search を使用して候補を取得します。
-
Cohere Ranker が各候補のセマンティック関連性を評価します。
-
結果セットが返される前に再並び替えされます。
次のステップ
Cohere Ranker は hybrid search でも使用できます。
search と hybrid search は、同じ方法で ranker を適用します。
どちらの場合も、検索時に ranker パラメータを介して rerank 関数を渡します。
詳細については、Multi-Vector Hybrid Search を参照してください。