FLAT
FLAT 인덱스는 부동 소수점 벡터를 색인하고 검색하는 가장 간단하고 직관적인 방법 중 하나입니다. 이 방식은 고급 전처리나 데이터 구조화 없이 각 쿼리 벡터를 데이터 세트의 모든 벡터와 직접 비교하는 무차별 대입 방식에 의존합니다. 이 접근 방식은 모든 잠재적 일치 항목을 평가하기 때문에 100%의 정확도를 보장합니다.
하지만 이 철저한 검색 방법에는 단점이 있습니다. FLAT 인덱스는 모든 쿼리에 대해 데이터 세트의 전체 스캔을 수행하기 때문에 Milvus의 다른 인덱스 유형에 비해 가장 느린 인덱싱 옵션입니다. 따라서 성능이 중요한 대규모 데이터 세트가 있는 환경에는 적합하지 않습니다. FLAT 인덱스의 가장 큰 장점은 교육이나 복잡한 매개변수 구성이 필요 없기 때문에 단순성과 신뢰성이 높다는 점입니다.
인덱스 구축
Milvus의 벡터 필드에 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="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={} # No additional parameters required for FLAT
)
이 구성에서는
index_type
: 빌드할 인덱스 유형입니다. 이 예에서는 값을FLAT
로 설정합니다.metric_type
: 벡터 간의 거리를 계산하는 데 사용되는 메서드입니다. 지원되는 값은COSINE
,L2
,IP
입니다. 자세한 내용은 메트릭 유형을 참조하세요.params
: FLAT 인덱스에는 별도의 파라미터가 필요하지 않습니다.
인덱스 파라미터가 구성되면 create_index()
메서드를 직접 사용하거나 create_collection
메서드에서 인덱스 파라미터를 전달하여 인덱스를 생성할 수 있습니다. 자세한 내용은 컬렉션 생성을 참조하세요.
인덱스에서 검색
인덱스가 생성되고 엔티티가 삽입되면 인덱스에서 유사도 검색을 수행할 수 있습니다.
res = MilvusClient.search(
collection_name="your_collection_name", # Collection name
data=[[0.1, 0.2, 0.3, 0.4, 0.5]], # Query vector
limit=3, # TopK results to return
search_params={"params": {}} # No additional parameters required for FLAT
)
인덱스 매개변수
FLAT 인덱스의 경우 인덱스 생성이나 검색 과정에서 추가 파라미터가 필요하지 않습니다.