Use case

Search in your SaaS, isolated per customer.

Your customers want search and AI answers over their own data, and none of them want to share an index. Ship the feature without building the platform.

Per-tenant collections Per-key access grants Hybrid retrieval, reranked Your database underneath

The feature is easy. The platform is not.

A search box over one folder is a demo. Search for a thousand paying tenants is an infrastructure product, and most teams discover that after they have promised the feature.

  • Isolation cannot be a WHERE clause. When tenant separation depends on every query remembering a filter, one forgotten predicate is a breach notification. Isolation has to be structural: access grants at the key, enforced below your code.
  • Hosted vector databases add a data processor. Your customers' documents flowing to a third-party index is a new line in every DPA and a new veto in every enterprise deal.
  • The pipeline is the real work. Parsing, chunking, embedding, re-embedding on model change, reranking, citations: the retrieval stack is months of plumbing before the first good result.
  • Per-query pricing scales against you. Usage-billed search APIs mean your most engaged customers are your most expensive ones.
  • Ops teams want their own database. A search feature that demands a new stateful system gets vetoed; one that runs on the database already in production, or fully self-contained on local files, gets approved.

Provision, grant, ingest, serve.

LM-Kit One's search service is the retrieval platform, so your product only calls it.

01

Provision

Each customer gets a tenant; each workspace a collection, over REST.

02

Grant

API keys carry explicit cluster grants; a key sees its tenants and nothing else.

03

Ingest

Documents are parsed, chunked, and embedded by the document engine; reindexing is a call, not a project.

04

Serve

Hybrid search, reranking, and grounded answers, scoped to the caller's grant.

One engine, two ways to ship it.

The deployment model of your product decides the form of its search.

Serve it

LM-Kit One: the search backend of your SaaS

Your application servers call the search service over REST; tenants, collections, grants, and reindexing are its job. It scales horizontally, any node serving any request, as your customer base grows.

Deploy LM-Kit One

Embed it

LM-Kit.NET: search inside on-prem editions

The desktop or customer-installed edition of your product embeds the built-in vector store and the same retrieval pipeline, one tenant per install, no server required.

Embed LM-Kit.NET

What makes it sellable to enterprises.

The three answers your customers' security reviews will ask for.

Isolated

Structural tenant isolation

Access is grant-only per API key and the service scopes every query to that grant, on every storage engine. On PostgreSQL, row-level security adds a further layer inside the database itself.

Yours

Storage you compose

Two choices per cluster: full text on PostgreSQL, built-in SQLite, MySQL, or SQL Server; vectors beside it or in Qdrant. From fully local to 100% PostgreSQL to your estate paired with Qdrant.

Grounded

Answers that show their work

Answer responses carry citations, a groundedness score, and any unsupported claims flagged, so your product can refuse to bluff.

Scoped search, working code.

Two calls your product makes: ranked results for the search box, grounded answers for the assistant.

Frequently asked questions.

How is tenant isolation actually enforced?

Below your application code, on every storage engine. API keys carry explicit per-cluster grants, so a key can only see the tenants it was granted, and the service scopes every query to that grant. On PostgreSQL, row-level security adds a further enforcement layer inside the database itself. Isolation never depends on your queries remembering a filter.

Which databases can back the search service?

Storage is composed per cluster on two independent axes. Full text runs on PostgreSQL, the built-in SQLite store, MySQL, or SQL Server; vectors live beside the full text (pgvector on PostgreSQL, the local index on SQLite) or in an external Qdrant. That spans fully local with zero external services, 100% PostgreSQL in one database, and MySQL or SQL Server paired with Qdrant.

What happens when we change embedding models?

Reindexing is a service operation per collection, not a data migration you script. The service owns chunking, embedding, and index maintenance, so a model upgrade is a call and a wait, and queries keep serving meanwhile.

Do our customers' documents ever leave our infrastructure?

No. Ingestion, embedding, retrieval, and answer generation all run on your deployment of LM-Kit One. There is no hosted index, no third-party vector database, and no new data processor in your customers' DPAs.

Search for builders

Promise the feature. Skip the platform.