Обновление параметров коллекции#

Динамическое обновление параметров может быть полезным, например, для более эффективной начальной загрузки векторов: можно отключить индексирование во время процесса загрузки и включить его сразу после завершения загрузки. Таким образом, лишние вычислительные ресурсы не будут истрачены на повторную перестройку индекса.

Предусловия#

  1. Коллекция {collection_name} существует.

  2. Установлен клиентский SDK или присутствует доступ к HTTP/REST API Qdrant.

Последовательность выполнения#

Чтобы включить индексирование для сегментов, содержащих более 10000 КБ хранимых векторов необходимо выполнить команду:

PATCH /collections/{collection_name}
{
    "optimizers_config": {
        "indexing_threshold": 10000
    }
}
curl -X PATCH http://localhost:6333/collections/{collection_name} \
  -H 'Content-Type: application/json' \
  --data-raw '{
    "optimizers_config": {
        "indexing_threshold": 10000
    }
  }'
client.update_collection(
    collection_name="{collection_name}",
    optimizers_config=models.OptimizersConfigDiff(indexing_threshold=10000),
)
client.updateCollection("{collection_name}", {
  optimizers_config: {
    indexing_threshold: 10000,
  },
});
use qdrant_client::qdrant::{OptimizersConfigDiffBuilder, UpdateCollectionBuilder};

client
    .update_collection(
        UpdateCollectionBuilder::new("{collection_name}").optimizers_config(
            OptimizersConfigDiffBuilder::default().indexing_threshold(10000),
        ),
    )
    .await?;
import io.qdrant.client.grpc.Collections.OptimizersConfigDiff;
import io.qdrant.client.grpc.Collections.UpdateCollection;

client.updateCollectionAsync(
    UpdateCollection.newBuilder()
        .setCollectionName("{collection_name}")
        .setOptimizersConfig(
            OptimizersConfigDiff.newBuilder().setIndexingThreshold(10000).build())
        .build());
using Qdrant.Client;
using Qdrant.Client.Grpc;

var client = new QdrantClient("localhost", 6334);

await client.UpdateCollectionAsync(
  collectionName: "{collection_name}",
  optimizersConfig: new OptimizersConfigDiff { IndexingThreshold = 10000 }
);
import (
  "context"

  "github.com/qdrant/go-client/qdrant"
)

client, err := qdrant.NewClient(&qdrant.Config{
  Host: "localhost",
  Port: 6334,
})

client.UpdateCollection(context.Background(), &qdrant.UpdateCollection{
  CollectionName: "{collection_name}",
  OptimizersConfig: &qdrant.OptimizersConfigDiff{
      IndexingThreshold: qdrant.PtrOf(uint64(10000)),
  },
})

Могут быть обновлены параметры:

  • optimizers_config - подробнее в разделе Управление оптимизаторами.

  • hnsw_config - подробнее в разделе Индексирование.

  • quantization_config - подробнее в разделе Квантование.

  • vectors_config - специфичная для вектора конфигурация, включая индивидуальные настройки hnsw_config, quantization_config и on_disk.

  • params - другие параметры коллекции, включая write_consistency_factor и on_disk_payload.

  • strict_mode_config - подробное описание приведено в разделе Строгий режим документа Руководство администратора.

Внимание

Обращения к конечной точке могут блокироваться, так как ожидают окончания работы существующих оптимизаторов. Настоятельно не рекомендуется использовать эту функцию в производственной базе данных, так как она может ввести значительную дополнительную нагрузку из-за необходимости перестроения индекса.

Результат#

Параметр indexing_threshold коллекции будет обновлен до значения 10000. Это повлияет на порог активации индексирования для сегментов.