Introducing xrecommend

A faster, cheaper Algolia — embeddings, BM25, and a knowledge graph, all hybridized. This post is the story of why we built it and what it does.

The problem with search-as-a-service

Algolia is excellent and we use it on a couple of side projects. But for a long-running, document-heavy workload the per-query fees and per-record pricing add up. And every "vector search" SaaS charges per-embedding, on top of per-query.

What xrecommend does

xrecommend runs the whole search stack end-to-end and exposes it through a single REST endpoint. Embeddings, BM25, sparse weights, and a knowledge graph all fuse into one ranking. No per-query cost, no per-embedding cost.

How it ranks

We fuse four signals with weighted Reciprocal Rank Fusion:

  • Dense embeddings from BGE-M3 (1024-dim)
  • BM25 from SQLite FTS5
  • Sparse embeddings (also from BGE-M3, in the same forward pass)
  • Knowledge graph traversal via recursive CTEs

The top 50 candidates go to a cross-encoder reranker. End-to-end p99 sits at ~300ms.

Try it

Spin up a free account and push your first records in under a minute.