Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
3542f11
Migrate to genai backend with API key configuration
Sep 27, 2025
0266b4a
Add batch embedding support to address issue #1
Sep 27, 2025
44b47f5
Document genai migration and batch processing features
Sep 27, 2025
c90a3b7
Document how genai addresses issues #2 and #3
Sep 27, 2025
08ae5c9
Document complete issue resolution through genai migration
Sep 27, 2025
c26fb4f
Complete migration documentation: 100% issue resolution achieved
Sep 27, 2025
df0a640
Document LLaVA and multimodal embedding capabilities
Sep 27, 2025
02cb5c3
Implement hybrid multimodal embeddings using rsp2k/rust-genai fork
Sep 27, 2025
c5645a5
Integrate future-ready multimodal architecture from rsp2k/rust-genai
Sep 27, 2025
8b1344e
Add high-performance concurrent image processing from rsp2k/rust-gena…
Sep 27, 2025
7e0ece0
Reorganize documentation and examples for better project structure
Sep 27, 2025
94ac02f
Remove all obsolete non-genai code - 97.6% code reduction
Sep 27, 2025
45f71c6
Add minimal Python bindings for easy installation
Sep 27, 2025
99c1925
Add comprehensive Python integration tests
Sep 27, 2025
8b511d1
Set up modern Python packaging with uv
Sep 27, 2025
410926f
Add comprehensive multimodal image embedding tests
Sep 27, 2025
1993326
Fix multimodal client registration bug
Sep 27, 2025
d221808
Fix critical multimodal client registration bug
Sep 27, 2025
ff6fdf1
Add comprehensive tests confirming both client registration bugs are …
Sep 27, 2025
cb20ca3
Fix virtual table options column to show client type
Sep 27, 2025
09353c3
Clean up code and fix compiler warnings
Sep 28, 2025
473ea45
chore: update rust-genai dependency to latest fork changes
Sep 28, 2025
cfe3e16
docs: redesign README with bold, direct style
Sep 28, 2025
a95ae31
ci: add comprehensive GitHub Actions workflows
Sep 28, 2025
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
213 changes: 213 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,213 @@
name: CI

on:
push:
branches: [ main ]
pull_request:
branches: [ main ]

env:
CARGO_TERM_COLOR: always

jobs:
# Rust tests and linting
rust-check:
name: Rust Check
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Install Rust
uses: dtolnay/rust-toolchain@stable
with:
components: rustfmt, clippy

- name: Cache cargo registry
uses: actions/cache@v3
with:
path: ~/.cargo/registry
key: ${{ runner.os }}-cargo-registry-${{ hashFiles('**/Cargo.lock') }}
restore-keys: ${{ runner.os }}-cargo-registry-

- name: Cache cargo index
uses: actions/cache@v3
with:
path: ~/.cargo/git
key: ${{ runner.os }}-cargo-git-${{ hashFiles('**/Cargo.lock') }}
restore-keys: ${{ runner.os }}-cargo-git-

- name: Check formatting
run: cargo fmt -- --check

- name: Run clippy
run: cargo clippy -- -D warnings

- name: Run tests
run: cargo test --verbose

# Build and test on Linux x86_64
build-linux-x86_64:
name: Linux x86_64
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v4

- name: Install Rust
uses: dtolnay/rust-toolchain@stable

- name: Install Python
uses: actions/setup-python@v4
with:
python-version: '3.11'

- name: Build extension
run: |
make loadable
make python

- name: Install Python test dependencies
run: |
pip install pytest sqlite-vec
pip install -e bindings/python/

- name: Run Python tests
run: |
python test_user_case.py
python test_client_fix_complete.py
env:
# Use mock provider for CI
MOCK_EMBEDDINGS: "true"

- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: sqlite-rembed-linux-x86_64
path: |
target/release/libsqlite_rembed.so
dist/

# Build and test on macOS x86_64
build-macos-x86_64:
name: macOS x86_64
runs-on: macos-13
steps:
- uses: actions/checkout@v4

- name: Install Rust
uses: dtolnay/rust-toolchain@stable

- name: Install Python
uses: actions/setup-python@v4
with:
python-version: '3.11'

- name: Build extension
run: |
make loadable
make python

- name: Install Python test dependencies
run: |
pip install pytest sqlite-vec
pip install -e bindings/python/

- name: Run Python tests
run: |
python test_user_case.py
python test_client_fix_complete.py
env:
MOCK_EMBEDDINGS: "true"

- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: sqlite-rembed-macos-x86_64
path: |
target/release/libsqlite_rembed.dylib
dist/

# Build and test on macOS ARM64
build-macos-aarch64:
name: macOS ARM64
runs-on: macos-14
steps:
- uses: actions/checkout@v4

- name: Install Rust
uses: dtolnay/rust-toolchain@stable

- name: Install Python
uses: actions/setup-python@v4
with:
python-version: '3.11'

- name: Build extension
run: |
make loadable
make python

- name: Install Python test dependencies
run: |
pip install pytest sqlite-vec
pip install -e bindings/python/

- name: Run Python tests
run: |
python test_user_case.py
python test_client_fix_complete.py
env:
MOCK_EMBEDDINGS: "true"

- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: sqlite-rembed-macos-aarch64
path: |
target/release/libsqlite_rembed.dylib
dist/

# Build on Windows
build-windows-x86_64:
name: Windows x86_64
runs-on: windows-2022
steps:
- uses: actions/checkout@v4

- name: Install Rust
uses: dtolnay/rust-toolchain@stable

- name: Build extension
run: cargo build --release

- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: sqlite-rembed-windows-x86_64
path: target/release/sqlite_rembed.dll

# Integration tests with real providers (optional, only on main)
integration-test:
name: Integration Tests
runs-on: ubuntu-latest
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
steps:
- uses: actions/checkout@v4

- name: Install Rust
uses: dtolnay/rust-toolchain@stable

- name: Install Ollama
run: |
curl -fsSL https://ollama.com/install.sh | sh
ollama serve &
sleep 5
ollama pull nomic-embed-text

- name: Build extension
run: make loadable

- name: Run integration tests
run: |
cargo test --features integration_tests
env:
OLLAMA_HOST: http://localhost:11434
100 changes: 100 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
name: Release

on:
push:
tags:
- 'v*'
workflow_dispatch:

jobs:
create-release:
name: Create Release
runs-on: ubuntu-latest
outputs:
upload_url: ${{ steps.create_release.outputs.upload_url }}
steps:
- name: Create Release
id: create_release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ github.ref }}
release_name: Release ${{ github.ref }}
draft: false
prerelease: false

build-and-upload:
name: Build and Upload
needs: create-release
strategy:
matrix:
include:
- os: ubuntu-20.04
target: x86_64-unknown-linux-gnu
artifact_name: libsqlite_rembed.so
asset_name: sqlite-rembed-linux-x86_64.so

- os: macos-13
target: x86_64-apple-darwin
artifact_name: libsqlite_rembed.dylib
asset_name: sqlite-rembed-macos-x86_64.dylib

- os: macos-14
target: aarch64-apple-darwin
artifact_name: libsqlite_rembed.dylib
asset_name: sqlite-rembed-macos-aarch64.dylib

- os: windows-2022
target: x86_64-pc-windows-msvc
artifact_name: sqlite_rembed.dll
asset_name: sqlite-rembed-windows-x86_64.dll

runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4

- name: Install Rust
uses: dtolnay/rust-toolchain@stable
with:
targets: ${{ matrix.target }}

- name: Build
run: cargo build --release --target ${{ matrix.target }}

- name: Upload Release Asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ needs.create-release.outputs.upload_url }}
asset_path: ./target/${{ matrix.target }}/release/${{ matrix.artifact_name }}
asset_name: ${{ matrix.asset_name }}
asset_content_type: application/octet-stream

build-python:
name: Build Python Wheels
needs: create-release
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Install Python
uses: actions/setup-python@v4
with:
python-version: '3.11'

- name: Install build tools
run: |
pip install build twine

- name: Build wheels
run: |
cd bindings/python
python -m build

- name: Upload wheels
uses: actions/upload-artifact@v4
with:
name: python-wheels
path: bindings/python/dist/
53 changes: 53 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,56 @@
# Rust
/target
Cargo.lock

# Environment
.env
.env.local
.env.*.local

# Build outputs
dist/
build/
*.egg-info/

# Python
__pycache__/
*.py[cod]
*$py.class
*.so
*.dylib
*.dll
.Python
.pytest_cache/
.mypy_cache/
.ruff_cache/
.coverage
htmlcov/
*.cover
.hypothesis/

# uv
.venv/
uv.lock

# Virtual environments
venv/
ENV/
env/

# IDE
.vscode/
.idea/
*.swp
*.swo
*~
.DS_Store

# Testing
test_venv/
test_wheel_venv/
*.whl
*.tar.gz

# Documentation
docs/_build/
*.orig
Loading