Infino vs the alternatives

infino diff --all

system agent builds unattendedkeyword + vectorsql on the dataopen files runs as data lives
elastic / opensearch no: cluster or service first yes: BM25 + kNN + RRF partial: ES|QL / SQL plugin no: engine segments cluster block storage
qdrant / weaviate partial: server first; python local mode partial: vector-first, sparse add-ons no: no SQL no: engine indexes server block storage
pgvector partial: needs a running Postgres partial: tsvector + pgvector, fused by hand yes: full Postgres SQL partial: readable within Postgres extension block storage
lancedb yes: pip install yes: FTS + vector partial: SQL filters via DataFusion partial: Lance format: open, needs its own readers embedded object or block
tantivy yes: cargo add, keyword only no: keyword only no: no SQL no: engine segments embedded block storage
infino yes: pip install → 5 lines to first query yes: BM25 + vector + RRF in one query yes: DataFusion; search as table functions yes: standard Parquet: DuckDB, pandas, Spark read it service object storage

cat FAQ.md

How is Infino different from Elasticsearch and OpenSearch?

They keep the data on the cluster’s own disks. Infino keeps it in your object-storage bucket and searches it there.

  • no cluster to size, shard, or reindex
  • no replicas: the object store is the durability
  • no second copy of data you already store
  • retention billed at object-storage rates, not hot-cluster rates
Why not a vector database?

In production, retrieval usually needs keyword matching for the queries embeddings miss, filters over metadata, joins against the catalog, and one ranking across all of it.

  • a vector database covers the vector part; the other three become separate systems to run
  • Infino covers all four in one engine
Does Infino replace Snowflake, Databricks, or DuckDB?

No. Warehouses answer analytical questions: scans, joins, aggregations, BI. Infino answers retrieval questions: the right rows in milliseconds, by keyword, similarity, or predicate.

  • same files: Infino’s indexes live inside the Parquet your warehouse already reads
  • DuckDB and Spark still open them as plain Parquet
What does Infino run as, and where does the data live?

A stateless gateway in front of per-database engine workers, all over one object-storage bucket. Storage and compute scale apart, so there is no cluster or replica set to size and operate.

  • data lives in your object store as standard Parquet, not on the engine’s own disks
  • compute is stateless: workers start per database on demand, across nodes for high availability
  • run it managed as Infino Cloud, or in your own cloud from the same codebase
Isn’t searching object storage slow?

Warm queries land in single-digit to low-double-digit milliseconds on real AWS S3. The index layout reads only the byte ranges a query touches, and hot data is cached on the worker.

  • 10M documents on real S3, warm p50: keyword ~7ms, vector ~10ms, hybrid ~13ms
  • a cold shard pays the first object fetch, then serves from cache
  • see the benchmarks for the full numbers and the method behind them
How does data get into Infino, and how fresh is it?

You write with append, update, and delete. Each write publishes atomically as a commit, so a query sees the whole batch or none of it, never a half-written one.

  • a commit writes new Parquet files plus a new manifest, then swaps the current-manifest pointer in one atomic step
  • existing files are never mutated: updates and deletes publish a new snapshot over different files
  • concurrent writers are guarded, so a writer on a stale manifest retries instead of clobbering another commit
  • read freshness follows the table’s consistency policy, applied on every query, with no manual reindex step
What does "agent builds unattended" mean?

An agent, or a person, can go from install to a verified first query in one sandbox session, with nothing to stand up first.

  • infino: pip install, five lines to a first query
  • lancedb: pip install · tantivy: cargo add, keyword only
  • pgvector: needs a running Postgres first
  • qdrant / weaviate: need a server; qdrant ships a python local mode
  • elasticsearch / opensearch: need a cluster or a managed service
What does "keyword + vector" mean?

Whether one engine runs keyword and vector search and ranks the results together.

  • infino: BM25 + vector, fused with RRF in one query
  • elasticsearch / opensearch: BM25 + kNN + RRF
  • lancedb: full-text + vector
  • pgvector: tsvector and pgvector are separate; you fuse the rankings by hand
  • qdrant / weaviate: vector-first, with sparse-vector add-ons
  • tantivy: keyword only
What does "sql on the data" mean?

Whether you can run SQL over the same rows the search indexes cover.

  • infino: SQL through DataFusion; search runs as table functions inside the query
  • pgvector: full Postgres SQL
  • lancedb: SQL filters through DataFusion
  • elasticsearch / opensearch: partial, ES|QL and a SQL plugin
  • qdrant, weaviate, tantivy: no SQL
What does "open files" mean?

Whether other engines can read the stored data without going through the one that wrote it.

  • infino: standard Parquet; DuckDB, pandas, and Spark open the same files
  • lancedb: Lance format, open but read through its own readers
  • pgvector: readable by anything that talks to Postgres
  • elasticsearch, opensearch, qdrant, weaviate, tantivy: engine-private formats
What are the licenses?
  • infino: Apache-2
  • opensearch: Apache-2 · elasticsearch: AGPL / ELv2
  • qdrant / weaviate: Apache-2 / BSD-3
  • pgvector: PostgreSQL license
  • lancedb: Apache-2
  • tantivy: MIT