top | item 46847063

(no title)

svcrunch | 29 days ago

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 sparse (e.g. splade) search. Reranking is also built in, although it lacks automatic caching (since, in general, the corpus changes over time)

It also deploys to fly.io/railway and costs a few bucks a month to run if you're willing to use cloud-hosted embedding models (otherwise, you can run TEI/vLLM on CPU or GPU for the setup you described).

I hope it's helpful to someone.

discuss

order

cckolon|28 days ago

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?

svcrunch|28 days ago

Thanks for your interest. The rerankers are external, GoodMem is a unified API layer that calls out to various providers. There's no model running inside the database or the GoodMem server.

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 <your-space> \
    --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.