SPARSE_INVERTED_INDEX
Индекс SPARSE_INVERTED_INDEX - это тип индекса, используемый Milvus для эффективного хранения и поиска разреженных векторов. Этот тип индекса использует принципы инвертированного индексирования для создания высокоэффективной структуры поиска для разреженных данных. Для получения дополнительной информации см. раздел ИНВЕРТИРОВАННЫЙ.
Построение индекса
Чтобы построить индекс SPARSE_INVERTED_INDEX на разреженном векторном поле в 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_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"(по умолчанию): Оптимизированная обработка запросов Document-at-a-Time (DAAT) с использованием алгоритма MaxScore. MaxScore обеспечивает лучшую производительность при больших значениях k или запросах с большим количеством терминов, пропуская термины и документы, которые, вероятно, будут иметь минимальное влияние. Это достигается путем разделения терминов на существенные и несущественные группы на основе их максимальных баллов влияния, фокусируясь на терминах, которые могут внести вклад в результаты top-k."DAAT_WAND": Оптимизированная обработка запросов DAAT с помощью алгоритма WAND. WAND оценивает меньше документов, попавших в запрос, за счет использования максимальных баллов влияния для пропуска неконкурентных документов, но при этом имеет более высокие накладные расходы на каждый запрос. Это делает WAND более эффективным для запросов с небольшими значениями k или коротких запросов, где пропуск документов более целесообразен."TAAT_NAIVE": Обработка запросов с использованием базового термина (TAAT). Хотя он медленнее, чемDAAT_MAXSCOREиDAAT_WAND,TAAT_NAIVEобладает уникальным преимуществом. В отличие от алгоритмов DAAT, использующих кэшированные оценки максимального воздействия, которые остаются статичными независимо от изменений глобального параметра коллекции (avgdl),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 при построении индекса.
Параметр |
Описание |
Диапазон значений |
Предложение по настройке |
|---|---|---|---|
|
Алгоритм, используемый при построении индекса и запросов к нему. Он определяет, как индекс обрабатывает запросы. |
|
Используйте Выберите Используйте |
Специфические для индекса параметры поиска
В следующей таблице перечислены параметры, которые могут быть настроены в search_params.params при поиске по индексу.
Параметр |
Описание |
Диапазон значений |
Tuning Suggestion |
|---|---|---|---|
|
Доля наименьших значений, которые следует игнорировать при поиске, что помогает уменьшить шум. |
Фракция от 0,0 до 1,0 (например, 0,2 игнорирует 20 % наименьших значений). |
Настройте этот параметр в зависимости от разреженности и уровня шума векторов запроса. Этот параметр управляет долей значений малой величины, отбрасываемых при поиске. Увеличение этого значения (например, до |