GPU_IVF_FLAT
GPU_IVF_FLAT 인덱스는 GPU 환경 전용으로 설계된 IVF_FLAT 인덱스의 GPU 가속 버전입니다. 이 인덱스는 벡터 데이터를 nlist 클러스터 단위로 분할하고 먼저 대상 쿼리 벡터를 각 클러스터의 중심과 비교하여 유사성을 계산합니다. nprobe 매개변수를 조정하면 가장 가능성이 높은 클러스터만 검색되므로 정확도와 속도 간의 균형을 유지하면서 쿼리 시간을 단축할 수 있습니다. 기본 개념에 대한 자세한 내용은 IVF_FLAT을 참조하세요.
인덱스 구축
Milvus의 벡터 필드에 GPU_IVF_FLAT 인덱스를 구축하려면 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_vector_field_name", # Name of the vector field to be indexed
index_type="GPU_IVF_FLAT", # Type of the index to create
index_name="vector_index", # Name of the index to create
metric_type="L2", # Metric type used to measure similarity
params={
"nlist": 1024, # Number of clusters for the index
} # Index building params
)
이 구성에서는
index_type: 빌드할 인덱스 유형입니다. 이 예에서는 값을GPU_IVF_FLAT로 설정합니다.metric_type: 벡터 간의 거리를 계산하는 데 사용되는 메서드입니다. 자세한 내용은 메트릭 유형을 참조하세요.params: 인덱스 구축을 위한 추가 구성 옵션입니다.nlist: 데이터 집합을 나눌 클러스터의 수입니다.
GPU_IVF_FLAT인덱스에 사용할 수 있는 더 많은 구축 매개변수에 대해 알아보려면 인덱스 구축 매개변수를 참조하세요.
인덱스 파라미터가 구성되면 create_index() 메서드를 직접 사용하거나 create_collection 메서드에서 인덱스 파라미터를 전달하여 인덱스를 생성할 수 있습니다. 자세한 내용은 컬렉션 만들기를 참조하세요.
인덱스에서 검색
인덱스가 구축되고 엔티티가 삽입되면 인덱스에서 유사도 검색을 수행할 수 있습니다.
search_params = {
"params": {
"nprobe": 10, # Number of clusters to search
}
}
res = MilvusClient.search(
collection_name="your_collection_name", # Collection name
anns_field="vector_field",
data=[[0.1, 0.2, 0.3, 0.4, 0.5]], # Query vector
limit=3, # TopK results to return
search_params=search_params
)
이 구성에서는
params: 색인에서 검색을 위한 추가 구성 옵션.nprobe: 검색할 클러스터 수입니다.
GPU_IVF_FLAT인덱스에 사용할 수 있는 검색 매개변수에 대해 자세히 알아보려면 인덱스별 검색 매개변수를 참조하세요.
인덱스 매개변수
이 섹션에서는 인덱스를 만들고 인덱스에서 검색을 수행하는 데 사용되는 매개변수에 대한 개요를 제공합니다.
인덱스 구축 매개변수
다음 표에는 색인 작성 시 params 에서 구성할 수 있는 매개변수가 나열되어 있습니다.
파라미터 |
설명 |
값 범위 |
조정 제안 |
|---|---|---|---|
|
인덱스 구축 시 k-평균 알고리즘을 사용하여 생성할 클러스터의 수입니다. 중심점으로 표시되는 각 클러스터에는 벡터 목록이 저장됩니다. 이 매개변수를 늘리면 각 클러스터의 벡터 수가 줄어들어 더 작고 집중적인 파티션이 만들어집니다. |
유형: 정수 범위: [1, 65536] 기본값입니다: |
|
인덱스별 검색 매개변수
다음 표에는 인덱스에서 검색할 때 search_params.params 에서 구성할 수 있는 매개변수가 나열되어 있습니다.
파라미터 |
설명 |
값 범위 |
조정 제안 |
|---|---|---|---|
|
후보를 검색할 클러스터의 수. 값이 클수록 더 많은 클러스터를 검색할 수 있으므로 검색 범위가 확장되어 회상률이 향상되지만 쿼리 대기 시간이 길어질 수 있습니다. |
유형: 정수 범위: [1, nlist] 기본값입니다: |
이 값을 높이면 검색 회수율은 향상되지만 검색 속도가 느려질 수 있습니다. 속도와 정확도의 균형을 맞추려면 대부분의 경우 이 범위 내에서 값을 설정하는 것이 좋습니다: [1, nlist]. |