7474 AlterCollectionStmt ,
7575 AndExpr ,
7676 BetweenExpr ,
77- CollectionParamsConfig ,
7877 CollectionConfig ,
7978 CompareExpr ,
8079 CreateCollectionStmt ,
9493 MatchTextExpr ,
9594 NotExpr ,
9695 NotInExpr ,
97- OptimizersRuntimeConfig ,
9896 OrExpr ,
9997 QuantizationUpdate ,
10098 QuantizationConfig ,
108106 ShowCollectionsStmt ,
109107 UpdateVectorStmt ,
110108 UpdatePayloadStmt ,
111- VectorsConfig ,
112- HnswRuntimeConfig ,
113109)
114110from .config import QQLConfig
115111from .embedder import CrossEncoderEmbedder , Embedder , SparseEmbedder
@@ -384,10 +380,13 @@ def _execute_insert_bulk(self, node: InsertBulkStmt) -> ExecutionResult:
384380 dense_name = topology .dense_using (node .dense_vector ) or dense_name
385381 sparse_name = topology .sparse_using (node .sparse_vector )
386382
383+ first_dense_vector : list [float ] | None = None
387384 points : list [PointStruct ] = []
388385 for vals in node .values_list :
389386 point_id , payload = self ._extract_point_id_and_payload (vals )
390387 dense_vector = dense_embedder .embed (vals ["text" ])
388+ if first_dense_vector is None :
389+ first_dense_vector = dense_vector
391390 sparse_obj = sparse_embedder .embed (vals ["text" ])
392391 sparse_vector = SparseVector (
393392 indices = sparse_obj ["indices" ], values = sparse_obj ["values" ]
@@ -401,11 +400,11 @@ def _execute_insert_bulk(self, node: InsertBulkStmt) -> ExecutionResult:
401400 )
402401
403402 if not topology .exists :
404- first_dense = dense_embedder . embed ( node . values_list [ 0 ][ "text" ])
403+ assert first_dense_vector is not None
405404 self ._create_collection_and_wait (
406405 collection_name = node .collection ,
407406 vectors_config = {
408- dense_name : VectorParams (size = len (first_dense ), distance = Distance .COSINE )
407+ dense_name : VectorParams (size = len (first_dense_vector ), distance = Distance .COSINE )
409408 },
410409 sparse_vectors_config = {
411410 sparse_name : SparseVectorParams (modifier = Modifier .IDF )
@@ -557,7 +556,7 @@ def _execute_alter_collection(self, node: AlterCollectionStmt) -> ExecutionResul
557556 topology = self ._resolve_topology (node .collection )
558557
559558 update_kwargs : dict [str , Any ] = {"collection_name" : node .collection }
560- vectors_config = self ._build_vectors_config_diff (node . collection , node .config )
559+ vectors_config = self ._build_vectors_config_diff (topology , node .config )
561560 hnsw_config = self ._build_hnsw_config (node .config )
562561 optimizers_config = self ._build_optimizers_config (node .config )
563562 collection_params = self ._build_collection_params_diff (node .config )
@@ -1328,12 +1327,11 @@ def _build_collection_params_diff(
13281327
13291328 def _build_vectors_config_diff (
13301329 self ,
1331- collection_name : str ,
1330+ topology : CollectionTopology ,
13321331 config : CollectionConfig | None ,
13331332 ) -> dict [str , VectorParamsDiff ] | None :
13341333 if config is None or config .vectors is None :
13351334 return None
1336- topology = self ._resolve_topology (collection_name )
13371335 vector_name = topology .dense_config_key ()
13381336 return {
13391337 vector_name : VectorParamsDiff (on_disk = config .vectors .on_disk ),
0 commit comments