A faster, cheaper
Algolia.

Push records of any shape. Get back semantically meaningful, lexically precise, graph-aware results from a single REST endpoint. Flat monthly pricing — never a per-query bill.

Free up to 1,000 docs · no credit card required

search.sh 200 OK
# Hybrid search — one endpoint, four signals
curl -X POST https://xrecommend.com/api/v1/search \
  -H "Authorization: Bearer xr_live_••••••••" \
  -d '{
    "q": "lightweight summer shoes",
    "rerank": true,
    "top_k": 20
  }'

# Response: combined score + per-signal breakdown
{ "took_ms": 287, "results": [{ "title": "Red running shoes",
    "score": 0.91,
    "signals": { "dense": 0.94, "bm25": 0.78,
                 "sparse": 0.52, "kg": 0.31 } }] }

Why xrecommend

Three signals. One ranking. Zero surprises.

Hybrid search fused with Reciprocal Rank Fusion across dense embeddings, lexical BM25, and a knowledge graph. Every per-signal score is visible on every result.

RRF Fusion

Four retrievers, one ranked list

Each signal runs in parallel. Weighted RRF combines them — tune every weight per account or per query via the weights parameter. A cross-encoder reranker re-sorts the top 50.

RRF_score(d) = Σ weightr / (k + rankr(d))

dense:  0.4  → semantic meaning
bm25:   0.3  → exact keywords
sparse: 0.2  → synonym expansion
kg:     0.1  → graph structure

Zero ops

We run the stack — embedding workers, TLS renewals, backups. You push records and hit the API. No Kubernetes, no vector DB to manage.

Sub-300ms p99

SQLite WAL + KNN over vec0 + RRF in pure SQL. The rerank stage touches only the top 50 — stays under 300ms end-to-end.

Multilingual by default

BGE-M3 covers 100+ languages with 8K context. Push in any language; search in another. No per-locale config.

Knowledge graph included

Tag your docs — xrecommend builds the graph automatically and traverses it for structural relatedness. Drag-and-drop KG editor coming soon.

One API

POST /api/v1/search with a JSON body. Bearer-token auth, per-key rate limits, OpenAPI spec. No SDK lock-in.

Why switch

Same hybrid rankers. Without the per-query bill.

We benchmarked the four engines you're likely comparing us against. Numbers below are for a hosted 10 M-doc index serving production traffic. See the full benchmark for methodology.

  xrecommend hosted Algoliamanaged Elasticsearchmanaged Meilisearchmanaged
Hybrid ranking out of the box ~ DIY
Multilingual (100+ langs) no config ~
Per-signal score on every result DIY
Knowledge graph signal +
Per-key rate limits & quotas DIY
Open data export
Typical 10 M-doc monthly bill Free tierthen flat ~$3,500+per-query ~$300+infra + ops ~$250cloud tier

included ~ partial + add-on not available DIY build it yourself

Push. Search. Ship.

Two endpoints. Ten lines of code.

1 · Push records
curl -X POST https://xrecommend.com/api/v1/collections/products/documents \
  -H "Authorization: Bearer xr_live_••••••••••••••••" \
  -H "Content-Type: application/json" \
  -d '{
    "records": [
      { "id": "sku-001", "title": "Red running shoes",
        "body": "Lightweight mesh upper, breathable, summer-ready.",
        "metadata": { "price": 89.99, "category": "footwear", "tags": ["running"] } },
      { "id": "sku-002", "title": "Trail map of Yosemite",
        "body": "Topographic, 1:25000, water-resistant.",
        "metadata": { "category": "maps", "tags": ["outdoor"] } }
    ]
  }'
2 · Search with hybrid ranking
curl -X POST https://xrecommend.com/api/v1/search \
  -H "Authorization: Bearer xr_live_••••••••••••••••" \
  -H "Content-Type: application/json" \
  -d '{
    "q": "lightweight summer shoes",
    "weights": { "dense": 0.4, "bm25": 0.3, "sparse": 0.2, "kg": 0.1 },
    "rerank": true,
    "top_k": 20
  }'

# Response
{
  "took_ms": 287,
  "results": [
    { "id": "sku-001", "title": "Red running shoes",
      "score": 0.91,
      "signals": { "dense": 0.94, "bm25": 0.78, "sparse": 0.52, "kg": 0.31 } }
  ]
}

Start in 60 seconds.

No credit card. 1,000 docs free forever. Cancel anytime.