Voyage AI 랭커Compatible with Milvus 2.6.x
Voyage AI Ranker는 시맨틱 리랭킹을 통해 검색 관련성을 향상시키는 Voyage AI의 전문 리랭커를 활용합니다. 검색 증강 생성(RAG) 및 검색 애플리케이션에 최적화된 고성능 리랭크 기능을 제공합니다.
Voyage AI Ranker는 특히 다음과 같은 애플리케이션에 유용합니다:
재랭크 작업을 위해 특별히 훈련된 모델을 통한 고급 의미론적 이해
프로덕션 워크로드에 최적화된 추론을 통한 고성능 처리
다양한 문서 길이를 처리하기 위한 유연한 잘라내기 제어 기능
다양한 모델 변형(재랭크-2, 재랭크-라이트 등)에 걸쳐 미세 조정된 성능
전제 조건
Milvus에서 Voyage AI Ranker를 구현하기 전에 다음이 필요합니다:
재랭크할 텍스트가 포함된
VARCHAR필드가 있는 Milvus 컬렉션재랭커에 액세스할 수 있는 유효한 Voyage AI API 키. Voyage AI의 플랫폼에 가입하여 API 자격 증명을 받습니다. 다음 중 하나를 수행할 수 있습니다:
VOYAGE_API_KEY환경 변수를 설정하거나랭커 구성에서 직접 API 키를 지정합니다.
Voyage AI 랭커 함수 생성하기
Milvus 애플리케이션에서 Voyage AI 랭커를 사용하려면 재랭킹 작동 방식을 지정하는 함수 객체를 생성하세요. 이 함수는 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 Voyage AI Ranker
voyageai_ranker = Function(
name="voyageai_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": "voyageai", # Specifies Voyage AI as the service provider
"model_name": "rerank-2.5", # Voyage AI reranker 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)
"truncation": True, # Optional: enable input truncation (default: True)
# "credential": "your-voyage-api-key" # Optional: if not set, uses VOYAGE_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("voyageai_semantic_ranker")
.inputFieldNames(Collections.singletonList("document"))
.param("reranker", "model")
.param("provider", "voyageai")
.param("model_name", "rerank-2.5")
.param("queries", "[\"renewable energy developments\"]")
.param("endpoint", "http://localhost:8080")
.param("max_client_batch_size", "128")
.param("truncation", "true")
.build();
// nodejs
// go
# restful
Voyage AI 랭커별 파라미터
다음 파라미터는 Voyage AI 랭커에만 해당되는 파라미터입니다:
파라미터 |
필수? |
설명 |
값/예시 |
|---|---|---|---|
|
예 |
모델 순위 재지정을 사용하려면 |
|
|
예 |
재랭크에 사용할 모델 서비스 제공업체입니다. |
|
|
예 |
Voyage AI 플랫폼에서 지원되는 모델 중에서 사용할 Voyage AI 리랭커입니다. |
|
|
예 |
재랭크 모델에서 관련성 점수를 계산하는 데 사용하는 쿼리 문자열 목록입니다. 쿼리 문자열의 수는 검색 작업의 쿼리 수와 정확히 일치해야 하며(텍스트 대신 쿼리 벡터를 사용하는 경우에도 마찬가지), 그렇지 않으면 오류가 보고됩니다. |
["검색 쿼리"] |
|
No |
모델 서비스가 모든 데이터를 한 번에 처리하지 못할 수 있으므로 여러 요청에서 모델 서비스에 액세스하기 위한 배치 크기를 설정합니다. |
|
|
No |
쿼리 및 문서의 "컨텍스트 길이 제한"을 충족하기 위해 입력을 잘라낼지 여부입니다.
|
|
|
아니요 |
Voyage AI API 서비스에 액세스하기 위한 인증 자격증명입니다. 지정하지 않으면 시스템에서 |
"YOUR-VOYAGE-API-KEY" |
모든 모델 랭커에서 공유되는 일반 파라미터(예: provider, queries)는 모델 랭커 만들기를 참조하세요.
표준 벡터 검색에 적용하기
보이저 AI 랭커를 표준 벡터 검색에 적용하려면 다음과 같이 하세요:
# Execute search with Voyage AI reranker
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=voyageai_ranker, # Apply Voyage AI reranker
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