New index building APIs for simpler and flexible usage
Mantenedores costumam responder em até 5 dias
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 5/5
- Tempo estimado
- Mais de uma semana
- Facilidade para iniciantes
- 30/100
Direção de pesquisa
Comece revisando a API Vamana::build existente e o fluxo de SQDataset::compress descrito na issue. A alteração deve fornecer pontos de entrada para a construção de índices que aceitem dados não compactados e um tipo de dataset, ofereçam fallback para dados não compactados e permitam que a compactação e a construção do grafo prossigam de forma independente.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
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.
- Linguagem predominante
- C++
- Estrelas
- 241
- Forks
- 48
- Merge médio
- 4d 21h
- PRs com merge (30d)
- 11
Preparar o ambiente
- Sem Dockerfile nem arquivo Docker Compose
- Sem modelo de pull request
- Ler o guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de intel/ScalableVectorSearch
-
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 88/100
intel/ScalableVectorSearch#356 ·
Mantenedores costumam responder em até 5 dias
-
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 42/100
intel/ScalableVectorSearch#469 ·
Mantenedores costumam responder em até 5 dias
-
Add CI test for C API on ARMAbertaenhancement
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 32/100
intel/ScalableVectorSearch#460 ·
Mantenedores costumam responder em até 5 dias
-
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 55/100
intel/ScalableVectorSearch#438 ·
Mantenedores costumam responder em até 5 dias
-
CI: tier the test matrix into PR / main / nightly to cut Actions minutesTalvez já em andamento Um pull request vinculado a esta issue está aberto ou já foi mesclado. Aberta
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 32/100
intel/ScalableVectorSearch#432 · 1 comentário ·
Mantenedores costumam responder em até 5 dias
Todas as issues de intel/ScalableVectorSearch
Issues semelhantes
-
runtime: lf_f128_mod is documented as fmodq (truncating) but implements floor-based modulo; unusedAbertainternal correctness low priority rt_lib
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
Mantenedores costumam responder em até 1 dia
-
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 87/100
-
PriorityNotificationQueue::wakeUpAll() loses the wake-up for a thread that is not waiting yetTalvez já em andamento @matejk assumiu hoje. Abertabug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
pocoproject/poco#5674 ·
Mantenedores costumam responder em até 2 dias
-
bug docs GUI
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 62/100
sonic-pi-net/sonic-pi#3609 ·
-
Unreachable code warningAbertabug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 70/100
SanderMertens/flecs#2395 ·
Mantenedores costumam responder em até 1 dia