@@ -66,16 +66,23 @@ export class Check<T> {
6666 return check . supports ;
6767 } ;
6868
69- private checkSupportForMultiTargetSearchMultiWeights = async ( opts ?: BaseNearOptions < T > ) => {
70- if ( ! Serialize . isMultiTargetMultiWeights ( opts ) ) return false ;
71- const check = await this . dbVersionSupport . supportsMultiTargetVectorSearchMultiWeights ( ) ;
69+ private checkSupportForMultiVectorSearch = async ( vec ?: NearVectorInputType ) => {
70+ if ( ! Serialize . isMultiVector ( vec ) ) return false ;
71+ const check = await this . dbVersionSupport . supportsMultiVectorSearch ( ) ;
7272 if ( ! check . supports ) throw new WeaviateUnsupportedFeatureError ( check . message ) ;
7373 return check . supports ;
7474 } ;
7575
76- private checkSupportForMultiVectorSearch = async ( vec ?: BaseHybridOptions < T > [ 'vector' ] ) => {
77- if ( ! Serialize . isHybridVectorSearch ( vec ) || ! Serialize . isMultiVector ( vec ) ) return false ;
78- const check = await this . dbVersionSupport . supportsMultiVectorSearch ( ) ;
76+ private checkSupportForMultiWeightPerTargetSearch = async ( opts ?: BaseNearOptions < T > ) => {
77+ if ( ! Serialize . isMultiWeightPerTarget ( opts ) ) return false ;
78+ const check = await this . dbVersionSupport . supportsMultiWeightsPerTargetSearch ( ) ;
79+ if ( ! check . supports ) throw new WeaviateUnsupportedFeatureError ( check . message ) ;
80+ return check . supports ;
81+ } ;
82+
83+ private checkSupportForMultiVectorPerTargetSearch = async ( vec ?: NearVectorInputType ) => {
84+ if ( ! Serialize . isMultiVectorPerTarget ( vec ) ) return false ;
85+ const check = await this . dbVersionSupport . supportsMultiVectorPerTargetSearch ( ) ;
7986 if ( ! check . supports ) throw new WeaviateUnsupportedFeatureError ( check . message ) ;
8087 return check . supports ;
8188 } ;
@@ -84,7 +91,7 @@ export class Check<T> {
8491 return Promise . all ( [
8592 this . getSearcher ( ) ,
8693 this . checkSupportForMultiTargetSearch ( opts ) ,
87- this . checkSupportForMultiTargetSearchMultiWeights ( opts ) ,
94+ this . checkSupportForMultiWeightPerTargetSearch ( opts ) ,
8895 this . checkSupportForNamedVectors ( opts ) ,
8996 ] ) . then ( ( [ search , supportsTargets , supportsWeightsForTargets ] ) => {
9097 return { search, supportsTargets, supportsWeightsForTargets } ;
@@ -95,26 +102,58 @@ export class Check<T> {
95102 return Promise . all ( [
96103 this . getSearcher ( ) ,
97104 this . checkSupportForMultiTargetSearch ( opts ) ,
98- this . checkSupportForMultiTargetSearchMultiWeights ( opts ) ,
99105 this . checkSupportForMultiVectorSearch ( vec ) ,
106+ this . checkSupportForMultiVectorPerTargetSearch ( vec ) ,
107+ this . checkSupportForMultiWeightPerTargetSearch ( opts ) ,
100108 this . checkSupportForNamedVectors ( opts ) ,
101- ] ) . then ( ( [ search , supportsTargets , supportsWeightsForTargets , supportsVectorsForTargets ] ) => {
102- return { search, supportsTargets, supportsVectorsForTargets, supportsWeightsForTargets } ;
103- } ) ;
109+ ] ) . then (
110+ ( [
111+ search ,
112+ supportsMultiTarget ,
113+ supportMultiVector ,
114+ supportsVectorsForTargets ,
115+ supportsWeightsForTargets ,
116+ ] ) => {
117+ return {
118+ search,
119+ supportsTargets : supportsMultiTarget || supportMultiVector ,
120+ supportsVectorsForTargets,
121+ supportsWeightsForTargets,
122+ } ;
123+ }
124+ ) ;
104125 } ;
105126
106127 public hybridSearch = ( opts ?: BaseHybridOptions < T > ) => {
107128 return Promise . all ( [
108129 this . getSearcher ( ) ,
109130 this . checkSupportForMultiTargetSearch ( opts ) ,
110- this . checkSupportForMultiTargetSearchMultiWeights ( opts ) ,
111- this . checkSupportForMultiVectorSearch ( opts ?. vector ) ,
131+ this . checkSupportForMultiVectorSearch (
132+ Serialize . isHybridVectorSearch ( opts ?. vector ) ? opts ?. vector : undefined
133+ ) ,
134+ this . checkSupportForMultiVectorPerTargetSearch (
135+ Serialize . isHybridVectorSearch ( opts ?. vector ) ? opts ?. vector : undefined
136+ ) ,
137+ this . checkSupportForMultiWeightPerTargetSearch ( opts ) ,
112138 this . checkSupportForNamedVectors ( opts ) ,
113139 this . checkSupportForBm25AndHybridGroupByQueries ( 'Hybrid' , opts ) ,
114140 this . checkSupportForHybridNearTextAndNearVectorSubSearches ( opts ) ,
115- ] ) . then ( ( [ search , supportsTargets , supportsWeightsForTargets , supportsVectorsForTargets ] ) => {
116- return { search, supportsTargets, supportsWeightsForTargets, supportsVectorsForTargets } ;
117- } ) ;
141+ ] ) . then (
142+ ( [
143+ search ,
144+ supportsMultiTarget ,
145+ supportMultiVector ,
146+ supportsWeightsForTargets ,
147+ supportsVectorsForTargets ,
148+ ] ) => {
149+ return {
150+ search,
151+ supportsTargets : supportsMultiTarget || supportMultiVector ,
152+ supportsWeightsForTargets,
153+ supportsVectorsForTargets,
154+ } ;
155+ }
156+ ) ;
118157 } ;
119158
120159 public fetchObjects = ( opts ?: FetchObjectsOptions < T > ) => {
0 commit comments