Commit Graph
100 Commits
Author SHA1 Message Date
Andy Lee 29cbbbd0d6 fix: resolve libzmq pkg-config issues in manylinux containers
- Add gcc-c++ and cmake to dependencies
- Create libzmq.pc file if missing (CentOS 7 issue)
- Set PKG_CONFIG_PATH through CIBW_ENVIRONMENT_LINUX
- Add protobuf-devel to ensure all headers are available
- Fix shell variable escaping in heredoc
2025-07-25 00:35:52 -07:00
Andy Lee 179f30bc36 fix: improve system dependency installation in manylinux containers
- Add yum cache cleaning and updating
- Make package installations more resilient with fallbacks
- Use pkgconfig instead of pkg-config (CentOS 7 naming)
- Handle optional packages that might not be available
- Add error handling for package installation failures
2025-07-25 00:30:29 -07:00
Andy Lee c4a0a68581 fix: handle pure Python packages in cibuildwheel workflow
- Build pure Python packages (leann-core, leann) with standard build tool
- Only use cibuildwheel for C extension packages (leann-backend-hnsw, leann-backend-diskann)
- Build pure Python packages only once on ubuntu-latest
- Add Python setup for building pure packages
- Add package listing step for debugging
2025-07-25 00:26:15 -07:00
Andy Lee 5c836ad08e fix: handle git dubious ownership error in manylinux containers
- Add multiple safe.directory configurations to cover different possible paths
- This fixes 'detected dubious ownership in repository' error
- Ensures git works properly in manylinux2014 containers
2025-07-25 00:22:01 -07:00
Andy Lee 673fd9b7cd fix: upgrade to actions v4 and handle manylinux2014 compatibility
- Upgrade all GitHub Actions to v4 (v3 is deprecated)
- Use manual git checkout in manylinux2014 containers to avoid Node.js issues
- Update artifact naming to ensure uniqueness (required by v4)
- Add fail-fast: false to build strategies
- This maintains manylinux2014 compatibility while using latest actions
2025-07-25 00:20:21 -07:00
Andy Lee 84b24b233d feat: add cibuildwheel option to release workflow
- Add optional use_cibuildwheel parameter to release workflow
- Create separate CI workflow for testing cibuildwheel
- Support conditional build workflow selection in release process
- This allows building wheels compatible with Google Colab and older systems
- Maintains backward compatibility with existing build process
2025-07-25 00:16:08 -07:00
Andy Lee 499cdd7822 feat: add cibuildwheel workflow for better platform compatibility
- Use cibuildwheel for professional wheel building
- Specifically use manylinux2014 for Google Colab compatibility
- Supports Python 3.9-3.12 on Linux and macOS
- Handles monorepo structure with separate builds per package
- Includes basic import tests for each package
- This should resolve compatibility issues with older systems like Google Colab
2025-07-25 00:16:08 -07:00
Andy Lee 3603cd5034 fix: downgrade GitHub Actions versions for manylinux2014 compatibility
- Use actions/checkout@v3 instead of v4 (Node.js 16 vs 20)
- Use actions/setup-python@v4 instead of v5
- Use actions/upload-artifact@v3 and download-artifact@v3
- This fixes GLIBC version errors in manylinux2014 containers
- manylinux2014 (CentOS 7) has glibc 2.17 but Node.js 20 needs 2.25+
2025-07-25 00:12:05 -07:00
Andy Lee 6df7893173 feat: use manylinux2014 containers for better Linux compatibility
- Add manylinux2014 Docker containers for Linux builds
- This will generate wheels compatible with older Linux systems (CentOS 7+, Ubuntu 16.04+)
- Separate build logic for container vs regular environments
- Install appropriate system dependencies for yum-based manylinux environment
- Use pip instead of uv in containers for better compatibility
- Fix Python version format for manylinux container paths
2025-07-25 00:08:42 -07:00
Andy Lee 2dd59c4ba1 fix: let auditwheel auto-detect manylinux platform tag
- Remove --plat manylinux2014_x86_64 flag that was causing build failures
- Let auditwheel automatically determine the appropriate manylinux tag
- Add auditwheel show command to display compatibility info
- This fixes the 'too-recent versioned symbols' error
2025-07-24 21:44:15 -07:00
Andy Lee a6aec68f32 fix: use manylinux2014 for better Linux compatibility
- Change auditwheel --plat to manylinux2014_x86_64
- This ensures wheels work on Ubuntu 16.04+ instead of requiring 24.04+
- Fixes compatibility issues for users on Ubuntu 22.04 and similar systems
2025-07-24 21:26:28 -07:00
Andy Lee d8b4ea7564 fix: add write permissions for GitHub Actions to push commits 2025-07-24 20:55:24 -07:00
Andy Lee f0a2ef96b4 fix: restore complete build configuration from working version 2025-07-24 19:49:38 -07:00
Andy Lee 7d73c2c803 fix: remove invalid --extra build flag from build commands 2025-07-24 19:43:23 -07:00
Andy Lee e8d2ecab03 refactor: use reusable workflow to avoid code duplication 2025-07-24 19:35:12 -07:00
Andy Lee 32a374d094 feat: true one-click automated release with multi-platform support 2025-07-24 19:30:44 -07:00
Andy Lee d45c013806 fix: handle workflow trigger permission gracefully 2025-07-24 19:25:29 -07:00
Andy Lee 8307555d54 fix: manually trigger CI after version push in release workflow 2025-07-24 19:21:32 -07:00
Andy Lee 374db0ebb8 fix: release workflow to build new version before publishing 2025-07-24 19:03:09 -07:00
Andy Lee 6c0e39372b fix: download all artifacts in release workflow 2025-07-24 17:45:46 -07:00
Andy Lee 2bec67d2b6 feat: auto-update leann-core dependencies during release
- Enhanced bump_version.sh to automatically update leann-core dependency versions
- Script now updates both package versions and their leann-core dependencies
- This ensures version consistency across all packages during release

No more manual dependency version updates needed!
2025-07-24 17:22:41 -07:00
Andy Lee 133e715832 fix: resolve CI issues and consolidate workflows
- Fix version dependencies: update backend packages to depend on leann-core==0.1.1
- Remove duplicate ci.yml workflow (keeping build-and-publish.yml as main CI)
- Update release-manual.yml to reference correct CI workflow name

This fixes the dependency resolution error and eliminates duplicate builds.
2025-07-24 17:20:58 -07:00
Andy Lee 95cf2f16e2 refactor: consolidate release and publish into single workflow
- Manual Release workflow now directly publishes to PyPI after downloading CI artifacts
- No more duplicate builds - reuses artifacts from CI
- build-and-publish.yml renamed to 'CI - Build Multi-Platform Packages'
- Publishing in CI workflow only for emergency manual triggers
- Updated RELEASE.md to reflect the new streamlined process

This fixes the issue where releases would trigger redundant builds.
2025-07-24 17:04:47 -07:00
Andy Lee 47a4c153eb fix: enable PyPI publish on tag push
- Manual Release workflow creates tags but build-and-publish.yml only published on 'release' events
- Now build-and-publish.yml will also publish when v* tags are pushed
- This fixes the issue where manual releases didn't trigger PyPI uploads
2025-07-24 17:00:21 -07:00
Andy Lee a44dccecac fix: make TestPyPI upload optional and non-blocking
- Add continue-on-error to TestPyPI step
- Check if TEST_PYPI_API_TOKEN exists before attempting upload
- Add graceful failure handling with clear messages
- Update docs to explain TestPyPI token configuration
- Clarify that TestPyPI testing is optional

Now the release won't fail if TestPyPI is not configured or upload fails
2025-07-24 16:02:07 -07:00
Andy Lee 9076bc27b8 fix: resolve CI run detection issues in release workflow
- Add 'actions: read' permission to access workflow runs
- Use workflow name instead of filename for gh run list
- Look for CI run on HEAD~1 (before version bump commit)
- Improve error messages for better debugging

Fixes HTTP 403 error when trying to find successful CI runs
2025-07-24 14:27:26 -07:00
Andy Lee 50686c0819 refactor: use CI artifacts in release workflow instead of rebuilding
- Download pre-built wheels from successful CI runs
- Avoids duplicate builds and ensures consistency
- CI artifacts are already tested across all platforms
- Faster release process (no build time)
- Updates release documentation to reflect new flow

This ensures the released packages are exactly what was tested in CI.
2025-07-24 14:24:03 -07:00
Andy Lee 1614203786 fix: make bump_version.sh work on both macOS and Linux
- macOS uses sed -i '' while Linux uses sed -i
- Add OS detection to use correct syntax
- Ensures script works in CI (Linux) and local dev (macOS)
2025-07-24 14:13:31 -07:00
Andy Lee 3d4c75a56c fix: add missing scripts directory to git
- Remove scripts/ from .gitignore
- Add build_and_test.sh for local testing
- Add bump_version.sh for version updates (used by CI)
- Add release.sh and upload_to_pypi.sh for publishing
- Fixes CI error: ./scripts/bump_version.sh: No such file or directory
2025-07-24 14:13:14 -07:00
Andy Lee 2684ee71dc fix: ensure uv build uses correct Python version in CI
- Add --python python flag to uv build commands
- This ensures wheels are built with the correct Python version (cp313 for Python 3.13, etc)
- Fixes issue where Python 3.13 CI was building cp311 wheels
- Also adds Python version verification before build
2025-07-24 13:44:02 -07:00
Andy Lee 1d321953ba ci: update all GitHub Actions to latest versions
- Update actions/upload-artifact from v3 to v4 (v3 deprecated April 2024)
- Update actions/setup-python from v4 to v5 (latest version)
- Add Python 3.12 and 3.13 to CI test matrix
- Ensure compatibility with latest Python versions and GitHub Actions
2025-07-24 13:36:21 -07:00
Andy Lee b3cb251369 ci: add Python 3.12 and 3.13 to test matrix
- Add Python 3.12 and 3.13 to CI test matrix
- Ensure compatibility with latest Python versions
- Python 3.12 is stable, 3.13 was released in Oct 2024
2025-07-24 13:32:29 -07:00
Andy Lee 0a17d2c9d8 feat: implement comprehensive CI/CD pipeline with two-stage release
- Add ci.yml for continuous integration on every commit
  - Test builds on Ubuntu/macOS with Python 3.9/3.10/3.11
  - Ensure code quality before any release

- Add release-manual.yml for controlled releases
  - Manual trigger prevents accidental releases
  - Version validation and tag creation
  - Optional TestPyPI testing before production
  - Only creates tag after validation passes

- Keep build-and-publish.yml for automated PyPI deployment
  - Triggered by new tags (separation of concerns)
  - Handles multi-platform wheel building
  - Allows retry if PyPI upload fails

- Update RELEASE.md with clear prerequisites and workflow

This setup ensures:
1. Every commit is tested (CI)
2. Releases are deliberate (manual trigger)
3. Failed CI won't create broken tags
4. PyPI publish can be retried independently
2025-07-24 13:29:21 -07:00
Andy Lee e3defbca84 fix: add minimal CI dependencies for HNSW and DiskANN backends
- HNSW (Ubuntu): add libopenblas-dev for BLAS requirements
- DiskANN (Ubuntu): keep MKL, remove redundant pkg-config (HNSW already has it)
- DiskANN (macOS): add protobuf for build requirements
- Both: ensure patchelf for auditwheel on Linux

This avoids OpenBLAS/MKL conflicts by using them in separate jobs
2025-07-24 01:06:57 -07:00
Andy Lee e407f63977 chore: fix uv build 2025-07-24 00:51:57 -07:00
Andy Lee 7add391b2c chore: build and package 2025-07-24 00:47:46 -07:00
Andy Lee e86da38726 fix: ollama hint for similar models 2025-07-23 15:45:10 -07:00
Andy Lee 2420c5fd35 chore: update sentence-transformer to prevent MixIn not found error 2025-07-22 23:27:25 -07:00
Andy Lee e07aaf52a7 docs: align 2025-07-22 22:37:27 -07:00
Andy Lee 30e5f12616 docs: quick start 2025-07-22 22:33:04 -07:00
Andy Lee 594427bf87 docs: demo 2025-07-22 22:32:18 -07:00
Andy Lee 6070160959 chore: remove .vscode 2025-07-22 19:59:35 -07:00
Andy Lee 43155d2811 fix: supress resources leak logs 2025-07-22 19:53:45 -07:00
Andy Lee d3f85678ec perf: much faster loading and embedding serving 2025-07-22 19:38:22 -07:00
Andy Lee 8513471573 feat: make diskann runnable 2025-07-22 14:26:03 -07:00
Andy Lee 71e5f1774c docs: cli 2025-07-21 23:48:40 -07:00
Andy Lee ab72a2ab9d fix: more logs 2025-07-21 23:08:53 -07:00
Andy Lee c2f35c8e73 fix: logs 2025-07-21 23:02:13 -07:00
Andy Lee 573313f0b6 refactor: logs 2025-07-21 22:45:24 -07:00
Andy Lee c112956d2d fix: mlx 2025-07-21 21:29:15 -07:00
Andy Lee b3970793cf fix: cache the loaded model 2025-07-21 21:20:53 -07:00
Andy Lee 2f224f5793 fix: use server to emb query only when recompute 2025-07-21 20:40:21 -07:00
Andy Lee 1b6272ce0e Building, CLI tool & Embedding Server Fixed (#5)
* chore: shorter build time

* chore: update faiss

* fix: no longger do embedding server reuse

* fix: do not reuse emb_server and close it properly

* feat: cli tool

* feat: cli more args

* fix: same embedding logic
2025-07-21 20:17:25 -07:00
Andy Lee 34c71c072d chore: parallel compile fix 2025-07-19 22:51:47 -07:00
Andy Lee 6d2149c503 chore: parallel compile fix 2025-07-19 22:46:24 -07:00
Andy Lee 043b0bf69d chore: parallel compile fix 2025-07-19 22:34:19 -07:00
Andy Lee 9b07e392c6 chore: parallel compile 2025-07-19 22:32:13 -07:00
Andy Lee e60fad8c73 chore: mark diskann as optional 2025-07-19 22:24:44 -07:00
Andy Lee 19c1b182c3 docs: effects figure 2025-07-19 22:07:04 -07:00
Andy Lee 49edea780c docs: figure 2025-07-19 21:59:58 -07:00
Andy Lee 12ef5a1900 docs: effects 2025-07-19 21:57:12 -07:00
Andy Lee d21a134b2a docs: polish 2025-07-19 21:53:41 -07:00
Andy LeeandYichuan Wang 1cd809aa41 [Docs] README polished version (#4)
* docs: polish

* docs: logo

* docs: logo

* docs: logo with text

* docs: readme effects

* docs: polish

* docs: highlight applications

* docs: polish

* docs: how it works earlier

* docs: polish

* docs: polish

* docs: follow yichuan's suggestion

* docs: follow yichuan's suggestion

---------

Co-authored-by: Yichuan Wang <73766326+yichuan-w@users.noreply.github.com>
2025-07-19 21:47:25 -07:00
Andy Lee 85b7ba0168 feat: allow build from existed embeddings 2025-07-19 01:27:37 -07:00
Andy Lee 71c7de9c84 fix: build with direct embedding 2025-07-17 21:49:36 -07:00
Andy Lee 1c5fec5565 perf: make embedder loading faster by 6x, and embed queries through the server 2025-07-17 20:08:06 -07:00
Andy Lee a13c527e39 feat: openai embeddings 2025-07-17 17:02:47 -07:00
Andy Lee f77c4e38cb perf: reuse embedding server for query embed 2025-07-16 16:12:15 -07:00
Andy Lee 2a1a152073 refactor: nits 2025-07-16 15:39:58 -07:00
Andy Lee 7b9406a3ea feat: different search_args and docstrings 2025-07-16 15:25:58 -07:00
Andy Lee c3fb949693 docs: ollama 2025-07-16 15:12:37 -07:00
Andy Lee e595bbb5fb feat: hint for users about wrong model name 2025-07-15 22:40:40 -07:00
Andy Lee 6a1dc895fb feat: disable warmup by default 2025-07-15 22:16:02 -07:00
Andy Lee 125c1f6f25 fix: model name 2025-07-15 21:48:45 -07:00
Andy Lee d94a5176dc docs: storage reduction data 2025-07-15 15:37:17 -07:00
Andy Lee f2feccdbd0 fix: mem compare 2025-07-14 16:35:08 -07:00
Andy Lee b89e56e9c2 fix: file name 2025-07-14 15:34:56 -07:00
Andy Lee baa60b40d1 fix: smaller warmup id 2025-07-14 15:20:45 -07:00
Andy Lee ef01d6997a fix: faiss only 2025-07-14 13:15:55 -07:00
Andy Lee 3da5b44d7f fix: mlx when searching, added to embedding_server 2025-07-14 01:11:21 -07:00
Andy Lee 8b4654921b fix: run faiss in subprocess to prevent kmp 2025-07-14 00:29:21 -07:00
Andy Lee 711fb4a775 feat: compare faiss 2025-07-13 22:44:16 -07:00
Andy Lee 3b5a185e60 refactor: check if current emb_server has correct passages/embedder 2025-07-13 22:43:51 -07:00
Andy Lee fddc61df5e chore: reset to latest version 2025-07-13 17:06:48 -07:00
Andy Lee 53c58fa755 perf: switch to tranditional pdf reader 2025-07-13 17:04:23 -07:00
Andy Lee 48dda1cb5b feat: mlx 2025-07-13 02:13:04 -07:00
Andy Lee 71ef4b7d4c fix: reproducible dpr on mac 2025-07-12 18:13:22 -07:00
Andy Lee ecab43e307 feat: dataset for evaluation 2025-07-12 23:43:10 +00:00
Andy Lee 8e0ab4a28d chore: update deps 2025-07-12 22:48:13 +00:00
Andy Lee eb6f504789 Datastore reproduce (#3)
* fix: diskann zmq port and passages

* feat: auto discovery of packages and fix passage gen for diskann

* docs: embedding pruning

* refactor: passage structure

* feat: reproducible research datas, rpj_wiki & dpr

* refactor: chat and base searcher

* feat: chat on mps
2025-07-11 23:37:23 -07:00
Andy Lee b744faa7e6 chore: all deps 2025-07-08 23:37:40 +00:00
Andy Lee 27b3a26e75 fix(deps): Update DiskANN with cleaned up CMake configuration 2025-07-08 23:27:05 +00:00
Andy Lee 41d872504e feat(deps): Update DiskANN to use system-installed Boost and Protobuf 2025-07-08 23:13:36 +00:00
Andy Lee 963cd05273 chore: diskann modules 2025-07-08 21:57:38 +00:00
Andy Lee 09b6e67baf chore: diskann upg boost 2025-07-08 21:44:44 +00:00
Andy Lee a6c400cd4f chroe: linux boost and protobuf 2025-07-08 21:25:43 +00:00
Andy Lee c013e5ccce chore: linux deps 2025-07-08 13:55:39 -07:00
Andy Lee f25a1a3840 chore: macos compatible 2025-07-08 13:32:00 -07:00
Andy Lee cf17c85607 Make DiskANN and HNSW work on main example (#2)
* fix: diskann zmq port and passages

* feat: auto discovery of packages and fix passage gen for diskann
2025-07-05 22:18:12 -07:00
Andy Lee a38bc0a3fc refactor: embedding server manager 2025-07-06 01:54:46 +00:00