• 밀버스 소개
  • 시작하기
  • 개념
  • 사용자 가이드
    • 컬렉션
    • 스키마 및 데이터 필드
    • 삽입 및 삭제
    • 색인
    • 검색
    • 임베딩 및 재랭크
    • 스토리지 최적화
  • 데이터 가져오기
  • AI 도구
  • 관리 가이드
  • 도구
  • 통합
  • 튜토리얼
  • 자주 묻는 질문
  • API Reference

SPARSE_INVERTED_INDEX

SPARSE_INVERTED_INDEX 인덱스는 밀버스에서 스파스 벡터를 효율적으로 저장하고 검색하기 위해 사용하는 인덱스 유형입니다. 이 인덱스 유형은 반전 인덱싱의 원리를 활용하여 희소 데이터에 대한 매우 효율적인 검색 구조를 만듭니다. 자세한 내용은 INVERTED를 참조하세요.

색인 구축

Milvus의 스파스 벡터 필드에 SPARSE_INVERTED_INDEX 인덱스를 구축하려면 add_index() 방법을 사용하여 index_type, metric_type 및 인덱스에 대한 추가 매개변수를 지정합니다.

from pymilvus import MilvusClient

# Prepare index building params
index_params = MilvusClient.prepare_index_params()

index_params.add_index(
    field_name="your_sparse_vector_field_name", # Name of the vector field to be indexed
    index_type="SPARSE_INVERTED_INDEX", # Type of the index to create
    index_name="sparse_inverted_index", # Name of the index to create
    metric_type="IP", # Metric type used to measure similarity
    params={"inverted_index_algo": "DAAT_MAXSCORE"}, # Algorithm used for building and querying the index
)

이 구성에서는

  • index_type: 구축할 인덱스 유형입니다. 이 예에서는 값을 SPARSE_INVERTED_INDEX 로 설정합니다.

  • metric_type: 스파스 벡터 간의 유사성을 계산하는 데 사용되는 메트릭입니다. 유효한 값:

    • IP (내적 곱): 도트 곱을 사용하여 유사도를 측정합니다.

    • BM25: 일반적으로 텍스트 유사성에 초점을 맞춘 전체 텍스트 검색에 사용됩니다.

      자세한 내용은 메트릭 유형전체 텍스트 검색을 참조하세요.

  • params.inverted_index_algo: 인덱스 구축 및 쿼리에 사용되는 알고리즘입니다. 유효한 값입니다:

    • "DAAT_MAXSCORE" (기본값): MaxScore 알고리즘을 사용하여 DAAT(Document-at-a-Time) 쿼리 처리를 최적화합니다. MaxScore는 영향이 미미할 것 같은 용어와 문서를 건너뛰는 방식으로 높은 k 값이나 많은 용어가 포함된 쿼리에 대해 더 나은 성능을 제공합니다. 최대 영향력 점수를 기준으로 용어를 필수 및 비필수 그룹으로 분류하여 상위 k 결과에 기여할 수 있는 용어에 집중함으로써 이를 달성합니다.

    • "DAAT_WAND": WAND 알고리즘을 사용하여 최적화된 DAAT 쿼리 처리. WAND는 최대 영향력 점수를 활용하여 비경쟁 문서를 건너뛰기 때문에 히트 문서를 더 적게 평가하지만, 히트당 오버헤드가 더 높습니다. 따라서 건너뛰기가 더 용이한 작은 k 값의 쿼리나 짧은 쿼리에는 WAND가 더 효율적입니다.

    • "TAAT_NAIVE": 기본 TAAT(Term-at-a-Time) 쿼리 처리. DAAT_MAXSCOREDAAT_WAND 에 비해 느리지만 TAAT_NAIVE 은 고유한 이점을 제공합니다. 전역 수집 매개변수(avgdl)의 변경에 관계없이 정적으로 유지되는 캐시된 최대 영향 점수를 사용하는 DAAT 알고리즘과 달리 TAAT_NAIVE 은 이러한 변경에 동적으로 적응합니다.

    SPARSE_INVERTED_INDEX 인덱스에 사용할 수 있는 구축 매개변수에 대해 자세히 알아보려면 인덱스 구축 매개변수를 참조하세요.

인덱스 파라미터가 구성되면 create_index() 메서드를 직접 사용하거나 create_collection 메서드에서 인덱스 파라미터를 전달하여 인덱스를 만들 수 있습니다. 자세한 내용은 컬렉션 만들기를 참조하세요.

인덱스에서 검색

인덱스가 생성되고 엔티티가 삽입되면 인덱스에서 유사도 검색을 수행할 수 있습니다.

# Prepare the query vector
query_vector = [{1: 0.2, 50: 0.4, 1000: 0.7}]

res = MilvusClient.search(
    collection_name="your_collection_name", # Collection name
    anns_field="vector_field",  # Vector field name
    data=query_vector,  # Query vector
    limit=3,  # TopK results to return
)

SPARSE_INVERTED_INDEX 인덱스에 사용할 수 있는 검색 매개변수에 대해 자세히 알아보려면 인덱스별 검색 매개변수를 참조하세요.

인덱스 매개변수

이 섹션에서는 인덱스를 구축하고 인덱스에서 검색을 수행하는 데 사용되는 매개변수에 대한 개요를 제공합니다.

인덱스 구축 매개변수

다음 표에는 색인 작성params 에서 구성할 수 있는 매개변수가 나열되어 있습니다.

파라미터

설명

값 범위

조정 제안

inverted_index_algo

인덱스 구축 및 쿼리에 사용되는 알고리즘입니다. 인덱스가 쿼리를 처리하는 방법을 결정합니다.

"DAAT_MAXSCORE" (기본값), "DAAT_WAND", "TAAT_NAIVE"

k 값이 크거나 용어가 많은 쿼리의 경우 "DAAT_MAXSCORE" 를 사용하여 비경쟁 문서를 건너뛰면 이점을 얻을 수 있습니다.

k 값이 작거나 쿼리가 짧은 경우 보다 효율적인 건너뛰기를 활용하려면 "DAAT_WAND" 을 선택하세요.

컬렉션 변경 사항(예: 평균값)에 대한 동적 조정이 필요한 경우 "TAAT_NAIVE" 을 사용하세요.

인덱스별 검색 매개변수

다음 표에는 색인에서 검색할search_params.params 에서 구성할 수 있는 매개변수가 나열되어 있습니다.

매개변수

설명

값 범위

조정 제안

drop_ratio_search

검색 시 무시할 가장 작은 값의 비율로, 노이즈를 줄이는 데 도움이 됩니다.

0.0에서 1.0 사이의 분수(예: 0.2는 가장 작은 20%의 값을 무시합니다.)

쿼리 벡터의 희소성과 노이즈 수준에 따라 이 매개변수를 조정합니다.

이 매개변수는 검색 중에 삭제되는 크기가 작은 값의 비율을 제어합니다. 이 값을 증가시키면(예를 들어 0.2) 노이즈를 줄이고 더 중요한 구성 요소에 검색을 집중할 수 있어 정확도와 효율성이 향상될 수 있습니다. 그러나 더 많은 값을 삭제하면 관련성이 있을 수 있는 신호가 제외되어 정확도가 떨어질 수도 있습니다. 워크로드에 맞게 정확도와 정확도의 균형을 맞추는 값을 선택하세요.

Try Managed Milvus for Free

Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

Get Started
피드백

이 페이지가 도움이 되었나요?