Skip to main content

A lightweight, local reranker API implementation compatible with Jina.

Project description

local-reranker

A local reranker service with a Jina compatible API.

Overview

This project provides a FastAPI-based web service that implements a reranking API endpoint (/v1/rerank) compatible with the Jina AI Rerank API. It allows you to host a reranking model locally for enhanced privacy and performance.

Features

  • Jina Compatible API: Implements the /v1/rerank endpoint structure.
  • Local Hosting: Run the reranker model entirely on your own infrastructure.
  • Sentence Transformers: Uses the powerful sentence-transformers library for underlying model handling and inference.
  • Configurable Model: (Future) Easily switch between different Cross-Encoder models.
  • Modern FastAPI: Built using modern FastAPI features like lifespan for resource management.
  • Async Support: Leverages asynchronous processing for potentially better concurrency.

Requirements

  • Python 3.8+
  • uv (for installation and package management - recommended)
  • Sufficient RAM and compute resources (CPU or GPU) depending on the chosen reranker model.

Installation

  1. Clone the repository:

    git clone <repository-url>
    cd local-reranker
    
  2. Create a virtual environment (recommended):

    # Using uv
    uv venv
    source .venv/bin/activate 
    
    # Or using standard venv
    # python -m venv .venv
    # source .venv/bin/activate 
    
  3. Install the package and dependencies:

    # Using uv (installs base + dev dependencies)
    uv pip install -e ".[dev]"
    

Running the Server

You can run the server using uvicorn directly or via uv run:

Method 1: Using uvicorn

# Ensure your virtual environment is active
uvicorn local_reranker.api:app --host 0.0.0.0 --port 8000 --reload
  • --host 0.0.0.0: Makes the server accessible on your network.
  • --port 8000: Specifies the port (adjust if needed).
  • --reload: Automatically restarts the server when code changes are detected (useful for development).

Method 2: Using uv run (handles environment implicitly)

# From the project root directory
uv run uvicorn local_reranker.api:app --host 0.0.0.0 --port 8000 --reload

The server will start, and the first time it runs, it will download the default reranker model (jina-reranker-v1-tiny-en), which may take some time.

Usage

Once the server is running, you can send requests to the /v1/rerank endpoint. Here's an example using curl:

curl -X POST "http://localhost:8000/v1/rerank" \
     -H "Content-Type: application/json" \
     -d '{
           "model": "jina-reranker-v1-tiny-en", 
           "query": "What are the benefits of using FastAPI?", 
           "documents": [
             "FastAPI is a modern, fast (high-performance) web framework for building APIs with Python 3.7+ based on standard Python type hints.",
             "Django is a high-level Python Web framework that encourages rapid development and clean, pragmatic design.",
             "The key features are: Fast, Fast to code, Fewer bugs, Intuitive, Easy, Short, Robust, Standards-based.",
             "Flask is a micro web framework written in Python."
           ],
           "top_n": 3,
           "return_documents": true
         }'

Parameters:

  • model: (Currently ignored by the API, uses the default) The name of the reranker model.
  • query: The search query string.
  • documents: A list of strings or dictionaries ({"text": "..."}) to be reranked against the query.
  • top_n: (Optional) The maximum number of results to return.
  • return_documents: (Optional, default False) Whether to include the document text in the results.

Testing

Tests are implemented using pytest. To run the tests:

  1. Make sure you have installed the development dependencies (uv pip install -e ".[dev]").
  2. Ensure your virtual environment is active or use uv run.
# Ensure venv is active
python -m pytest

# Or using uv run
uv run pytest

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

local_reranker-0.1.1.tar.gz (13.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

local_reranker-0.1.1-py3-none-any.whl (10.6 kB view details)

Uploaded Python 3

File details

Details for the file local_reranker-0.1.1.tar.gz.

File metadata

  • Download URL: local_reranker-0.1.1.tar.gz
  • Upload date:
  • Size: 13.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.8

File hashes

Hashes for local_reranker-0.1.1.tar.gz
Algorithm Hash digest
SHA256 85605d158c7237f93e4ff169ea1f68a1fa728648f1f2815172cee49e4b429605
MD5 39f0acfa12060edceed6e25388350317
BLAKE2b-256 2e374d21b2ac3079a1dc8409023dcf1398ce8b507b27eb8e5022dff28b1b749a

See more details on using hashes here.

File details

Details for the file local_reranker-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: local_reranker-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 10.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.8

File hashes

Hashes for local_reranker-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 263e0a543b45d647ca15473935439137137bc7eaa87b9f13c8dc2563308af65d
MD5 f807d8cdce022127a319b768421bce8b
BLAKE2b-256 9ca0248379ef49f773236a11e90669eece138614568b5f9e73ed75d2d0d66049

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page