본문 바로가기
WIKI 기술 지식 베이스

TEI Ranker

원문 보기 위키 갱신

Milvus 2.6.x와 호환돼요.

TEI Ranker는 Hugging Face의 Text Embedding Inference (TEI) 서비스를 활용해 시맨틱 재순위화(semantic reranking)로 검색 관련성을 높여 줘요. 전통적인 벡터 유사도를 넘어선, 진일보한 검색 결과 정렬 방식이에요.

출처: Milvus 문서

본문

사전 요구 사항 (Prerequisites)

Milvus에서 TEI Ranker를 구현하기 전에 다음을 준비했는지 확인하세요.

  • 재순위화할 텍스트를 담고 있는 VARCHAR 필드가 있는 Milvus 컬렉션
  • 재순위화 기능을 갖춘 실행 중인 TEI 서비스. TEI 서비스 설정에 대한 자세한 지침은 공식 TEI 문서를 참고하세요.

TEI ranker 함수 만들기 (Create a TEI ranker function)

Milvus 애플리케이션에서 TEI Ranker를 사용하려면 재순위화가 어떻게 동작할지 지정하는 Function 객체를 만들어요. 이 함수를 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 TEI Ranker
tei_ranker = Function(
    name="tei_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": "tei",                 # Specifies TEI as the service provider
        "queries": ["renewable energy developments"],  # Query text for relevance evaluation
        "endpoint": "http://localhost:8080",  # Your TEI service URL
        "max_client_batch_size": 32,                    # Optional: batch size for processing (default: 32)
        "truncate": True,                # Optional: Truncate the inputs that are longer than the maximum supported size
        "truncation_direction": "Right",    # Optional: Direction to truncate the inputs
    }
)

다른 언어(Java, NodeJS, Go, cURL)의 코드 예시는 이 페이지의 원문에서 확인할 수 있어요.

TEI ranker 전용 파라미터

다음 파라미터는 TEI ranker에만 해당해요.

파라미터 필수 여부 설명 값 / 예시
reranker Yes 모델 재순위화를 활성화하려면 "model"로 설정해야 해요. "model"
provider Yes 재순위화에 사용할 모델 서비스 제공자예요. "tei"
queries Yes 순위화 모델이 관련성 점수를 계산할 때 사용하는 쿼리 문자열 목록이에요. 쿼리 문자열 수는 검색 연산의 쿼리 수(텍스트 대신 쿼리 벡터를 사용하는 경우에도)와 정확히 일치해야 해요. 아니면 오류가 보고돼요. ["search query"]
endpoint Yes TEI 서비스 URL이에요. "http://localhost:8080"
max_client_batch_size No 모델 서비스가 모든 데이터를 한 번에 처리하지 못할 수 있으므로, 여러 요청으로 모델 서비스에 접근할 때의 배치 크기를 설정해요. 32 (default)
truncate No 최대 시퀀스 길이를 초과하는 입력을 잘라낼지 여부예요. False면 긴 입력이 오류를 일으켜요. True 또는 False
truncation_direction No 입력이 너무 길 때 어느 쪽에서 잘라낼지 방향이에요.
- "Right" (default): 시퀀스 끝에서 최대 지원 크기가 될 때까지 토큰을 제거해요.
- "Left": 시퀀스 시작 부분에서 토큰을 제거해요.
"Right" 또는 "Left"

모든 모델 ranker에 공통으로 적용되는 일반 파라미터(예: provider, queries)에 대해서는 Create a model ranker를 참고하세요.

TEI Ranker를 표준 벡터 검색에 적용하려면:

# Execute search with vLLM 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=tei_ranker,                         # Apply tei reranking
    consistency_level="Bounded"
)

다른 언어(Java, NodeJS, Go, cURL)의 코드 예시는 이 페이지의 원문에서 확인할 수 있어요.

더 알아보기 (Learn more)