Получение информации о коллекции#
Platform V Vector DB (далее - Vector DB) позволяет определить параметры конфигурации существующей коллекции, чтобы лучше понять, как распределены и проиндексированы точки.
Предусловия#
Коллекция
{collection_name}существует.Установлен клиентский SDK или присутствует доступ к HTTP/REST API Qdrant.
Последовательность выполнения#
Запросите информацию о коллекции:
GET /collections/{collection_name}curl -X GET http://localhost:6333/collections/{collection_name}client.get_collection(collection_name="{collection_name}")client.getCollection("{collection_name}");client.collection_info("{collection_name}").await?;client.getCollectionInfoAsync("{collection_name}").get();await client.GetCollectionInfoAsync("{collection_name}");import "context" client.GetCollectionInfo(context.Background(), "{collection_name}")Ожидаемый результат
{ "result": { "status": "green", "optimizer_status": "ok", "vectors_count": 1068786, "indexed_vectors_count": 1024232, "points_count": 1068786, "segments_count": 31, "config": { "params": { "vectors": { "size": 384, "distance": "Cosine" }, "shard_number": 1, "replication_factor": 1, "write_consistency_factor": 1, "on_disk_payload": false }, "hnsw_config": { "m": 16, "ef_construct": 100, "full_scan_threshold": 10000, "max_indexing_threads": 0 }, "optimizer_config": { "deleted_threshold": 0.2, "vacuum_min_vector_number": 1000, "default_segment_number": 0, "max_segment_size": null, "memmap_threshold": null, "indexing_threshold": 20000, "flush_interval_sec": 5, "max_optimization_threads": 1 }, "wal_config": { "wal_capacity_mb": 32, "wal_segments_ahead": 0 } }, "payload_schema": {} }, "status": "ok", "time": 0.00010143 }Обработка серого статуса: если статус
grey, отправьте запрос на обновление конфигурации оптимизатора для запуска повторной оптимизации.Анализ показателей: изучите значения
vectors_count,indexed_vectors_countиpoints_countдля оценки состояния индексации. В процессе вставки векторов в коллекцию, полеstatusможет статьyellowпока идет процесс оптимизации. Оно станетgreen, как только все точки успешно обработаны.
Серый статус коллекции#
Возможны следующие цветовые состояния:
🟢
green: коллекция готова;🟡
yellow: коллекция оптимизируется;⚫
grey: коллекция ожидает оптимизации (подробнее в разделе Серый статус коллекции);🔴
red: произошла ошибка.
Коллекция может иметь серый статус (⚫) или отображать "ожидаются операции оптимизации" в статусе оптимизации. Обычно это вызвано перезапуском экземпляра Vector DB во время проведения операций оптимизации.
Данный статус означает, что коллекция ожидает оптимизации. Следует отправить любую операцию обновления, чтобы инициировать и запустить оптимизацию повторно.
Например:
PATCH /collections/{collection_name}
{
"optimizers_config": {}
}
curl -X PATCH http://localhost:6333/collections/{collection_name} \
-H 'Content-Type: application/json' \
--data-raw '{
"optimizers_config": {}
}'
client.update_collection(
collection_name="{collection_name}",
optimizer_config=models.OptimizersConfigDiff(),
)
client.updateCollection("{collection_name}", {
optimizers_config: {},
});
use qdrant_client::qdrant::{OptimizersConfigDiffBuilder, UpdateCollectionBuilder};
client
.update_collection(
UpdateCollectionBuilder::new("{collection_name}")
.optimizers_config(OptimizersConfigDiffBuilder::default()),
)
.await?;
import io.qdrant.client.grpc.Collections.OptimizersConfigDiff;
import io.qdrant.client.grpc.Collections.UpdateCollection;
client.updateCollectionAsync(
UpdateCollection.newBuilder()
.setCollectionName("{collection_name}")
.setOptimizersConfig(
OptimizersConfigDiff.getDefaultInstance())
.build());
using Qdrant.Client;
using Qdrant.Client.Grpc;
var client = new QdrantClient("localhost", 6334);
await client.UpdateCollectionAsync(
collectionName: "{collection_name}",
optimizersConfig: new OptimizersConfigDiff { }
);
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{},
})
Приблизительное количество точек и векторов#
Vector DB обладает показателями подсчета:
points_count- общее количество объектов (векторов и их полезных нагрузок), хранящихся в коллекции;vectors_count- общее количество векторов в коллекции (полезно, когда используется несколько векторов на точку);indexed_vectors_count- общее количество векторов, хранящихся в индексе HNSW или разреженном индексе. Vector DB не сохраняет все векторы в индексе, а только те, для которых может быть создан сегмент индекса при заданной конфигурации.
Приведенные выше показатели являются приблизительными и не должны рассматриваться как точные. В зависимости от того, как используется Vector DB, они могут отличаться от ожидаемых.
Данные показатели представляют собой счетчики точек и векторов во внутреннем хранилище. Внутренне Vector DB временно дублирует точки в процессе автоматических оптимизаций. Он может некоторое время удерживать измененные или удаленные точки, а также задерживать индексацию новых точек ради оптимизации.
Таким образом, внесенные изменения непосредственно не отражаются в показателях. Если отображается сильно отличающееся количество точек, оно скорее всего стабилизируется после завершения нового цикла автоматических оптимизаций.
Внимание
Показатели не отражают точное количество точек или векторов, которые были вставлены, и не показывают точное количество различных точек или векторов, доступных для запроса. Подробная информация о подсчете точек представлена в разделе Управление точками.
Индексирование векторов в HNSW#
В некоторых ситуациях значение indexed_vectors_count может быть ниже, чем vectors_count. Такое поведение предусмотрено намеренно и зависит от настроек оптимизатора (подробнее в разделе Управление оптимизаторами). Новый сегмент индекса создается, если объем невзвешенных векторов превышает значение indexing_threshold(в килобайтах). Если коллекция очень мала или размерность векторов низкая, сегмент HNSW может не создаться и indexed_vectors_count будет равно 0.
Можно уменьшить indexing_threshold для существующей коллекции с помощью обновления параметров коллекции, Подробное описание процесса представлено в разделе Обновление параметров коллекции.
Результат#
После выполнения операций появятся возможности:
Получать полную информацию о конфигурации и состоянии коллекции.
Определять статус готовности коллекции (
green,yellow,grey,red).Выполнять повторную оптимизацию коллекции в случае серого статуса.
Анализировать показатели хранения и индексации векторов.