FLAT
Индекс FLAT - один из самых простых и понятных методов индексирования и поиска векторов с плавающей точкой. Он основан на подходе грубой силы, когда каждый вектор запроса напрямую сравнивается с каждым вектором в наборе данных, без какой-либо предварительной обработки или структурирования данных. Такой подход гарантирует точность, обеспечивая 100 % отзыв, поскольку оценивается каждое потенциальное совпадение.
Однако такой метод исчерпывающего поиска имеет свои недостатки. Индекс FLAT - самый медленный вариант индексирования по сравнению с другими типами индексов в Milvus, поскольку он выполняет полное сканирование набора данных для каждого запроса. Следовательно, он не очень хорошо подходит для сред с большими наборами данных, где важна производительность. Основным преимуществом индекса FLAT является его простота и надежность, поскольку он не требует обучения или сложной настройки параметров.
Построение индекса
Чтобы построить индекс FLAT
по векторному полю в Milvus, используйте метод 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 не требуется никаких дополнительных параметров ни при создании индекса, ни в процессе поиска.