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.0.tar.gz (13.4 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.0-py3-none-any.whl (10.4 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: local_reranker-0.1.0.tar.gz
  • Upload date:
  • Size: 13.4 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.0.tar.gz
Algorithm Hash digest
SHA256 899237e32c1dc64cb0d82c7761eb61b051f2ce71abbada55402524e4df1e2eaf
MD5 b62da1b3215195d03e22c08a3c68ac00
BLAKE2b-256 752648d8923af159a3453bcda6bda1e134d5f055645c527d56da932b457596b0

See more details on using hashes here.

File details

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

File metadata

  • Download URL: local_reranker-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 10.4 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.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ae1c89fcce6c0c9a72e575a968787acf46196336cd823a22f105a7d91e162b30
MD5 66edfc45d194eb3f8c1eb086e8ec50ed
BLAKE2b-256 d04578c36cf61ddd3b9602216bcce920735605dfa65bb3d0fbfeef004e451d6e

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