Documentation

Build and read
the format.

Infino is one Apache Parquet file with a BM25 inverted index and a vector index embedded alongside the data. Build it with the Infino Builder, read it with the Infino Reader — or with any Parquet engine that already reads your data.

Quickstart · read an Infino file
use infino::{
    Reader, VectorSearchOptions, bm25_search, vector_search,
};
use infino::fts::reader::BoolMode;
use bytes::Bytes;

// One file: a valid Parquet file plus embedded BM25 + vector indexes.
let bytes: Bytes = std::fs::read("my.parquet")?.into();
let reader = Reader::open(bytes)?;

// BM25 search over the embedded inverted index:
let hits = bm25_search(&reader, "title", "rust async", 10, BoolMode::Or)?;

// ANN search over the embedded vector index:
let hits = vector_search(&reader, "embedding", &query, 10,
                         VectorSearchOptions::default())?;

// And the same bytes register as a normal Parquet table
// in DataFusion / DuckDB / pyarrow.
Reference
01

Format spec

Top-level byte layout, footer KV metadata, inverted-index region, vector-index region.

02

Build path

Builder API, ingest options, FTS / vector configs, commit() durability and the threshold-flush model.

03

Read path

Reader, OpenOptions, BM25 search, multi-column weighted search, ANN, and the Parquet sub-slice for DataFusion.

04

Query layer

Cross-segment query layer: ArcSwap reader-writer isolation, copy-on-write manifest, dual-pool concurrency, DataFusion SQL.