ltr-bert-sir-client
Python client for ELSIE
Python client for the ELSIE semantic information retrieval API. The API is served by the sir-elsie Hugging Face Space and implements the hybrid retrieval stack associated with the ltr-bert-sir bi-encoder checkpoint: BM25 first stage, pool-restricted LTR-BERT scoring, optional cross-encoder reranking, and library management for long-text corpora.
Authors: Syed Minnatullah Quadri, Vrishali A. Chakkarwar
License: Apache-2.0
Related resources
- Bi-encoder weights, metrics, and offline
LTRBertSIRinference ats-m-quadri/ltr-bert-siron Hugging Face - Interactive ELSIE demo and REST API at
s-m-quadri/sir-elsieon Hugging Face Spaces - JavaScript and TypeScript client at
@s-m-quadri/ltr-bert-sir-clienton npm - Python client (this package) at
ltr-bert-sir-clienton PyPI - TypeScript source at
ltr-bert-sir-client-json GitHub - Python source at
ltr-bert-sir-client-pyon GitHub - Self-hosted ELSIE API at
smquadri/ltr-bert-sir-elsieon Docker Hub - Next.js frontend at
sir-elsieon GitHub
Background
Long-document ad hoc retrieval on MS MARCO is typically staged: a lexical first stage (here BM25@100) defines a candidate pool; a bi-encoder scores only within that pool; scores are fused (linear blend with alpha = 0.85 by default) or passed to a cross-encoder on a short shortlist. The Hub model repository documents the fine-tuned LTR-BERT bi-encoder and offline scoring. This package targets the live HTTP API exposed by the ELSIE Space: search, collection ingest, seed libraries, qrels upload, batch evaluation, and library export.
Default base URL (DEFAULT_SIR_API_URL):
https://huggingface.co/spaces/s-m-quadri/sir-elsie
Pass a different origin to SirClient(...) when the FastAPI app runs locally, via Docker, or elsewhere.
Installation
pip install ltr-bert-sir-client
Requirements: Python 3.10 or newer. Depends on httpx for HTTP.
Configuration
from ltr_bert_sir_client import SirClient, DEFAULT_SIR_API_URL
sir = SirClient(DEFAULT_SIR_API_URL, timeout=120.0)
Use the context manager to close the underlying HTTP client:
with SirClient() as sir:
print(sir.health())
Search modes
API mode |
UI label | First stage | Neural stage | Notes |
|---|---|---|---|---|
bm25 |
Fast | BM25 | none | No embedding index required |
blend |
Hybrid | BM25@bm25_k |
LTR-BERT fusion | Default; needs encoded collection |
semantic |
Dense | semantic pool | LTR-BERT | Semantic-first variant |
ce_cascade |
Precise | Hybrid pool | LTR-BERT + MiniLM CE | Reranks top ce_top_k |
ce_only |
CE-only | CE on pool | MiniLM CE | Cross-encoder without blend shortcut |
Search bodies accept query, optional collection_id, mode, k, bm25_k, ce_top_k, and alpha. Responses include hits, ms, optional trace, and optional eval when qrels are loaded.
API overview
The SirClient class mirrors the Space REST surface (parity with the JavaScript client).
| Area | Methods |
|---|---|
| Health and defaults | health(), ranking_config() |
| Collections | list_collections(), get_collection(), create_collection(), import_collection(), delete_collection(), cancel_collection() |
| Ingest and index | ingest_file(), ingest_url(), encode(), progress() |
| Search and documents | search(), get_document() |
| Statistics | stats(), clear_stats(), stats_export_url() |
| Seeds | list_seeds(), get_seed(), load_seed(), index_seed(), seed_alice() |
| Qrels and evaluation | qrels_status(), upload_qrels(), delete_qrels(), export_qrels(), annotate_qrels(), evaluate() |
| Library | library_config(), set_library_config(), index_all(), library_status(), import_library(), export_library(), export_library_with_config(), library_export_url() |
| Binary export | export_url(), export_collection(), download() |
Additional modules:
| Module | Role |
|---|---|
ltr_bert_sir_client.format |
bytes_fmt, mode_label, progress_label, and related display helpers |
ltr_bert_sir_client.hints |
Tooltip strings aligned with ELSIE |
ltr_bert_sir_client.collections |
dedupe_collections, duplicate_collections, collections_by_seed |
ltr_bert_sir_client.ui |
write_demo(), theme_css() for a standalone HTML demo |
Usage
from ltr_bert_sir_client import SirClient
with SirClient() as sir:
health = sir.health()
cols = sir.list_collections()
cid = cols["collections"][0]["id"]
result = sir.search(
{
"query": "alice rabbit hole curious dream",
"collection_id": cid,
"mode": "blend",
"k": 10,
}
)
for hit in result["hits"]:
print(hit["title"], hit["score"])
Batch evaluation when qrels are present:
metrics = sir.evaluate(
cid,
mode="blend",
k=100,
bm25_k=100,
ce_top_k=32,
)
Generate a minimal browser demo:
from ltr_bert_sir_client.ui import write_demo
write_demo("./demo", "https://huggingface.co/spaces/s-m-quadri/sir-elsie")
Citation
Bibliographies and publication details are on the ltr-bert-sir model card on Hugging Face. Cite MS MARCO when using bundled evaluation qrels or MS MARCO-derived training described there.
License
Apache-2.0. MS MARCO remains under Microsoft research terms when used through the API or bundled seeds.
Metadata
Release files for ltr-bert-sir-client 0.2.6
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| ltr_bert_sir_client-0.2.6.tar.gz | 120.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| ltr_bert_sir_client-0.2.6-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 136.3 kB
Release files / ltr_bert_sir_client-0.2.6.tar.gz
| Download URL | ltr_bert_sir_client-0.2.6.tar.gz |
|---|---|
| Size | 120.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
ca885f110d528693d180b441518566916000389ec2d105bfd6c910920c77644b
|
|
BLAKE2b-256 checksum How to use checksums |
3d5d6574fc681da31f461efad348d8aca4d1940059d89d915a805237b7e8daee
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|
Release files / ltr_bert_sir_client-0.2.6-py3-none-any.whl
| Download URL | ltr_bert_sir_client-0.2.6-py3-none-any.whl |
|---|---|
| Size | 15.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
2ae77bad84b001ee34dc8654d5aa3fd1880ef1849bc052e00c8aa4a4506d8921
|
|
BLAKE2b-256 checksum How to use checksums |
e9b367edafddb36e03c1b9fd2977d3c52b915480c8cba5fee568a22899369d02
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|