Skip to content
Multimodal engine

“Unstructured” is a euphemism for “my system can’t do this.”

Video, sensor logs, agent traces, and spatial data have structure: frames, clocks, spans, and coordinates. Spiral keeps that structure as typed columns next to your rows. You query them in place with SQL, Python, or Rust, on CPUs and GPUs.

Your video files stay in your bucket.

Query every modality as a table.

A robot log holds frames from several cameras and readings on clocks at several rates. Agent traces nest spans inside spans, with tool calls and screenshots, and each run appends new spans. In spatial data, points share coordinates with the polygons on a map. Most databases store this data as opaque blobs, and it ends up in loose files. In Spiral, a query lines up a camera frame with the force reading taken at the same instant, because every element keeps the recording’s clock.

Spiral keeps no second copy for the GPU or for search.

  • Yes: Frames decoded on the GPU

    Training reads frames as tensors in GPU memory. No decoded copy of the video lands on disk or in CPU memory.

    Spiral blog · Aug 13, 2026

  • No: Frame dumps on disk

    Teams dump frames to image files because the training job cannot read the video. Spiral decodes only the frames that a query asks for.

  • Yes: Search on the same rows

    The index holds only compact codes, which Spiral rebuilds from the table. Every distance in a result is exact, because Spiral ranks the candidates against the table’s own vectors.

  • No: A separate vector database

    A separate vector database is a second copy of your rows to keep in sync. Spiral’s index points at the table’s own rows, and it still finds them after compaction.