pixeltable

pixeltable/pixeltable

Unified multimodal backend for AI data apps

1.6k
Stars
216
Forks
38
Open issues
20
Watchers
Python Apache-2.0Last pushed Jul 7, 2026

Unified multimodal backend for AI data apps

Categories

Tags

Similar tools

Install

pip install pixeltable

README

Pixeltable Logo

Quick Start | Documentation | CLI | Dashboard | llms-full.txt | Starter Kit | AI Coding Skill | Discord

Make Building Multimodal AI Data Apps Dead Simple

Pixeltable is the unified multimodal backend for AI data apps. One Python API: store media, run models, index embeddings, serve endpoints, and version everything in a single system instead of gluing together blob storage, a vector DB, an orchestrator, and edge functions. Chunking, embeddings, agents, and serving run from computed columns on insert, not glue scripts you maintain separately. Transactions, caching, retries, and observability are built in. Extend with @pxt.udf, @pxt.uda, and @pxt.query.

Core Capabilities

Expand any row for what Pixeltable replaces, a quick example, and doc links. Examples assume import pixeltable as pxt.

Store: unified multimodal interface

pxt.Image, pxt.Video, pxt.Audio, pxt.Document, pxt.Json: one table for structured and media data with destination= for S3, GCS, Azure, R2, and more. Not S3 + Postgres + boto3 sync.

t = pxt.create_table(
    'media',
    {
        'img': pxt.Image,
        'video': pxt.Video,
        'audio': pxt.Audio,
        'document': pxt.Document,
        'metadata': pxt.Json,
    },
)

Type system · Tables & data · Cloud storage

Import / export: I/O without glue scripts

create_table(source=...), path/URL insert(), Hugging Face, export_parquet(), PyTorch, COCO, and more. Not per-format ETL scripts.

# Create a table from a file, URL, or Hugging Face dataset
pxt.create_table('app/data', source='data.csv')
pxt.create_table('app/reviews', source=hf_dataset)

# Append rows into an existing table from a path or URL
t.insert('s3://my-bucket/new_rows.parquet')

# Export to analytics/ML formats
pxt.io.export_parquet(t, 'data.parquet')
pytorch_ds = t.to_pytorch_dataset('pt')  # PyTorch DataLoader ready
coco_path = t.to_coco_dataset()  # COCO annotations

CSV import · Hugging Face · PyTorch export · ML data wrangling

Iterate: explode media into rows

create_view() with iterators splits documents into chunks, video into frames, audio into segments, and typed JSON lists into rows. Not FFmpeg/spaCy pipelines with child tables and foreign keys. For custom explode logic, use @pxt.iterator.

from pixeltable.functions.document import document_splitter
from pixeltable.functions.json imp