One retrieval layer, three query modes.

The Infino playground: keyword, semantic, and hybrid search answered from the same rows of one Parquet table, live on Infino Cloud. This is the retrieval layer agents call, with published read-only credentials: query it here, from your code, or point your agent at it.

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.

query …

three searches run at once

Keyword, semantic and hybrid, each timed end to end over one Parquet table. Click a lane to see the SQL it sent.

via sql table functions idle
encode · …
bm25… vector… hybrid…

times are full round trips to Infino Cloud, network included · the engine alone is faster

appears after the first run

see what each one found

Hover a dot to read the result. Click it to pull in its neighbours.

hover to inspect, click to bloom
dataset: arXiv abstracts · 45,012 rows · arXiv metadata snapshot, CC0 read-only sandbox · get started for free with your own

Run the same search from your own code

The sandbox is a normal Infino Cloud database with a published read-only key. The snippet below runs as written, no signup.

sandbox.sh
curl -s -X POST "https://api.platform.infino.ws/v1/bm25_search/playground" \
  -H "Authorization: Bearer inf_80c05c067c7883da_16b5ee60687b7fedd5d5163ae6ec67fe8d89105e32e82717" \
  -H "Content-Type: application/json" -H "Accept: application/json" \
  -d '{"table_name":"papers","field_name":"abstract","query":"attention transformer translation","k":3,"mode":"or","projection":["title","cat"]}'

credentials: /sandbox.json · read-only · shared by everyone on this page

Give it to your agent

The sandbox speaks MCP through the published server. One block of config gives Claude Code, Cursor, or any MCP client live keyword, semantic, and hybrid search over every corpus here, embedding included.

mcp.json
{
  "mcpServers": {
    "infino-playground": {
      "command": "npx",
      "args": ["-y", "@infino-ai/mcp-server"],
      "env": {
        "INFINO_MCP_URI": "https://api.platform.infino.ws/playground",
        "INFINO_API_KEY": "inf_80c05c067c7883da_16b5ee60687b7fedd5d5163ae6ec67fe8d89105e32e82717",
        "INFINO_MCP_EMBED_MODEL": "Xenova/bge-small-en-v1.5"
      }
    }
  }
}

the key is read-only, so your agent can search but not write · the embed model is pinned because this corpus stores bge-small vectors · Claude Code users can instead run /plugin marketplace add infino-ai/infino-mcp then /plugin install infino@infino-ai for their own databases (its prompts don't set the embed model, so use the config above for this sandbox) · autonomous agents: read /playground.md and fetch /sandbox.json for credentials

Complex questions in a single query

The search modes are functions inside SQL, so an agent expresses a rank, a join, and an aggregate as one statement: one round trip, fewer model turns, fewer tokens. The window above runs its lanes exactly this way in sql tvf mode, and this aggregate runs against the sandbox as written:

one-request.sql
SELECT substr(t.year, 1, 3) || '0s' AS decade, count(*) AS n
FROM bm25_search('movies', 'plot', 'dinosaur park', 500) h
JOIN "movies" t ON t._id = h._id
GROUP BY decade ORDER BY n DESC
-- the decade histogram of 500 ranked hits, one round trip:
-- [{"decade":"2000s","n":158}, {"decade":"1990s","n":80}, …]

POST it as the query field to /v1/query_sql/playground with the same key

The database you just searched is a Parquet file

Infino writes its indexes inside spec-compliant Apache Parquet, so any Parquet reader opens the same files. Download one of the real files behind a 100-row sample of this table and check:

verify.py
# pip install pyarrow · no infino anywhere in this snippet
import pyarrow.parquet as pq
t = pq.read_table("movies-sample.sf.parquet")
print(t.num_rows, t.column_names)
# 17 ['_id', 'title', 'year', 'plot']

download movies-sample.sf.parquet · 180 KB · one shard of the sample table, BM25 + vector indexes inside, still plain Parquet to every other tool

This is a shared, read-only sandbox. Your own database, with write access and your own data, takes a minute:

agents: fetch /sandbox.json for credentials and query the API directly