코히어 랭커Compatible with Milvus 2.6.x
코히어 랭커는 코히어의 강력한 재랭크 모델을 활용하여 시맨틱 재랭크를 통해 검색 관련성을 향상시킵니다. 강력한 API 인프라와 프로덕션 환경에 최적화된 성능을 갖춘 엔터프라이즈급 리랭크 기능을 제공합니다.
코히어 랭커는 특히 다음과 같은 애플리케이션에 유용합니다:
최첨단 재랭크 모델을 통한 고품질의 의미론적 이해
프로덕션 워크로드를 위한 엔터프라이즈급 안정성 및 확장성
다양한 콘텐츠 유형에 걸친 다국어 재랭크 기능
속도 제한 및 오류 처리 기능이 내장된 일관된 API 성능
전제 조건
Milvus에서 Cohere Ranker를 구현하기 전에 다음 사항을 충족해야 합니다:
재랭크할 텍스트가 포함된
VARCHAR필드가 있는 Milvus 컬렉션재랭크 모델에 액세스할 수 있는 유효한 Cohere API 키. Cohere의 플랫폼에 가입하여 API 자격 증명을 받습니다. 다음 중 하나를 선택할 수 있습니다:
COHERE_API_KEY환경 변수를 설정하거나랭커 구성의
credential에서 직접 API 키를 지정합니다.
Cohere 랭커 함수 생성하기
밀버스 애플리케이션에서 코히어 랭커를 사용하려면 재랭킹 작동 방식을 지정하는 함수 객체를 생성하세요. 이 함수는 Milvus 검색 작업에 전달되어 결과 순위를 향상시킵니다.
from pymilvus import MilvusClient, Function, FunctionType
# Connect to your Milvus server
client = MilvusClient(
uri="http://localhost:19530" # Replace with your Milvus server URI
)
# Configure Cohere Ranker
cohere_ranker = Function(
name="cohere_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": "cohere", # Specifies Cohere as the service provider
"model_name": "rerank-english-v3.0", # Cohere rerank 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_tokens_per_doc": 4096, # Optional: max tokens per document (default: 4096)
# "credential": "your-cohere-api-key" # Optional: authentication credential for Cohere API
}
)
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("cohere_semantic_ranker")
.inputFieldNames(Collections.singletonList("document"))
.param("reranker", "model")
.param("provider", "cohere")
.param("model_name", "rerank-english-v3.0")
.param("queries", "[\"renewable energy developments\"]")
.param("endpoint", "http://localhost:8080")
.param("max_client_batch_size", "128")
.param("max_tokens_per_doc", "4096")
.build();
// nodejs
// go
# restful
Cohere 랭커별 파라미터
다음 파라미터는 Cohere 랭커에만 해당되는 파라미터입니다:
파라미터 |
필수? |
설명 |
값/예시 |
|---|---|---|---|
|
예 |
모델 순위 재지정을 사용하려면 |
|
|
예 |
재랭크에 사용할 모델 서비스 제공업체입니다. |
|
|
예 |
코히어 플랫폼에서 지원되는 모델 중에서 사용할 코히어 리랭크 모델입니다. 사용 가능한 재랭크 모델 목록은 Cohere 설명서를 참조하세요. |
|
|
예 |
재랭크 모델에서 관련성 점수를 계산하는 데 사용하는 쿼리 문자열 목록입니다. 쿼리 문자열의 수는 검색 작업의 쿼리 수와 정확히 일치해야 하며(텍스트 대신 쿼리 벡터를 사용하는 경우에도 마찬가지), 그렇지 않으면 오류가 보고됩니다. |
["검색 쿼리"] |
|
No |
모델 서비스가 모든 데이터를 한 번에 처리하지 못할 수 있으므로 여러 요청에서 모델 서비스에 액세스하기 위한 배치 크기를 설정합니다. |
|
|
No |
문서당 최대 토큰 수입니다. 긴 문서는 지정된 토큰 수로 자동 잘립니다. |
|
|
아니요 |
Cohere API 서비스에 액세스하기 위한 인증 자격증명. 지정하지 않으면 시스템에서 |
"your-cohere-api-key" |
모든 모델 랭커에서 공유되는 일반 파라미터(예: provider, queries)는 모델 랭커 만들기를 참조하세요.
표준 벡터 검색에 적용하기
표준 벡터 검색에 코히어 랭커를 적용하려면 다음과 같이 하세요:
# Execute search with Cohere 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=cohere_ranker, # Apply Cohere 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(COLLECTION_NAME)
.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