@@ -10,6 +10,8 @@ import {
1010 BaseNearOptions ,
1111 FetchObjectByIdOptions ,
1212 FetchObjectsOptions ,
13+ HybridNearTextSubSearch ,
14+ HybridNearVectorSubSearch ,
1315 HybridOptions ,
1416 NearVectorInputType ,
1517 SearchOptions ,
@@ -66,8 +68,11 @@ export class Check<T> {
6668 return check . supports ;
6769 } ;
6870
69- private checkSupportForMultiVectorSearch = async ( vec ?: NearVectorInputType ) => {
70- if ( ! Serialize . isMultiVector ( vec ) ) return false ;
71+ private checkSupportForMultiVectorSearch = async (
72+ vec ?: NearVectorInputType | HybridNearVectorSubSearch | HybridNearTextSubSearch
73+ ) => {
74+ if ( Serialize . isHybridNearVectorSearch ( vec ) && ! Serialize . isMultiVector ( vec . vector ) ) return false ;
75+ if ( Serialize . isHybridVectorSearch ( vec ) && ! Serialize . isMultiVector ( vec ) ) return false ;
7176 const check = await this . dbVersionSupport . supportsMultiVectorSearch ( ) ;
7277 if ( ! check . supports ) throw new WeaviateUnsupportedFeatureError ( check . message ) ;
7378 return check . supports ;
@@ -80,8 +85,13 @@ export class Check<T> {
8085 return check . supports ;
8186 } ;
8287
83- private checkSupportForMultiVectorPerTargetSearch = async ( vec ?: NearVectorInputType ) => {
84- if ( ! Serialize . isMultiVectorPerTarget ( vec ) ) return false ;
88+ private checkSupportForMultiVectorPerTargetSearch = async (
89+ vec ?: NearVectorInputType | HybridNearVectorSubSearch | HybridNearTextSubSearch
90+ ) => {
91+ if ( vec === undefined || Serialize . isHybridNearTextSearch ( vec ) ) return false ;
92+ if ( Serialize . isHybridNearVectorSearch ( vec ) && ! Serialize . isMultiVectorPerTarget ( vec . vector ) )
93+ return false ;
94+ if ( Serialize . isHybridVectorSearch ( vec ) && ! Serialize . isMultiVectorPerTarget ( vec ) ) return false ;
8595 const check = await this . dbVersionSupport . supportsMultiVectorPerTargetSearch ( ) ;
8696 if ( ! check . supports ) throw new WeaviateUnsupportedFeatureError ( check . message ) ;
8797 return check . supports ;
@@ -94,7 +104,9 @@ export class Check<T> {
94104 this . checkSupportForMultiWeightPerTargetSearch ( opts ) ,
95105 this . checkSupportForNamedVectors ( opts ) ,
96106 ] ) . then ( ( [ search , supportsTargets , supportsWeightsForTargets ] ) => {
97- return { search, supportsTargets, supportsWeightsForTargets } ;
107+ const is126 = supportsTargets ;
108+ const is127 = supportsWeightsForTargets ;
109+ return { search, supportsTargets : is126 || is127 , supportsWeightsForTargets : is127 } ;
98110 } ) ;
99111 } ;
100112
@@ -110,15 +122,17 @@ export class Check<T> {
110122 ( [
111123 search ,
112124 supportsMultiTarget ,
113- supportMultiVector ,
125+ supportsMultiVector ,
114126 supportsVectorsForTargets ,
115127 supportsWeightsForTargets ,
116128 ] ) => {
129+ const is126 = supportsMultiTarget || supportsMultiVector ;
130+ const is127 = supportsVectorsForTargets || supportsWeightsForTargets ;
117131 return {
118132 search,
119- supportsTargets : supportsMultiTarget || supportMultiVector ,
120- supportsVectorsForTargets,
121- supportsWeightsForTargets,
133+ supportsTargets : is126 || is127 ,
134+ supportsVectorsForTargets : is127 ,
135+ supportsWeightsForTargets : is127 ,
122136 } ;
123137 }
124138 ) ;
@@ -128,12 +142,8 @@ export class Check<T> {
128142 return Promise . all ( [
129143 this . getSearcher ( ) ,
130144 this . checkSupportForMultiTargetSearch ( opts ) ,
131- this . checkSupportForMultiVectorSearch (
132- Serialize . isHybridVectorSearch ( opts ?. vector ) ? opts ?. vector : undefined
133- ) ,
134- this . checkSupportForMultiVectorPerTargetSearch (
135- Serialize . isHybridVectorSearch ( opts ?. vector ) ? opts ?. vector : undefined
136- ) ,
145+ this . checkSupportForMultiVectorSearch ( opts ?. vector ) ,
146+ this . checkSupportForMultiVectorPerTargetSearch ( opts ?. vector ) ,
137147 this . checkSupportForMultiWeightPerTargetSearch ( opts ) ,
138148 this . checkSupportForNamedVectors ( opts ) ,
139149 this . checkSupportForBm25AndHybridGroupByQueries ( 'Hybrid' , opts ) ,
@@ -142,15 +152,17 @@ export class Check<T> {
142152 ( [
143153 search ,
144154 supportsMultiTarget ,
145- supportMultiVector ,
155+ supportsMultiVector ,
146156 supportsWeightsForTargets ,
147157 supportsVectorsForTargets ,
148158 ] ) => {
159+ const is126 = supportsMultiTarget || supportsMultiVector ;
160+ const is127 = supportsVectorsForTargets || supportsWeightsForTargets ;
149161 return {
150162 search,
151- supportsTargets : supportsMultiTarget || supportMultiVector ,
152- supportsWeightsForTargets,
153- supportsVectorsForTargets,
163+ supportsTargets : is126 || is127 ,
164+ supportsWeightsForTargets : is127 ,
165+ supportsVectorsForTargets : is127 ,
154166 } ;
155167 }
156168 ) ;
0 commit comments