New index building APIs for simpler and flexible usage
Les mainteneurs répondent en général sous 5 jours
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 5/5
- Temps estimé
- Plus d'une semaine
- Accessibilité débutants
- 30/100
Piste de recherche
Commencez par examiner l’API Vamana::build existante et le flux SQDataset::compress décrit dans l’issue. La modification doit fournir des points d’entrée pour la construction d’index qui acceptent des données non compressées et un type de dataset, prennent en charge le fallback vers les données non compressées et permettent à la compression et à la construction du graphe de progresser indépendamment.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
In SVS, we separate the concept of dataset and index. This allows an index to accept different datasets, such as FP32, Scalar Quantization (SQDataset), LVQ, and LeanVec.
Currently, using SQDataset as an example, users must call compress to get a SQDataset, then pass it to the index. However, most use cases don't care about the dataset itself - this two-step process is often unnecessary for most users. Additionally, this approach makes runtime fallback impossible to implement in SVS, as each dataset (i.e., type) is determined at compile time.
auto loaded =
svs::VectorDataLoader<float>(std::filesystem::path(SVS_DATA_DIR) / "data_f32.svs").load();
auto data =
svs::scalar::SQDataset<std::int8_t>::compress(loaded, threadpool); // SQDataset is determined at compile time
auto parameters = svs::index::vamana::VamanaBuildParameters{};
svs::Vamana index = svs::Vamana::build<float>(
parameters, data, svs::distance::DistanceL2(), num_threads
);
I propose adding index building APIs that directly accept uncompressed data and take the dataset type as a parameter to determine which dataset format to use internally.
auto loaded =
svs::VectorDataLoader<float>(std::filesystem::path(SVS_DATA_DIR) / "data_f32.svs").load();
auto parameters = svs::index::vamana::VamanaBuildParameters{};
svs::Vamana index = svs::Vamana::build<float>(
parameters, data, svs::distance::DistanceL2(), num_threads, svs::SQ8
); // internally, SVS fallbacks to uncompressed data if scalar quantization failed
Another advantage of this is that we could optionally utilize uncompressed data to build the graph rather than compressed data, which typically gives worse quality graphs as compression introduces approximation errors that can degrade the graph structure during construction.
Note that when calling build, we can compress the data and build the graph in parallel, as the two things are independent.
- Langage dominant
- C++
- Étoiles
- 241
- Forks
- 48
- Merge moyen
- 4 j 21 h
- PR mergées (30 j)
- 11
Préparer son environnement
- Aucun Dockerfile ni fichier Docker Compose
- Aucun modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de intel/ScalableVectorSearch
-
Difficulté 1/5 Moins d'une heure Accessibilité débutants 88/100
intel/ScalableVectorSearch#356 ·
Les mainteneurs répondent en général sous 5 jours
-
Difficulté 4/5 3-5 jours Accessibilité débutants 42/100
intel/ScalableVectorSearch#469 ·
Les mainteneurs répondent en général sous 5 jours
-
Add CI test for C API on ARMOuverteenhancement
Difficulté 3/5 1-2 jours Accessibilité débutants 32/100
intel/ScalableVectorSearch#460 ·
Les mainteneurs répondent en général sous 5 jours
-
Difficulté 4/5 3-5 jours Accessibilité débutants 55/100
intel/ScalableVectorSearch#438 ·
Les mainteneurs répondent en général sous 5 jours
-
CI: tier the test matrix into PR / main / nightly to cut Actions minutesPeut-être pris Une pull request liée à cette issue est ouverte ou déjà fusionnée. Ouverte
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 32/100
intel/ScalableVectorSearch#432 · 1 commentaire ·
Les mainteneurs répondent en général sous 5 jours
Toutes les issues de intel/ScalableVectorSearch
Issues similaires
-
runtime: lf_f128_mod is documented as fmodq (truncating) but implements floor-based modulo; unusedOuverteinternal correctness low priority rt_lib
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 1/5 Moins d'une heure Accessibilité débutants 87/100
-
PriorityNotificationQueue::wakeUpAll() loses the wake-up for a thread that is not waiting yetPeut-être pris @matejk l’a pris aujourd’hui. Ouvertebug
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
pocoproject/poco#5674 ·
Les mainteneurs répondent en général sous 2 jours
-
bug docs GUI
Difficulté 2/5 1-3 heures Accessibilité débutants 62/100
sonic-pi-net/sonic-pi#3609 ·
-
Unreachable code warningOuvertebug
Difficulté 2/5 1-3 heures Accessibilité débutants 70/100
SanderMertens/flecs#2395 ·
Les mainteneurs répondent en général sous 1 jour