Hi there, thanks for writing and sharing your experiences. I'm one of the builders of GoodMem ( https://goodmem.ai/ ), which is infra to simplify end-to-end RAG/agentic memory systems like the one you built. It's built on Postgres, which I know you said you left behind, but one of the cool features it supports is hybrid search over multiple vector representations of a passage, so you can do a dense (e.g. nomic) and s…
This is really cool. How is reranking built in? Is there a model that runs inside the database? If so, how did you choose it?
We support both commercial APIs and self-hosted options:
- Cohere (rerank-english-v3.0, etc.)
- Voyage AI (rerank-2.5)
- Jina AI (jina-reranker-v3)
Self-hosted (no API key needed): - TEI - https://github.com/huggingface/text-embeddings-inference
- vLLM - https://docs.vllm.ai/en/v0.8.1/serving/openai_compatible_server.html#rerank-api
You register a reranker once with the CLI: # Cohere
goodmem reranker create \
--display-name "Cohere" \
--provider-type COHERE \
--endpoint-url "https://api.cohere.com" \
--model-identifier "rerank-english-v3.0" \
--cred-api-key "YOUR_API_KEY"
# Self-hosted TEI (e.g., BAAI/bge-reranker-v2-m3)
goodmem reranker create \
--display-name "TEI Local" \
--provider-type TEI \
--endpoint-url "http://localhost:8081" \
--model-identifier "BAAI/bge-reranker-v2-m3"
Then you can experiment interactively through the TUI. goodmem memory retrieve \
--space-id \
--post-processor-interactive \
"your query"
For your setup, I think TEI is probably the path of least resistance, it has first-class reranker support and runs well on CPU.