Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
cc00e97
ci: change DOCS_PER_CHUNK to constexpr, otherwise it won't compile in…
sanikolaev Dec 10, 2025
9e8b71c
chore: misc/build-libs-for-test-kit.sh
sanikolaev Dec 10, 2025
27553b4
feat!: API_URL and API_TIMEOUT support
sanikolaev Dec 10, 2025
a42941c
post-review fixes
glookka Jan 22, 2026
978b374
more post-review fixes
glookka Jan 22, 2026
5e1684a
more post-review fixes
glookka Jan 22, 2026
3879f7b
feat(embeddings): support unlimited timeout for API models
donhardman Mar 20, 2026
2eff35c
style(embeddings): format struct field declarations
donhardman Mar 20, 2026
302509f
chore(deps): bump manticoresearch to 0ed9a0d
donhardman Mar 21, 2026
a8e2443
feat(embeddings): add ONNX model support with candle-onnx integration
donhardman Mar 26, 2026
f3dfcf5
Merge remote-tracking branch 'origin' into feature/onnx
donhardman Mar 27, 2026
df47004
chore(deps): update candle to manticoresoftware fork
donhardman Mar 29, 2026
5ea3de7
ci(workflows): add protoc installation to embedding builds
donhardman Mar 30, 2026
1a64bf1
feat(embeddings): add GPU acceleration and batched inference
donhardman Mar 26, 2026
cb9949c
ci(embedding): add platform-specific BLAS acceleration features
donhardman Mar 26, 2026
19bc71d
perf(embeddings): optimize release profile for speed over size
donhardman Mar 26, 2026
7ba8b47
perf(embeddings): batch tokenize texts with encode_batch
donhardman Mar 26, 2026
596c6de
Merge branch 'master' into fix/performance
donhardman Mar 30, 2026
19e1144
perf(embeddings): use repeat_n for tensor padding
donhardman Mar 30, 2026
ae89540
ci: upgrade GitHub actions to v4 and improve caching
donhardman Mar 30, 2026
612ebe5
ci: fix zstd removal timing for cache compatibility
donhardman Mar 30, 2026
45aa422
ci(workflows): simplify Windows bundle caching
donhardman Mar 30, 2026
26e63b5
ci(workflows): switch to curl for downloads
donhardman Mar 30, 2026
c6cef3b
ci(win_test): extract diskc/winbundle from sysroot tarball
donhardman Mar 30, 2026
c267c1d
chore: increment LIB_VERSION to 13
donhardman Mar 30, 2026
4d6ac58
chore(knn): decrement LIB_VERSION from 13 to 12
donhardman Mar 30, 2026
4ec3d3e
ci(test): add debug commands to check library dependencies
donhardman Mar 30, 2026
d260b9b
ci(embedding): install oneMKL for hgemm support
donhardman Apr 1, 2026
545a3f3
ci(embedding): force static OpenMP for oneMKL
donhardman Apr 2, 2026
dc31b21
refactor(embeddings): replace chunking with truncation
donhardman Apr 2, 2026
ac46270
feat(embeddings): switch ONNX backend to ort
donhardman Apr 2, 2026
4d46546
ci(embedding): bump rust and remove mkl setup
donhardman Apr 2, 2026
ebc6b5f
build(embeddings): switch TLS backend to rustls
donhardman Apr 2, 2026
cb65345
perf(embeddings): use zero-copy for text prediction
donhardman Apr 3, 2026
39f7b9f
perf!(embeddings): pre-truncate input text
donhardman Apr 3, 2026
c4c0458
ci: add Rust toolchain setup step
donhardman Apr 6, 2026
5793047
ci(embedding): add ONNX Runtime download for macOS builds
donhardman Apr 7, 2026
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
6 changes: 5 additions & 1 deletion .github/workflows/build_template.yml
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@ jobs:
RPM_PACKAGE_VERSION: ${{ inputs.rpm_package_version }}
steps:
- name: Checkout repository
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
token: ${{ secrets.GITHUB_TOKEN }}
set-safe-directory: true
Expand Down Expand Up @@ -144,13 +144,17 @@ jobs:
path: cache
enableCrossOsArchive: true
key: ${{ inputs.cache_key }}_${{ steps.branch.outputs.branch_name }}
restore-keys: |
${{ inputs.cache_key }}_master

- name: Check out deps cache before building
uses: actions/cache@v4
with:
path: build/_deps/cache
enableCrossOsArchive: true
key: ${{ inputs.cache_key }}_deps_${{ steps.branch.outputs.branch_name }}
restore-keys: |
${{ inputs.cache_key }}_deps_master

- name: 🚀 Build
run: ${{ inputs.cmake_command }}
Expand Down
91 changes: 77 additions & 14 deletions .github/workflows/embedding_build_template.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ jobs:
shell: bash
timeout-minutes: 15
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4

- name: Setup Rust toolchain
uses: actions-rs/toolchain@v1
Expand All @@ -36,16 +36,29 @@ jobs:
uses: arduino/setup-protoc@v3

- name: Cache cargo registry
uses: actions/cache@v3
uses: actions/cache@v4
with:
path: |
~/.cargo/registry
~/.cargo/git
./embeddings/target
./embeddings/.cache/manticore
key: quality-check-${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
key: cargo-registry-${{ runner.os }}-${{ hashFiles('embeddings/Cargo.lock') }}
restore-keys: cargo-registry-${{ runner.os }}-

- name: Cache cargo build target
uses: actions/cache@v4
with:
path: ./embeddings/target
key: cargo-target-${{ runner.os }}-${{ hashFiles('embeddings/Cargo.lock') }}-${{ hashFiles('embeddings/src/**/*.rs') }}
restore-keys: |
quality-check-${{ runner.os }}-cargo-
cargo-target-${{ runner.os }}-${{ hashFiles('embeddings/Cargo.lock') }}-
cargo-target-${{ runner.os }}-

- name: Cache ML test models
uses: actions/cache@v4
with:
path: ./embeddings/.cache/manticore
key: ml-models-${{ runner.os }}-${{ hashFiles('embeddings/src/model/local_test.rs') }}
restore-keys: ml-models-${{ runner.os }}-

- name: Run Clippy (strict mode)
run: cargo clippy --lib --manifest-path ./embeddings/Cargo.toml -- -D warnings
Expand Down Expand Up @@ -87,6 +100,13 @@ jobs:
JINA_API_KEY: ${{ secrets.JINA_API_KEY }}
RUST_BACKTRACE: 1

- name: Clean build target bloat
if: always()
run: |
rm -rf ./embeddings/target/debug/incremental
rm -rf ./embeddings/target/debug/.fingerprint
find ./embeddings/target/debug -name "*.d" -delete 2>/dev/null || true

- name: Quality check summary
run: |
echo "✅ Quality Check Summary:"
Expand Down Expand Up @@ -139,7 +159,10 @@ jobs:
lib_dir="./embeddings/target/${target}/release"
echo "lib_dir=${lib_dir}" >> $GITHUB_OUTPUT

- uses: actions/checkout@v3
- uses: actions/checkout@v4

- name: Setup Rust toolchain
uses: actions-rs/toolchain@v1
with:
toolchain: stable
target: ${{ steps.vars.outputs.target }}
Expand Down Expand Up @@ -168,41 +191,81 @@ jobs:
- name: Prepare build args
id: params
run: |
# Enable platform-specific BLAS acceleration:
# - macOS: Apple Accelerate framework (always available)
# - Linux/Windows x86_64: Intel MKL (downloaded at build time)
# - Linux aarch64: no extra BLAS (gemm crate uses NEON via runtime detection)
features=""
if [[ "${{ inputs.distr }}" == "macos" ]]; then
features="--features accelerate"
elif [[ "${{ inputs.arch }}" == "x86_64" ]]; then
features="--features mkl"
fi

args=(
"--target"
"${{ steps.vars.outputs.target }}"
"--target"
"${{ steps.vars.outputs.target }}"
"--lib"
"--release"
"--manifest-path"
"--release"
"--manifest-path"
"./embeddings/Cargo.toml"
${features}
)
echo "args=${args[@]}" >> $GITHUB_OUTPUT

- name: Cache cargo registry for Docker build
if: ${{ inputs.distr == 'linux' }}
uses: actions/cache@v4
with:
path: |
.cargo-cache/registry
.cargo-cache/git
key: emb-build-cargo-${{ runner.os }}-${{ inputs.arch }}-${{ hashFiles('embeddings/Cargo.lock') }}
restore-keys: emb-build-cargo-${{ runner.os }}-${{ inputs.arch }}-

- name: Build for Linux
if: ${{ inputs.distr == 'linux' }}
run: |
# Set Docker image based on architecture
if [[ "${{ inputs.arch }}" == "aarch64" ]]; then
docker_image="ghcr.io/manticoresoftware/rust-min-libc:aarch64-rust1.92.0-glibc2.27-openssl1.1.1k"
docker_image="ghcr.io/manticoresoftware/rust-min-libc:aarch64-rust1.94.1-glibc2.27-openssl1.1.1k"
extra=""
else
docker_image="ghcr.io/manticoresoftware/rust-min-libc:amd64-rust1.92.0-glibc2.27-openssl1.1.1k"
docker_image="ghcr.io/manticoresoftware/rust-min-libc:amd64-rust1.94.1-glibc2.27-openssl1.1.1k"
extra=""
fi

docker run --rm \
-v $(pwd):/src \
-v $(pwd)/.cargo-cache:/cargo-cache \
-w /src \
-u root \
-e CARGO_HOME=/cargo-cache \
-e MKLROOT=/opt/intel/oneapi/mkl/latest \
-e GIT_COMMIT_ID="${{ steps.git_meta.outputs.commit }}" \
-e GIT_TIMESTAMP_ID="${{ steps.git_meta.outputs.timestamp }}" \
--entrypoint bash \
"${docker_image}" \
-c "apt-get update -y && apt-get install -y gcc g++ protobuf-compiler && ${extra} cargo build ${{ steps.params.outputs.args }}"
sudo chown -hR $(id -u):$(id -g) ${{ steps.vars.outputs.lib_dir }}
sudo chown -hR $(id -u):$(id -g) .cargo-cache


- name: Build native
- name: Download ONNX Runtime static library
if: ${{ inputs.distr == 'macos' }}
run: |
ort_version="1.24.2"
if [[ "${{ inputs.arch }}" == "aarch64" ]]; then
ort_arch="arm64"
else
ort_arch="x86_64"
fi
ort_name="onnxruntime-osx-${ort_arch}-static_lib-${ort_version}"
curl -sL "https://github.com/csukuangfj/onnxruntime-libs/releases/download/v${ort_version}/${ort_name}.zip" -o /tmp/ort.zip
unzip -q /tmp/ort.zip -d /tmp/ort
echo "ORT_LIB_LOCATION=/tmp/ort/${ort_name}/lib" >> $GITHUB_ENV

- name: Build native
if: ${{ inputs.distr == 'windows' || inputs.distr == 'macos' }}
run: |
rustup target add ${{ steps.vars.outputs.target }}
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/mirror.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
token: ${{ secrets.GITHUB_TOKEN }}
fetch-depth: 0
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/nightly_no_avx2.yml
Original file line number Diff line number Diff line change
Expand Up @@ -148,7 +148,7 @@ jobs:
runs-on: ubuntu-22.04
steps:
- name: Checkout repository
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
token: ${{ secrets.GITHUB_TOKEN }}
- name: Download test report artifact 1_54
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/pack_publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ jobs:
|| (github.event_name == 'workflow_run' && github.event.workflow_run.conclusion == 'success' && github.ref == 'refs/heads/master' && github.event.workflow_run.event != 'schedule')
steps:
- name: Checkout repository
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
fetch-depth: 0
token: ${{ secrets.GITHUB_TOKEN }}
Expand Down
58 changes: 17 additions & 41 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -95,41 +95,6 @@ jobs:
echo "Set manticore_locator: (empty)"
fi

win_bundle:
name: Windows supplementary files preparation
runs-on: ubuntu-22.04
steps:
- name: Determine branch name for cache
id: branch
run: |
if [ "${{ github.event_name }}" = "pull_request" ]; then
echo "branch_name=${{ github.head_ref }}" >> $GITHUB_OUTPUT
else
echo "branch_name=${{ github.ref_name }}" >> $GITHUB_OUTPUT
fi
- name: Check out cache
id: cache
uses: actions/cache@v4
with:
path: |
bundle
boost_1_75_0
enableCrossOsArchive: true
key: win_bundle_${{ steps.branch.outputs.branch_name }}
lookup-only: true
- name: Extract Windows bundle from Windows sysroot
if: steps.cache.outputs.cache-hit != 'true'
run: |
wget https://repo.manticoresearch.com/repository/sysroots/roots_nov22/sysroot_windows_x64.tar.xz
tar -xvf sysroot_windows_x64.tar.xz
mv diskc/winbundle bundle
- name: Extract Boost to put it to the cache
if: steps.cache.outputs.cache-hit != 'true'
run: |
wget https://repo.manticoresearch.com/repository/ci/boost_1_75_0.tgz
tar -xf boost_1_75_0.tgz


embedding_linux_pack:
needs: commit_info
uses: ./.github/workflows/embedding_build_template.yml
Expand Down Expand Up @@ -236,7 +201,7 @@ jobs:
runs-on: ubuntu-22.04
steps:
- name: Checkout repository
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
token: ${{ secrets.GITHUB_TOKEN }}
- name: Download test report artifact 1_54
Expand Down Expand Up @@ -362,7 +327,7 @@ jobs:
runs-on: ubuntu-22.04
steps:
- name: Checkout repository
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
token: ${{ secrets.GITHUB_TOKEN }}
- name: Download test report artifact 1_54
Expand Down Expand Up @@ -441,7 +406,7 @@ jobs:

test_windows:
name: Windows tests
needs: [build_windows, win_bundle, check_branch]
needs: [build_windows, check_branch]
uses: ./.github/workflows/win_test_template.yml
strategy:
fail-fast: false
Expand Down Expand Up @@ -478,7 +443,7 @@ jobs:
image: manticoresearch/ubertests_ctest:3263_mar_2024
steps:
- name: Checkout repository
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
token: ${{ secrets.GITHUB_TOKEN }}
- name: Download test report artifact 1_86
Expand Down Expand Up @@ -570,13 +535,13 @@ jobs:
image: ${{ steps.vars.outputs.image }}
steps:
- name: Checkout repository
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
fetch-depth: 0
fetch-tags: true

- name: Checkout daemon repository for branch detection
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
repository: manticoresoftware/manticoresearch
path: manticoresearch
Expand Down Expand Up @@ -678,6 +643,17 @@ jobs:
'apt-get remove -y manticore-columnar-lib || true && \
dpkg -i --force-confnew /build/manticore-columnar-lib*.deb && \
apt-get install -f -y'

# Debug: check installed libraries and their dependencies
docker exec temp bash -c \
'echo "=== Installed MCL files ===" && \
dpkg -L manticore-columnar-lib && \
echo "=== Embeddings lib dependencies ===" && \
find / -name "lib_manticore_knn_embeddings*" 2>/dev/null && \
for f in $(find / -name "lib_manticore_knn_embeddings*" 2>/dev/null); do ldd "$f" 2>&1; done && \
echo "=== KNN lib dependencies ===" && \
find / -name "lib_manticore_knn.*" 2>/dev/null && \
for f in $(find / -name "lib_manticore_knn.*" 2>/dev/null); do ldd "$f" 2>&1; done'

# Commit the modified test-kit images
docker commit temp ${{ steps.vars.outputs.image }}
Expand Down
4 changes: 3 additions & 1 deletion .github/workflows/test_template.yml
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ jobs:
# CTEST_REGEX: test_234
steps:
- name: Checkout repository
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
token: ${{ secrets.GITHUB_TOKEN }}

Expand Down Expand Up @@ -119,13 +119,15 @@ jobs:
path: cache
enableCrossOsArchive: true
key: build_linux_x86_64_${{ steps.branch.outputs.branch_name }}
restore-keys: build_linux_x86_64_master

- name: Check out deps cache before building
uses: actions/cache@v4
with:
path: build/_deps/cache
enableCrossOsArchive: true
key: build_linux_x86_64_deps_${{ steps.branch.outputs.branch_name }}
restore-keys: build_linux_x86_64_deps_master

- name: List files
run: find .
Expand Down
Loading
Loading