Создание коллекции с разреженными векторами#
Platform V Vector DB (далее - Vector DB) поддерживает разреженные векторы как полноценную функцию.
Разреженные векторы полезны для текстового поиска, где каждое слово представлено отдельной размерностью.
Коллекции могут содержать разреженные векторы наряду с обычными плотными векторами в одной точке.
В отличие от плотных векторов, разреженным векторам обязательно нужно присваивать имена. Кроме того, разреженные и плотные векторы должны иметь разные названия в пределах одной коллекции.
Предусловия#
Установлен клиентский SDK или присутствует доступ к HTTP/REST API Qdrant.
Подготовлены данные для создания коллекций с разреженными векторами.
Последовательность выполнения#
Создание коллекции:
PUT /collections/{collection_name} { "sparse_vectors": { "text": { } } }curl -X PUT http://localhost:6333/collections/{collection_name} \ -H 'Content-Type: application/json' \ --data-raw '{ "sparse_vectors": { "text": { } } }'from qdrant_client import QdrantClient, models client = QdrantClient(url="http://localhost:6333") client.create_collection( collection_name="{collection_name}", vectors_config={}, sparse_vectors_config={ "text": models.SparseVectorParams(), }, )import { QdrantClient } from "@qdrant/js-client-rest"; const client = new QdrantClient({ host: "localhost", port: 6333 }); client.createCollection("{collection_name}", { sparse_vectors: { text: { }, }, });use qdrant_client::Qdrant; use qdrant_client::qdrant::{ CreateCollectionBuilder, SparseVectorParamsBuilder, SparseVectorsConfigBuilder, }; let client = Qdrant::from_url("http://localhost:6334").build()?; let mut sparse_vector_config = SparseVectorsConfigBuilder::default(); sparse_vector_config.add_named_vector_params("text", SparseVectorParamsBuilder::default()); client .create_collection( CreateCollectionBuilder::new("{collection_name}") .sparse_vectors_config(sparse_vector_config), ) .await?;import io.qdrant.client.QdrantClient; import io.qdrant.client.QdrantGrpcClient; import io.qdrant.client.grpc.Collections.CreateCollection; import io.qdrant.client.grpc.Collections.SparseVectorConfig; import io.qdrant.client.grpc.Collections.SparseVectorParams; QdrantClient client = new QdrantClient(QdrantGrpcClient.newBuilder("localhost", 6334, false).build()); client .createCollectionAsync( CreateCollection.newBuilder() .setCollectionName("{collection_name}") .setSparseVectorsConfig( SparseVectorConfig.newBuilder() .putMap("text", SparseVectorParams.getDefaultInstance())) .build()) .get();using Qdrant.Client; using Qdrant.Client.Grpc; var client = new QdrantClient("localhost", 6334); await client.CreateCollectionAsync( collectionName: "{collection_name}", sparseVectorsConfig: ("text", new SparseVectorParams()) );import ( "context" "github.com/qdrant/go-client/qdrant" ) client, err := qdrant.NewClient(&qdrant.Config{ Host: "localhost", Port: 6334, }) client.CreateCollection(context.Background(), &qdrant.CreateCollection{ CollectionName: "{collection_name}", SparseVectorsConfig: qdrant.NewSparseVectorsConfig( map[string]*qdrant.SparseVectorParams{ "text": {}, }), })Функция вычисления расстояний для разреженных векторов всегда равна
Dotи не нуждается в указании.Кроме уникального имени для разреженных векторов нет никаких обязательных параметров конфигурации. Однако существуют дополнительные параметры для настройки лежащего в основе разреженного индексного вектора (подробнее в разделе Индексирование).
Убедитесь, что разреженным векторам присвоены уникальные имена.
Настройка разреженных векторов:
Укажите параметры
sparse_vectorsв конфигурации коллекции.Проверьте, чтобы имена разреженных и плотных векторов не пересекались.
Вставка данных: добавьте точки с разреженными векторами, используя соответствующие методы API.
Индексация и поиск: настройте разреженный индексный вектор для оптимизации производительности.
Результат#
После выполнения операций появятся возможности:
Хранить и обрабатывать разреженные векторы в коллекциях.
Эффективно выполнять текстовый поиск с использованием разреженных представлений.
Комбинировать плотные и разреженные векторы в одной точке.
Настраивать параметры индексации для оптимизации производительности.