DashScope RankerCompatible with Milvus 2.6.x
DashScope Ranker를 사용하면 Milvus에서 Alibaba Cloud DashScope 재순위 지정 모델을 호출하여 의미적 관련성에 따라 검색 결과의 순서를 재정렬할 수 있습니다.
사전 준비 사항
DashScope 랭커를 사용하기 전에 다음 사항이 준비되어 있는지 확인하십시오.
재순위를 지정할 텍스트가 포함된 ‘
VARCHAR’ 필드가 있는 Milvus 컬렉션.유효한 DashScope API 키.
gte-rerank-v2와 같은 DashScope 재순위 지정 모델에 대한 액세스 권한.
사용 가능한 재순위 지정 모델 및 지역별 엔드포인트에 대해서는 Alibaba Cloud Model Studio Text Rerank API를 참조하십시오.
인증 정보 구성
Milvus는 DashScope에 재순위를 요청하기 전에 사용자의 DashScope API 키를 알아야 합니다. API 키는 milvus.yaml 에서 또는 환경 변수를 통해 구성할 수 있습니다.
옵션 1: 구성 파일
milvus.yaml 에 API 키를 저장하고, DashScope 재순위 지정 제공자를 해당 자격 증명 레이블로 지정하십시오.
# milvus.yaml
credential:
dashscope_apikey:
apikey: <YOUR_DASHSCOPE_API_KEY>
function:
rerank:
model:
providers:
ali:
credential: dashscope_apikey
# url: https://dashscope.aliyuncs.com/api/v1/services/rerank/text-rerank/text-rerank
옵션 2: 환경 변수
milvus.yaml 에 일치하는 자격 증명이 설정되어 있지 않은 경우, Milvus는 다음 환경 변수에서 DashScope API 키를 읽어올 수 있습니다:
변수 |
필수? |
설명 |
|---|---|---|
|
예 |
Milvus 서비스가 Alibaba Cloud DashScope를 호출하는 데 사용하는 DashScope API 키입니다. |
DashScope 랭커 함수 생성
DashScope 랭커를 사용하려면 DashScope 재순위 지정 모델과 쿼리 텍스트를 지정하는 Function 객체를 생성하십시오. DashScope 재순위 지정을 위해 provider: "ali" 를 사용하십시오.
from pymilvus import Function, FunctionType
dashscope_ranker = Function(
name="dashscope_semantic_ranker",
input_field_names=["document"],
function_type=FunctionType.RERANK,
params={
"reranker": "model",
"provider": "ali",
"model_name": "gte-rerank-v2",
"queries": ["renewable energy developments"],
"max_client_batch_size": 128,
"credential": "dashscope_apikey",
},
)
DashScope 랭커 전용 매개변수
매개변수 |
필수 항목인가요? |
설명 |
값 / 예시 |
|---|---|---|---|
|
예 |
모델 재순위 지정을 활성화하려면 |
|
|
예 |
재순위 지정에 사용할 모델 서비스 제공자입니다. DashScope의 경우 |
|
|
예 |
사용할 DashScope 재순위 지정 모델입니다. |
|
|
예 |
재순위 지정 모델이 관련성 점수를 계산하는 데 사용하는 쿼리 문자열 목록입니다. 쿼리 문자열의 개수는 검색 요청에 포함된 쿼리의 개수와 일치해야 합니다. |
|
|
아니요 |
요청당 모델 서비스로 전송할 문서의 최대 개수입니다. |
|
|
아니요 |
|
|
provider 및 queries 와 같이 모든 모델 랭커에서 공통으로 사용되는 일반 매개변수에 대해서는 모델 랭커 만들기를 참조하십시오.
표준 벡터 검색에 적용
DashScope Ranker를 표준 벡터 검색에 적용하려면 search() 에 랭커 함수를 전달하십시오.
results = client.search(
collection_name="your_collection",
data=[your_query_vector],
anns_field="dense_vector",
limit=5,
output_fields=["document"],
ranker=dashscope_ranker,
consistency_level="Bounded",
)