@@ -248,11 +248,13 @@ class IndexIVFPQ {
248248 const QueryVectorArray& vectors,
249249 size_t top_k,
250250 size_t nprobe,
251- size_t upper_bound = 0 ) {
251+ size_t upper_bound = 0 ,
252+ float k_factor = 1 .f) {
252253 if (!index_) {
253254 throw std::runtime_error (" Cannot query() because there is no index." );
254255 }
255- return index_->query (queryType, vectors, top_k, nprobe, upper_bound);
256+ return index_->query (
257+ queryType, vectors, top_k, nprobe, upper_bound, k_factor);
256258 }
257259
258260 void write_index (
@@ -398,7 +400,8 @@ class IndexIVFPQ {
398400 const QueryVectorArray& vectors,
399401 size_t top_k,
400402 size_t nprobe,
401- size_t upper_bound) = 0 ;
403+ size_t upper_bound,
404+ float k_factor) = 0 ;
402405
403406 virtual void write_index (
404407 const tiledb::Context& ctx,
@@ -508,7 +511,8 @@ class IndexIVFPQ {
508511 const QueryVectorArray& vectors,
509512 size_t top_k,
510513 size_t nprobe,
511- size_t upper_bound) override {
514+ size_t upper_bound,
515+ float k_factor) override {
512516 // @todo using index_type = size_t;
513517 auto dtype = vectors.feature_type ();
514518
@@ -519,8 +523,8 @@ class IndexIVFPQ {
519523 (float *)vectors.data (),
520524 extents (vectors)[0 ],
521525 extents (vectors)[1 ]}; // @todo ??
522- auto [s, t] =
523- impl_index_. query ( queryType, qspan, top_k, nprobe, upper_bound);
526+ auto [s, t] = impl_index_. query (
527+ queryType, qspan, top_k, nprobe, upper_bound, k_factor );
524528 auto x = FeatureVectorArray{std::move (s)};
525529 auto y = FeatureVectorArray{std::move (t)};
526530 return {std::move (x), std::move (y)};
@@ -530,8 +534,8 @@ class IndexIVFPQ {
530534 (uint8_t *)vectors.data (),
531535 extents (vectors)[0 ],
532536 extents (vectors)[1 ]}; // @todo ??
533- auto [s, t] =
534- impl_index_. query ( queryType, qspan, top_k, nprobe, upper_bound);
537+ auto [s, t] = impl_index_. query (
538+ queryType, qspan, top_k, nprobe, upper_bound, k_factor );
535539 auto x = FeatureVectorArray{std::move (s)};
536540 auto y = FeatureVectorArray{std::move (t)};
537541 return {std::move (x), std::move (y)};
0 commit comments