Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 35 additions & 1 deletion .github/workflows/build-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,37 @@ jobs:
uses: actions/checkout@v4
with:
submodules: recursive
fetch-depth: 2

- name: Classify pull request changes
id: changes
shell: bash
run: |
if [[ "${{ github.event_name }}" != "pull_request" ]]; then
echo "run_build=true" >> "$GITHUB_OUTPUT"
exit 0
fi

if git diff --quiet HEAD^1 HEAD -- \
. \
':(exclude)*.md' \
':(exclude)**/*.md' \
':(exclude).github/workflows/*.yml' \
':(exclude).github/workflows/*.yaml'; then
echo "run_build=false" >> "$GITHUB_OUTPUT"
echo "Documentation/CI-only pull request: full native build is not required."
else
echo "run_build=true" >> "$GITHUB_OUTPUT"
fi

- name: Set up Python 3.10
if: steps.changes.outputs.run_build == 'true'
uses: actions/setup-python@v5
with:
python-version: '3.10'

- name: Cache pip packages
if: steps.changes.outputs.run_build == 'true'
uses: actions/cache@v4
with:
path: ~/.cache/pip
Expand All @@ -31,6 +55,7 @@ jobs:
${{ runner.os }}-pip-

- name: Cache CMake build
if: steps.changes.outputs.run_build == 'true'
uses: actions/cache@v4
with:
path: |
Expand All @@ -44,6 +69,7 @@ jobs:
${{ runner.os }}-cmake-all-

- name: Install system dependencies
if: steps.changes.outputs.run_build == 'true'
run: |
sudo apt-get update
sudo apt-get install -y \
Expand All @@ -63,55 +89,63 @@ jobs:
libspdlog-dev

- name: Install Intel MKL
if: steps.changes.outputs.run_build == 'true'
run: |
wget -qO - https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB | sudo apt-key add -
echo "deb https://apt.repos.intel.com/oneapi all main" | sudo tee /etc/apt/sources.list.d/oneAPI.list
sudo apt-get update
sudo apt-get install -y intel-oneapi-mkl-devel || echo "MKL installation warning (non-fatal)"

- name: Run deployment script
if: steps.changes.outputs.run_build == 'true'
run: |
chmod +x deploy.sh
./deploy.sh --skip-system-deps
timeout-minutes: 60

- name: Verify PyCANDYAlgo import
if: steps.changes.outputs.run_build == 'true'
run: |
source sage-db-bench/bin/activate
echo "=== Test PyCANDYAlgo Import ==="
python3 -c "import PyCANDYAlgo; print('PyCANDYAlgo:', PyCANDYAlgo.__version__)"

- name: Verify VSAG (pyvsag) import
if: steps.changes.outputs.run_build == 'true'
run: |
source sage-db-bench/bin/activate
echo "=== Test pyvsag Import ==="
python3 -c "import pyvsag; print('pyvsag:', pyvsag.__version__)" || echo "pyvsag: SKIPPED (optional)"

- name: Verify GTI (gti_wrapper) import
if: steps.changes.outputs.run_build == 'true'
run: |
source sage-db-bench/bin/activate
echo "=== Test gti_wrapper Import ==="
python3 -c "import gti_wrapper; print('gti_wrapper: OK')" || echo "gti_wrapper: SKIPPED (optional)"

- name: Verify IP-DiskANN (ipdiskann) import
if: steps.changes.outputs.run_build == 'true'
run: |
source sage-db-bench/bin/activate
echo "=== Test ipdiskann Import ==="
python3 -c "import ipdiskann; print('ipdiskann: OK')" || echo "ipdiskann: SKIPPED (optional)"

- name: Verify PLSH (plsh_python) import
if: steps.changes.outputs.run_build == 'true'
run: |
source sage-db-bench/bin/activate
echo "=== Test plsh_python Import ==="
python3 -c "import plsh_python; print('plsh_python: OK')" || echo "plsh_python: SKIPPED (optional)"

- name: Test core dependencies
if: steps.changes.outputs.run_build == 'true'
run: |
source sage-db-bench/bin/activate
python3 -c "import numpy; import torch; print('numpy:', numpy.__version__); print('torch:', torch.__version__)"

- name: Upload build logs on failure
if: failure()
if: failure() && steps.changes.outputs.run_build == 'true'
uses: actions/upload-artifact@v4
with:
name: build-logs
Expand Down
7 changes: 6 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,12 @@ Streaming vector index benchmarking framework.

This repository accompanies the following paper:

- Mingqi Wang et al. "CANDOR-Bench: Benchmarking In-Memory Continuous ANNS under Dynamic Open-World Streams." SIGMOD 2026.
- Mingqi Wang, Junyao Dong, Zhuoyan Wu, Jun Liu, Ruicheng Zhang, Jianjun
Zhao, Ruipeng Wan, Xinyan Lei, Shuhao Zhang, Bolong Zheng, Haikun Liu,
Xiaofei Liao, and Hai Jin. "CANDOR-Bench: Benchmarking In-Memory Continuous
ANNS under Dynamic Open-World Streams." SIGMOD 2026.
[Paper](https://doi.org/10.1145/3786630) |
[Official program](https://2026.sigmod.org/sigmod_program_detailed.shtml)

## Table of Contents
- [Quick Start Guide](#quick-start-guide)
Expand Down
9 changes: 9 additions & 0 deletions README.zh-CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,15 @@

流式向量索引基准测试框架

## 论文

Mingqi Wang、Junyao Dong、Zhuoyan Wu、Jun Liu、Ruicheng Zhang、Jianjun
Zhao、Ruipeng Wan、Xinyan Lei、Shuhao Zhang、Bolong Zheng、Haikun Liu、
Xiaofei Liao、Hai Jin。CANDOR-Bench: Benchmarking In-Memory Continuous ANNS
under Dynamic Open-World Streams。SIGMOD 2026。
[论文](https://doi.org/10.1145/3786630) |
[官方议程](https://2026.sigmod.org/sigmod_program_detailed.shtml)

## 1. 一键部署

```bash
Expand Down
Loading