@@ -627,13 +627,21 @@ def _parse_hybrid(
627627
628628 targets , target_vectors = self .__target_vector_to_grpc (target_vector )
629629
630- near_text , near_vector , vector_bytes = None , None , None
630+ near_text , near_vector , vector_bytes , vectors = None , None , None , None
631631
632632 if vector is None :
633633 pass
634634 elif isinstance (vector , list ) and len (vector ) > 0 and isinstance (vector [0 ], float ):
635635 # fast path for simple vector
636636 vector_bytes = struct .pack ("{}f" .format (len (vector )), * vector )
637+ elif _is_2d_vector (vector ) and self ._weaviate_version .is_at_least (1 , 29 , 0 ):
638+ # fast path for simple multi-vector
639+ vectors = [
640+ base_pb2 .Vectors (
641+ vector_bytes = _Pack .multi (vector ),
642+ type = base_pb2 .Vectors .VECTOR_TYPE_MULTI_FP32 ,
643+ )
644+ ]
637645 elif isinstance (vector , _HybridNearText ):
638646 near_text = base_search_pb2 .NearTextSearch (
639647 query = [vector .text ] if isinstance (vector .text , str ) else vector .text ,
@@ -715,6 +723,7 @@ def _parse_hybrid(
715723 near_vector = near_vector ,
716724 vector_bytes = vector_bytes ,
717725 vector_distance = distance ,
726+ vectors = vectors ,
718727 )
719728 if query is not None or vector is not None
720729 else None
0 commit comments