Skip to main content

Retriever API Reference

Retriever

from synapsekit import Retriever
from synapsekit.retrieval.base import VectorStore

Retriever(
vectorstore: VectorStore,
rerank: bool = False,
)

Accepts any VectorStore subclass — InMemoryVectorStore, ChromaVectorStore, FAISSVectorStore, etc.

Methods

MethodSignatureDescription
addasync add(texts: list[str], metadata: list[dict] | None = None)Add texts to the vector store
retrieveasync retrieve(query: str, top_k: int = 5) -> list[str]Return top-k relevant text chunks
retrieve_with_scoresasync retrieve_with_scores(query: str, top_k: int = 5) -> list[dict]Return top-k with scores and metadata

BM25 reranking

When rerank=True, the retriever fetches top_k × 3 candidates from the vector store and re-ranks them using BM25 (keyword match). The rank-bm25 package is a hard dependency, so no extra install is needed.

retriever = Retriever(store, rerank=True)
chunks = await retriever.retrieve("async Python", top_k=5)

Example

from synapsekit import InMemoryVectorStore, SynapsekitEmbeddings, Retriever

embeddings = SynapsekitEmbeddings()
store = InMemoryVectorStore(embeddings)
retriever = Retriever(store, rerank=True)

await retriever.add(
["SynapseKit is async-first.", "It supports streaming."],
metadata=[{"src": "intro"}, {"src": "intro"}],
)

chunks = await retriever.retrieve("what is SynapseKit?", top_k=2)
# → ["SynapseKit is async-first.", "It supports streaming."]

results = await retriever.retrieve_with_scores("streaming", top_k=1)
# → [{"text": "It supports streaming.", "score": 0.98, "metadata": {"src": "intro"}}]