* feat: add JinaMLXCrossEncoder for native Apple Silicon reranking Adds a new `jina-mlx` reranker provider backed by jinaai/jina-reranker-v3-mlx, a 0.6B multilingual listwise reranker running via the MLX framework on Apple Silicon. The model is downloaded automatically from HuggingFace Hub on first use. Benchmarked latencies (Apple Silicon): 1 doc→32ms, 5→45ms, 10→60ms, 20→94ms. Sub-linear scaling because all docs are ranked in a single forward pass. - Embeds the MLX reranker implementation (_MLXReranker / _MLPProjector) directly in cross_encoder.py with no transformers/PyTorch dependency - Adds `mlx`, `mlx-lm`, `safetensors` to pyproject.toml optional deps (uv add) - Updates configuration.md with provider docs and benchmark table * refactor: import MLXReranker from repo rerank.py instead of duplicating code Use importlib to load MLXReranker directly from the model repo's own rerank.py (downloaded via snapshot_download). Also pin exact minimum versions for mlx>=0.31.0, mlx-lm>=0.31.1, safetensors>=0.6.2 (verified against installed versions). * refactor: move MLX reranker impl to dedicated jina_mlx_reranker.py Replaces the importlib hack with a proper module. jina_mlx_reranker.py is adapted from jinaai/jina-reranker-v3-mlx/rerank.py (CC BY-NC 4.0) with the source clearly documented at the top of the file. * docs: simplify jina-mlx reranker docs * fix: disable GIN fastupdate on source_memory_ids index to prevent deadlocks GIN fastupdate buffers inserts in a pending list and flushes it with AccessExclusiveLock when full. Under concurrent test load (8 xdist workers all running retain_async), two workers can trigger a flush simultaneously and deadlock. Recreating the index with fastupdate=off eliminates the flush/lock cycle at the cost of slightly slower individual inserts. * fix: drop per-bank HNSW indexes after transaction to avoid AccessExclusiveLock deadlock When deleting a bank, the previous code dropped HNSW indexes inside the same transaction as the DELETE FROM memory_units. Since DROP INDEX needs AccessExclusiveLock on the parent table and DELETE holds RowExclusiveLock, two concurrent bank deletions deadlocked on the same table lock. Fix: capture internal_id inside the transaction, commit, then drop the indexes outside the transaction so no row-level locks are held. |
||
|---|---|---|
| .. | ||
| blog | ||
| docs | ||
| examples | ||
| src | ||
| static | ||
| versioned_docs | ||
| versioned_sidebars | ||
| .gitignore | ||
| docusaurus.config.ts | ||
| package.json | ||
| README.md | ||
| sidebars.ts | ||
| tsconfig.json | ||
| versions.json | ||
Website
This website is built using Docusaurus, a modern static website generator.
Installation
npm install
Local Development
npm start
This command starts a local development server and opens up a browser window. Most changes are reflected live without having to restart the server.
Build
npm run build
This command generates static content into the build directory and can be served using any static contents hosting service.
Deployment
Using SSH:
USE_SSH=true npm run deploy
Not using SSH:
GIT_USER=<Your GitHub username> npm run deploy
If you are using GitHub pages for hosting, this command is a convenient way to build the website and push to the gh-pages branch.