← 开源
gvinciguerra

PGM-index

🏅State-of-the-art learned data structure that enables fast lookup, predecessor, range searches and updates in arrays of billions of items using orders of magnitude less space than traditional indexes

InfrastructureIndex & SearchC++
在 GitHub 打开
增长势头
+024 小时新增 Star0.0%
874
Star
104
Fork
+0
本周
8
贡献者
创建于 2019-10-18 · 更新于 2026-09-11 · 今日第 12997 名
主要开发者

gvinciguerra/PGM-index 排名第 12,997,有 874 个星标。

同类别比较

gvinciguerra/PGM-index 排名第 12,997,此处有 8 个同类条目;crabwise-ai/crabwalk 排名第 12,996。

同类别比较
名称排名指标
locuslab/wanda12,939
语言:
Python
星标数:
881
分叉数:
134
简介:
A simple and effective LLM pruning approach.
mind/wheels12,942
星标数:
881
分叉数:
104
简介:
Performance-optimized wheels for TensorFlow (SSE, AVX, FMA, XLA, MPI)
alibaba/TinyNeuralNetwork12,947
语言:
Python
星标数:
880
分叉数:
134
简介:
TinyNeuralNetwork is an efficient and easy-to-use deep learning model compression framework.
crabwise-ai/crabwalk12,996
语言:
TypeScript
星标数:
874
分叉数:
96
简介:
🦀 Crabwalk 🦀 Real-time companion monitor for OpenClaw agents.
epsilla-cloud/vectordb13,002
语言:
C++
星标数:
873
分叉数:
45
简介:
A high performance Vector Database leveraging parallel graph computing
PABannier/bark.cpp13,042
语言:
C++
星标数:
869
分叉数:
77
简介:
Suno AI's Bark model in C/C++ for fast text-to-speech generation
AgnostiqHQ/covalent13,047
语言:
Python
星标数:
868
分叉数:
114
简介:
Pythonic tool for orchestrating machine-learning/high performance/quantum-computing workflows in heterogeneous compute environments.
mit-han-lab/omniserve13,101
语言:
C++
星标数:
863
分叉数:
71
简介:
[MLSys'25] QServe: W4A8KV4 Quantization and System Co-design for Efficient LLM Serving; [MLSys'25] LServe: Efficient Long-sequence LLM Serving with Unified Sparse Attention
关键参数与规格
关键参数与规格
参数值
语言C++
类别Infrastructure
子类别Index & Search
星标数874
分叉数104
贡献者8
创建日期2019-10-18
更新日期2026-09-11
1 天星标数0
7 天星标数0
排名12,997
上次排名12,890
排名变化-107
7 天星标排名13,712
上次 7 天星标排名13,724
7 天星标排名变化12
总星标排名12,393
上次总星标排名12,367
总星标排名变化-26
国家Italy
README 摘录

The Piecewise Geometric Model index (PGM-index) is a data structure that enables fast lookup, predecessor, range searches and updates in arrays of billions of items using orders of magnitude less space than traditional indexes while providing the same worst-case query time guarantees. Quickstart This is a header-only library. Just clone the repo with and copy the directory to your system's or project's include path. The file shows how to index and query a vector of random integers

with the PGM-index: Run and edit this and other examples on Repl. Or run it locally via: Classes overview Other than the class in the example above, this library provides the following classes: supports insertions and deletions. stores points in k dimensions and supports orthogonal range queries. stores data on disk and uses a PGMIndex for fast search operations. compresses the segments to reduce the space usage of the index. uses a binary search on the segments rather than

a recursive structure. uses a top-level lookup table to speed up the search on the segments. uses a top-level succinct structure to speed up the search on the segments. The full documentation is available here. Compile the tests and the tuner After cloning the repository, build the project with The test runner will be placed in . The tuner executable will be placed in . The benchmark executable will be placed in . License This project is licensed under the terms

of the Apache License 2. If you use the library please put a link to the website and cite the following paper: Paolo Ferragina and Giorgio Vinciguerra. The PGM-index: a fully-dynamic compressed learned index with provable worst-case bounds.

常见问题

记录了多少星标和分叉?

gvinciguerra/PGM-index 有 874 个星标和 104 个分叉。

仓库排名是多少?

gvinciguerra/PGM-index 排名第 12,997。

记录的语言和类别是什么?

gvinciguerra/PGM-index 有 874 个星标,语言为 C++,类别为 Infrastructure。

哪个仓库排名最接近?

gvinciguerra/PGM-index 与 crabwise-ai/crabwalk 比较,后者排名第 12,996,有 874 个星标。

README

The Piecewise Geometric Model index (PGM-index) is a data structure that enables fast lookup, predecessor, range searches and updates in arrays of billions of items using orders of magnitude less space than traditional indexes while providing the same worst-case query time guarantees.

[Website](https://pgm.di.unipi.it/)
| [Documentation](https://pgm.di.unipi.it/docs)
| [Paper](http://www.vldb.org/pvldb/vol13/p1162-ferragina.pdf)
| [Slides](https://pgm.di.unipi.it/slides-pgm-index-vldb.pdf)
| [Python wrapper](https://github.com/gvinciguerra/PyGM)
| [A³ Lab](http://acube.di.unipi.it)





[![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/gvinciguerra/PGM-index/build.yml)](https://github.com/gvinciguerra/PGM-index/actions?query=workflow%3Abuild)
[![License](https://img.shields.io/github/license/gvinciguerra/PGM-index)](https://github.com/gvinciguerra/PGM-index/blob/master/LICENSE)
[![GitHub stars](https://img.shields.io/github/stars/gvinciguerra/PGM-index)](https://github.com/gvinciguerra/PGM-index/stargazers)
[![GitHub forks](https://img.shields.io/github/forks/gvinciguerra/PGM-index)](https://github.com/gvinciguerra/PGM-index/network/members)
[![Run on Repl.it](https://img.shields.io/badge/run-examples-667881?logo=repl.it&logoColor=white)](https://repl.it/github/gvinciguerra/PGM-index)

Quickstart

This is a header-only library. It does not need to be installed. Just clone the repo with

git clone https://github.com/gvinciguerra/PGM-index.git
cd PGM-index

and copy the include/pgm directory to your system's or project's include path.

The examples/simple.cpp file shows how to index and query a vector of random integers with the PGM-index:

#include 
#include 
#include 
#include 
#include "pgm/pgm_index.hpp"

int main() {
    // Generate some random data
    std::vector data(1000000);
    std::generate(data.begin(), data.end(), std::rand);
    data.push_back(42);
    std::sort(data.begin(), data.end());

    // Construct the PGM-index
    const int epsilon = 128; // space-time trade-off parameter
    pgm::PGMIndex index(data);

    // Query the PGM-index
    auto q = 42;
    auto range = index.search(q);
    auto lo = data.begin() + range.lo;
    auto hi = data.begin() + range.hi;
    std::cout << *std::lower_bound(lo, hi, q);

    return 0;
}

Run and edit this and other examples on Repl.it. Or run it locally via:

g++ examples/simple.cpp -std=c++17 -I./include -o simple
./simple

Classes overview

Other than the pgm::PGMIndex class in the example above, this library provides the following classes:

  • pgm::DynamicPGMIndex supports insertions and deletions.
  • pgm::MultidimensionalPGMIndex stores points in k dimensions and supports orthogonal range queries.
  • pgm::MappedPGMIndex stores data on disk and uses a PGMIndex for fast search operations.
  • pgm::CompressedPGMIndex compresses the segments to reduce the space usage of the index.
  • pgm::OneLevelPGMIndex uses a binary search on the segments rather than a recursive structure.
  • pgm::BucketingPGMIndex uses a top-level lookup table to speed up the search on the segments.
  • pgm::EliasFanoPGMIndex uses a top-level succinct structure to speed up the search on the segments.

The full documentation is available here.

Compile the tests and the tuner

After cloning the repository, build the project with

cmake . -DCMAKE_BUILD_TYPE=Release
make -j8

The test runner will be placed in test/. The tuner executable will be placed in tuner/. The benchmark executable will be placed in benchmark/.

License

This project is licensed under the terms of the Apache License 2.0.

If you use the library please put a link to the website and cite the following paper:

Paolo Ferragina and Giorgio Vinciguerra. The PGM-index: a fully-dynamic compressed learned index with provable worst-case bounds. PVLDB, 13(8): 1162-1175, 2020.

@article{Ferragina:2020pgm,
  Author = {Paolo Ferragina and Giorgio Vinciguerra},
  Title = {The {PGM-index}: a fully-dynamic compressed learned index with provable worst-case bounds},
  Year = {2020},
  Volume = {13},
  Number = {8},
  Pages = {1162--1175},
  Doi = {10.14778/3389133.3389135},
  Url = {https://pgm.di.unipi.it},
  Issn = {2150-8097},
  Journal = {{PVLDB}}}
排名相邻
同类项目