Search what the agent said.
Join it to what happened.
Your stack already records product events, metrics, logs, and traces. Agent runs add prompts, responses, and tool arguments alongside trace ids, model, latency, tokens, and status. Infino searches that content with BM25 and vectors, then joins it to surrounding telemetry in SQL. The indexes stay inside standard Parquet, so the rest of your stack keeps reading the same data.
cat TELEMETRY.md
Existing telemetry already spans numbers and text
Product and infrastructure systems already emit several kinds of records.
- Product analytics. Clicks, page views, funnel steps, timestamps, categorical properties, and numeric measures, keyed by visitor, user, or account id.
- Infrastructure telemetry. Numeric metrics, text or JSON logs, and traces made of spans and attributes.
- Shared keys connect them: trace id, session id, visitor id, user id, or account id.
cat AGENT_TEXT.md
What agent runs add
An agent turn combines searchable content with structured execution fields.
- Prompts, replies, tool arguments, and tool output are long-form content.
- Model, status, latency, token counts, trace id, session id, and user or account id remain ordinary columns.
- The questions are search questions: find, rank, then count. “How many conversations last week were about refunds, including the ones that never said the word refund.”
- A
LIKE '%refund%'scan misses paraphrases and does not rank the matching turns.
cat TOOLS.md
Where Infino fits
Keep the systems that collect telemetry, run evals, and serve BI. Infino adds ranked retrieval over agent content and SQL joins to the records around it.
- Observability and eval tools collect metrics, logs, traces, and run scores.
- The warehouse keeps BI, product analytics, and governance.
- Infino searches prompts, replies, and tool content with keyword and vector retrieval, then joins the matches to Parquet event or trace tables in SQL. Existing tools keep reading the same columns.
cat QUESTIONS.md
Questions across agent content and telemetry
Retrieve the matching turns, then count or join them to product and infrastructure records.
- How many conversations in the last 7 days mention refunds, including paraphrases.
- Of those visitors, who also clicked checkout in the same hour.
- Which tool errors preceded conversations containing “this is broken”.
- Which sessions had the same ask three times in a row.
cat retrieve.sql
Search as a table function
Find the refund conversations with keyword plus vector in one statement. Filters ride the same pass. The result is a relation you can JOIN and GROUP BY.
SELECT trace_id, session_id, user_id, text, score FROM hybrid_search( 'agent_turns', -- prompts + responses in your bucket 'text', 'refund this is broken', -- the keyword side 'embedding', :q, 200 -- the vector side, 200 deep each ) WHERE ts >= now() - interval '7 days' -- scalar filters ride the same pass ORDER BY score DESC; -- → BM25 + vector, fused, over the last week of agent content
cat join.sql
Then join it to product events
This example joins on user id. The same pattern joins agent turns to spans by trace id or to sessions by session id.
-- which pages did refund conversations also touch WITH hits AS ( SELECT user_id, text, ts, score FROM hybrid_search('agent_turns', 'text', 'refund', 'embedding', :q, 500) ) SELECT e.page, e.event, count(DISTINCT h.user_id) AS users FROM hits h JOIN events e ON e.user_id = h.user_id -- a shared identity key AND e.ts BETWEEN h.ts - interval '1 hour' AND h.ts + interval '1 hour' GROUP BY e.page, e.event ORDER BY users DESC; -- → pages and events grouped by users with matching conversations
cat PARQUET.md
Fast text search without another data format
Infino adds BM25 and vector indexes inside standard Parquet. Existing tools keep reading the column data; Infino uses the embedded indexes for ranked text retrieval.
- DuckDB, Spark, and warehouse readers keep opening the same files. The embedded search indexes are Infino-specific.
- If event and trace tables already live as Parquet, Infino can search and join those files in one statement.
- If a table remains only in another engine, retrieve the matching ids in Infino and join them in that system.
- Start with the agent tables; the whole lake does not have to move first.
cat FAQ.md
Where does Infino fit beside ClickHouse, Elasticsearch, or an eval platform?
Infino can replace Elasticsearch as the search layer for agent content. It runs beside warehouses used for BI and observability or eval tools used for metrics, logs, traces, and run scores.
Does Infino replace our product analytics?
No. Keep the SDK, event pipeline, and product analytics UI. Infino indexes agent content and joins it to existing events by visitor, user, or account id.
Do we have to migrate the whole event store first?
No. Start with the agent-turn tables. If event or trace tables are available to Infino as Parquet, join them directly. If they remain only in another engine, retrieve the matching ids in Infino and join them in that system.
Where do embeddings come from?
Infino can embed text on ingest using the model selected for the table. You can also send vectors from your own model. Some teams embed every prompt and response; others embed a conversation summary. Keyword search and SQL need no embeddings.
Can we keep writing Parquet ourselves?
Yes. Infino adds BM25 and vector indexes inside the Parquet while preserving the standard column data. DuckDB, Spark, and warehouse readers keep reading those columns. A generic Parquet rewrite drops Infino’s embedded indexes, so rehydrate after such a rewrite.
How is tenant data isolated?
On Infino Cloud, each database is its own OS process and object-store tokens are scoped to that tenant’s prefix. Dedicated single-tenant deploys are Enterprise. The security page covers Cloud, the open-source engine, and how to request a DPA.
How do deletes work?
Files are never edited. Deletes are tombstones over those immutable files. A query that already pinned a manifest does not see a delete that committed after it started.
Go deeper: SQL table-valued functions · security · integration · how it works