Retrieval that understands intent and respects keywords

Kelu combines semantic vector search with full-text ranking and fuses the results — so "rotate credentials" finds the page titled "regenerate API keys," and an exact error code still matches exactly.

How retrieval works

The pipeline behind every answer, search box, and bot

Meaning, not keywords

Semantic Search

  • OpenAI text-embedding-3-large embeddings
  • pgvector cosine similarity over every chunk
  • Matches paraphrases, synonyms, and vague phrasing
  • Cross-language matching for multilingual users
  • Heading-aware chunking preserves context

Full-Text Search

Precision when it counts
  • PostgreSQL full-text ranking (ts_rank_cd)
  • Exact matches for error codes and identifiers
  • Product names and API terms rank correctly
  • No embedding fuzziness on literal queries
  • Runs in the same store as your vectors

Fusion & Scoping

Best of both, scoped right
  • Reciprocal rank fusion merges both result sets
  • Source-group filters scope retrieval by product or version
  • Document visibility rules applied at query time
  • Result limit per request
  • Exposed via Search API, widget, bots, and MCP
One pipeline everywhere

The search behind everything

The same hybrid retrieval powers RAG answer grounding, the widget's search mode, the public Search API, MCP's search tool, and the Ask portal. Improve your content once and every surface gets better — there is no separate search product to tune.

  • Grounding for every RAG answer and citation
  • Standalone search results with relevance scores
  • Scoped retrieval via source groups (product, version, region)
  • Restricted documents kept off public surfaces
  • Unanswered questions feed the knowledge-gap report
POST /api/v1/public/knowledge-bases/:knowledgeBaseId/search
{
"query": "rotate credentials",
"limit": 5
}

// → chunks ranked by fused score
{
"results": [
  {
    "chunk": { "content": "To regenerate a key, open Settings..." },
    "document": {
      "title": "Regenerate API keys",
      "url": "https://docs.example.com/api-keys"
    },
    "rrf_score": 0.031
  }
]
}
Why teams trust the answers

Answers you can check, from a system that won't guess

01

Every answer from your docs shows its sources

Numbered links point to the page and section each part of the answer came from, so anyone can check it in one click.

02

It says "I don't know"

When your content does not cover a question, Kelu does not guess. In a helpdesk it posts nothing and tags the ticket for your team.

03

It stays in sync on its own

Each source re-syncs on its own schedule, from every 5 minutes for tickets to daily for websites. Unchanged pages are skipped.

Got questions?

Frequently Asked Questions

Common questions about Hybrid Search

Search that finds what users mean

Index a source and try hybrid search on your own content in minutes.

Free to start · No credit card required