@@ -25,16 +25,19 @@ bool enable_stats = false;
2525std::vector<json> core_stats;
2626
2727PYBIND11_MAKE_OPAQUE (std::vector<uint8_t >);
28+ PYBIND11_MAKE_OPAQUE (std::vector<int8_t >);
2829PYBIND11_MAKE_OPAQUE (std::vector<uint32_t >);
2930PYBIND11_MAKE_OPAQUE (std::vector<uint64_t >);
3031PYBIND11_MAKE_OPAQUE (std::vector<float >);
3132PYBIND11_MAKE_OPAQUE (std::vector<double >);
3233PYBIND11_MAKE_OPAQUE (std::list<std::vector<uint8_t >>);
34+ PYBIND11_MAKE_OPAQUE (std::list<std::vector<int8_t >>);
3335PYBIND11_MAKE_OPAQUE (std::list<std::vector<uint32_t >>);
3436PYBIND11_MAKE_OPAQUE (std::list<std::vector<uint64_t >>);
3537PYBIND11_MAKE_OPAQUE (std::list<std::vector<float >>);
3638PYBIND11_MAKE_OPAQUE (std::list<std::vector<double >>);
3739PYBIND11_MAKE_OPAQUE (std::vector<std::list<uint8_t >>);
40+ PYBIND11_MAKE_OPAQUE (std::vector<std::list<int8_t >>);
3841PYBIND11_MAKE_OPAQUE (std::vector<std::list<uint32_t >>);
3942PYBIND11_MAKE_OPAQUE (std::vector<std::list<uint64_t >>);
4043PYBIND11_MAKE_OPAQUE (std::vector<std::list<float >>);
@@ -627,6 +630,7 @@ PYBIND11_MODULE(_tiledbvspy, m) {
627630 declareStdVector<float >(m, " f32" );
628631 declareStdVector<double >(m, " f64" );
629632 declareStdVector<uint8_t >(m, " u8" );
633+ declareStdVector<int8_t >(m, " i8" );
630634 declareStdVector<uint32_t >(m, " u32" );
631635 declareStdVector<uint64_t >(m, " u64" );
632636 if constexpr (!std::is_same_v<uint64_t , size_t >) {
@@ -664,6 +668,7 @@ PYBIND11_MODULE(_tiledbvspy, m) {
664668 /* === Matrix === */
665669
666670 declareColMajorMatrix<uint8_t >(m, " _u8" );
671+ declareColMajorMatrix<int8_t >(m, " _i8" );
667672 declareColMajorMatrix<float >(m, " _f32" );
668673 declareColMajorMatrix<double >(m, " _f64" );
669674 declareColMajorMatrix<int32_t >(m, " _i32" );
@@ -677,6 +682,8 @@ PYBIND11_MODULE(_tiledbvspy, m) {
677682
678683 declareColMajorMatrixSubclass<tdbColMajorMatrix<uint8_t >>(
679684 m, " tdbColMajorMatrix" , " _u8" );
685+ declareColMajorMatrixSubclass<tdbColMajorMatrix<int8_t >>(
686+ m, " tdbColMajorMatrix" , " _i8" );
680687 declareColMajorMatrixSubclass<tdbColMajorMatrix<uint64_t >>(
681688 m, " tdbColMajorMatrix" , " _u64" );
682689 declareColMajorMatrixSubclass<tdbColMajorMatrix<float >>(
@@ -688,6 +695,7 @@ PYBIND11_MODULE(_tiledbvspy, m) {
688695
689696 // Converters from pyarray to matrix
690697 declare_pyarray_to_matrix<uint8_t >(m, " _u8" );
698+ declare_pyarray_to_matrix<int8_t >(m, " _i8" );
691699 declare_pyarray_to_matrix<uint64_t >(m, " _u64" );
692700 declare_pyarray_to_matrix<float >(m, " _f32" );
693701 declare_pyarray_to_matrix<double >(m, " _f64" );
@@ -716,6 +724,17 @@ PYBIND11_MODULE(_tiledbvspy, m) {
716724 return r;
717725 });
718726
727+ m.def (
728+ " query_vq_i8" ,
729+ [](tdbColMajorMatrix<int8_t >& data,
730+ ColMajorMatrix<float >& query_vectors,
731+ int k,
732+ size_t nthreads)
733+ -> std::tuple<ColMajorMatrix<float >, ColMajorMatrix<uint64_t >> {
734+ auto r = detail::flat::vq_query_heap (data, query_vectors, k, nthreads);
735+ return r;
736+ });
737+
719738 m.def (
720739 " validate_top_k_u64" ,
721740 [](const ColMajorMatrix<uint64_t >& top_k,
@@ -724,33 +743,45 @@ PYBIND11_MODULE(_tiledbvspy, m) {
724743 });
725744
726745 declare_vq_query_heap<uint8_t >(m, " u8" );
746+ declare_vq_query_heap<int8_t >(m, " i8" );
727747 declare_vq_query_heap<float >(m, " f32" );
728748 declare_vq_query_heap_pyarray<uint8_t >(m, " u8" );
749+ declare_vq_query_heap_pyarray<int8_t >(m, " i8" );
729750 declare_vq_query_heap_pyarray<float >(m, " f32" );
730751
731752 declare_qv_query_heap_infinite_ram<uint8_t >(m, " u8" );
753+ declare_qv_query_heap_infinite_ram<int8_t >(m, " i8" );
732754 declare_qv_query_heap_infinite_ram<float >(m, " f32" );
733755 declare_qv_query_heap_finite_ram<uint8_t >(m, " u8" );
756+ declare_qv_query_heap_finite_ram<int8_t >(m, " i8" );
734757 declare_qv_query_heap_finite_ram<float >(m, " f32" );
735758 declare_nuv_query_heap_infinite_ram<uint8_t >(m, " u8" );
759+ declare_nuv_query_heap_infinite_ram<int8_t >(m, " i8" );
736760 declare_nuv_query_heap_infinite_ram<float >(m, " f32" );
737761 declare_nuv_query_heap_finite_ram<uint8_t >(m, " u8" );
762+ declare_nuv_query_heap_finite_ram<int8_t >(m, " i8" );
738763 declare_nuv_query_heap_finite_ram<float >(m, " f32" );
739764
740765 declare_ivf_index<uint8_t >(m, " u8" );
766+ declare_ivf_index<int8_t >(m, " i8" );
741767 declare_ivf_index<float >(m, " f32" );
742768 declare_ivf_index_tdb<uint8_t >(m, " u8" );
769+ declare_ivf_index_tdb<int8_t >(m, " i8" );
743770 declare_ivf_index_tdb<float >(m, " f32" );
744771
745772 declarePartitionIvfIndex<uint8_t >(m, " u8" );
773+ declarePartitionIvfIndex<int8_t >(m, " i8" );
746774 declarePartitionIvfIndex<float >(m, " f32" );
747775
748776 declarePartitionedMatrix<uint8_t , uint64_t , uint64_t , uint64_t >(
749777 m, " tdbPartitionedMatrix" , " u8" );
778+ declarePartitionedMatrix<int8_t , uint64_t , uint64_t , uint64_t >(
779+ m, " tdbPartitionedMatrix" , " i8" );
750780 declarePartitionedMatrix<float , uint64_t , uint64_t , uint64_t >(
751781 m, " tdbPartitionedMatrix" , " f32" );
752782
753783 declare_dist_qv<uint8_t >(m, " u8" );
784+ declare_dist_qv<int8_t >(m, " i8" );
754785 declare_dist_qv<float >(m, " f32" );
755786 declareFixedMinPairHeap (m);
756787
@@ -770,6 +801,7 @@ PYBIND11_MODULE(_tiledbvspy, m) {
770801 m.def (" stats_dump" , []() { return json{core_stats}.dump (); });
771802
772803 declare_debug_slice<uint8_t >(m, " _u8" );
804+ declare_debug_slice<int8_t >(m, " _i8" );
773805 declare_debug_slice<float >(m, " _f32" );
774806 declare_debug_slice<uint64_t >(m, " _u64" );
775807
0 commit comments