One copy. Every query.
Put everything in Parquet.
Search indices, vectors, warehouse tables and agent context, as one copy of Parquet in your own bucket. Infino searches it, runs SQL on it and hands it to your agents.
The index lives inside the file.
A superfile is a search index that is a valid Parquet file: the data and the BM25 and vector indexes in one file. Any Parquet reader opens it. Files are never edited, only added.
tickets.parquet
rows
BM25 index
vector index
in your bucket
Search and SQL in one statement.
Search is a table function, so one statement can count, group, join, filter and run keyword, semantic and graph search together. No second system, no stitching in application code.
1An agent asks a question
How manyA count. The agent wants a number. SQL does this with COUNT. errors last nightFilters. Keep the error-level rows and the last 24 hours. mention disk fullKeyword search. Match those exact words in the log body. Today this is a call to a search engine. or look like a capacity incidentSemantic search. Match meaning even when the log never says disk full. Today this is a call to a vector database., and are tied to last week’s outageGraph search. Keep the errors linked to the outage’s record through a key they share, like a host or a service, even when they never mention it. Today this is a call to a graph database.? Which serviceA group on the same hits. SQL GROUP BY. Today a second warehouse query after the searches return. had them, and which team owns itA join. Match each service to its owner in a second table. Today the agent looks this up in another system and stitches the answers together.?
2It hides seven jobs
- count
- group
- join
- filter
- keyword search
- semantic search
- graph search
3Infino SQL runs all seven
SELECT o.team, h.service, count(*) AS hits FROM hybrid_search( 'logs', 'body', 'disk full', 'embedding', :q, 1000 ) AS h JOIN graph_walk('logs', 'incidents', [4521], 2, 5000) AS g ON g._id = h._id JOIN owners o ON o.service = h.service WHERE h.level = 'error' AND h.ts > now() - interval '24 hours' GROUP BY o.team, h.service ORDER BY hits DESC;
Your lake is already Parquet.
Infino reads the Iceberg and Delta Lake tables already in your bucket and serves search and SQL over them. Iceberg keeps the table state. Snowflake and Databricks keep the big scans. Infino adds search on the same files.
Snowflake
- Create a Cortex Search service
- Size a warehouse to serve it
- Write a semantic model for Cortex Analyst
Databricks
- Create a Vector Search endpoint
- Build a sync index on the table
- Curate a Genie space
Infino
- Send one hydrate request
- It loads the table into Parquet with the indexes inside
- It writes a table card and join keys
Which queries to move
| Query shape | What it reads | Run it on |
|---|---|---|
| Selective text and filters | the rows the index finds | Infino |
| Hybrid search plus SQL | the candidates search returns | Infino |
| Broad scans and large aggregates | most of the columns | Snowflake or Databricks |
Agents get the context.
Hydrate writes a table card and join keys for every table, so an agent knows what the data means before it queries. With Supermodel, the same frontier model answers 73.3% of OfficeQA Pro exactly right, against 55.6% on its own.
- OpenSearch APIYour Elasticsearch and OpenSearch apps send the same Query DSL.
- SQLSearch functions inside SQL, with joins, aggregates and window functions.
- MCPAgents call tools that read table cards and join keys first.
- Plain EnglishAnyone asks, and Supermodel writes the queries.
Try it on live data.
Keyword, semantic and hybrid search, answered from the same rows of one Parquet table on Infino Cloud. No account, no key.
ask a question
Ask a question about arXiv abstracts, or pick a suggestion.
this is the retrieval step of an agent, made visible: one call each way, and hybrid decides when keyword and meaning disagree. getting it otherwise takes a search stack, a vector stack, and glue.
three searches run at once
Keyword, semantic and hybrid over one Parquet table, each timed by the engine. Click a lane to see the SQL it sent.
via sql table functions idle times are full round trips to Infino Cloud, network included · the engine alone is faster
see what each one found
Hover a dot to read the result. Click it to pull in its neighbours.
Run it where your data is.
- Your bucketS3, GCS, Azure Blob or local disk. The data never leaves it.
- Storage and compute apartNodes hold no data. Add them for queries, remove them when idle.
- Managed or yoursInfino Cloud, single-tenant Enterprise, or the Apache-2.0 engine on your own machines.
Point Infino at your bucket.
or run it yourself: pip install infino · Apache-2.0 · quickstart →