[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-10764":3},{"id":4,"name":5,"fullName":6,"owner":5,"repo":5,"description":7,"homepage":8,"htmlUrl":9,"language":10,"languages":9,"totalLinesOfCode":9,"stars":11,"forks":12,"watchers":13,"openIssues":14,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":15,"stars7d":16,"stars30d":13,"stars90d":15,"forks30d":15,"starsTrendScore":15,"compositeScore":17,"rankGlobal":9,"rankLanguage":9,"license":18,"archived":19,"fork":19,"defaultBranch":20,"hasWiki":21,"hasPages":21,"topics":22,"createdAt":9,"pushedAt":9,"updatedAt":38,"readmeContent":39,"aiSummary":40,"trendingCount":15,"starSnapshotCount":15,"syncStatus":41,"lastSyncTime":42,"discoverSource":43},10764,"pixeltable","pixeltable\u002Fpixeltable","Declarative and Incremental Backend for Multimodal AI Applications","https:\u002F\u002Fdocs.pixeltable.com",null,"Python",1570,215,21,15,0,1,57.6,"Apache License 2.0",false,"main",true,[23,24,25,26,27,28,29,30,31,32,33,34,35,36,37],"ai","artificial-intelligence","chatbot","computer-vision","data-science","database","feature-engineering","feature-store","genai","llm","machine-learning","ml","mlops","multimodal","vector-database","2026-06-12 04:00:52","\u003Cpicture class=\"github-only\">\n  \u003Csource media=\"(prefers-color-scheme: light)\" srcset=\"https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002Fe9bf82b2-cace-4bd8-9523-b65495eb8131\">\n  \u003Csource media=\"(prefers-color-scheme: dark)\" srcset=\"https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002Fc5ab123e-806c-49bf-93e7-151353719b16\">\n  \u003Cimg alt=\"Pixeltable Logo\" src=\"https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002Fe9bf82b2-cace-4bd8-9523-b65495eb8131\" width=\"40%\">\n\u003C\u002Fpicture>\n\n\u003Cdiv>\n\u003Cbr>\n\u003C\u002Fdiv>\n\nThe only open source Python library providing declarative, transactional data infrastructure for building multimodal AI applications — with incremental storage, transformation, indexing, retrieval, and orchestration of data, all with full operational integrity.\n\n[![License](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-Apache%202.0-0530AD.svg)](https:\u002F\u002Fopensource.org\u002Flicenses\u002FApache-2.0)\n[![PyPI Package](https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fv\u002Fpixeltable?color=4D148C)](https:\u002F\u002Fpypi.org\u002Fproject\u002Fpixeltable\u002F)\n[![Python](https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fpyversions\u002Fpixeltable)](https:\u002F\u002Fpypi.org\u002Fproject\u002Fpixeltable\u002F)\n[![tests status](https:\u002F\u002Fgithub.com\u002Fpixeltable\u002Fpixeltable\u002Factions\u002Fworkflows\u002Fpytest.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002Fpixeltable\u002Fpixeltable\u002Factions\u002Fworkflows\u002Fpytest.yml)\n[![nightly status](https:\u002F\u002Fgithub.com\u002Fpixeltable\u002Fpixeltable\u002Factions\u002Fworkflows\u002Fnightly.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002Fpixeltable\u002Fpixeltable\u002Factions\u002Fworkflows\u002Fnightly.yml)\n[![stress-tests status](https:\u002F\u002Fgithub.com\u002Fpixeltable\u002Fpixeltable\u002Factions\u002Fworkflows\u002Fstress-tests.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002Fpixeltable\u002Fpixeltable\u002Factions\u002Fworkflows\u002Fstress-tests.yml)\n[![Discord](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FDiscord-%235865F2.svg?logo=discord&logoColor=white)](https:\u002F\u002Fdiscord.gg\u002FQPyqFYx2UN)\n\n[**Quick Start**](https:\u002F\u002Fdocs.pixeltable.com\u002Foverview\u002Fquick-start) |\n[**Documentation**](https:\u002F\u002Fdocs.pixeltable.com\u002F) |\n[**API Reference**](https:\u002F\u002Fdocs.pixeltable.com\u002Fsdk\u002Flatest\u002Fpixeltable) |\n[**Starter Kit**](https:\u002F\u002Fgithub.com\u002Fpixeltable\u002Fpixeltable-starter-kit) |\n[**AI Coding Skill**](https:\u002F\u002Fgithub.com\u002Fpixeltable\u002Fpixeltable-skill) |\n[**Pixeltable Cloud**](https:\u002F\u002Fwww.pixeltable.com\u002F)\n\n---\n\n## Installation\n\n```bash\npip install pixeltable\n```\n\nPixeltable bundles its own transactional database, orchestration engine, and local dashboard. No Docker, no external services — `pip install` is all you need. All data is managed in `~\u002F.pixeltable` and accessed through the [Python SDK](https:\u002F\u002Fdocs.pixeltable.com\u002Fsdk\u002Flatest\u002Fpixeltable). See [Working with External Files](https:\u002F\u002Fdocs.pixeltable.com\u002Fplatform\u002Fexternal-files) and [Storage Architecture](https:\u002F\u002Fdocs.pixeltable.com\u002Fhowto\u002Fdeployment\u002Finfrastructure#storage-architecture) for details.\n\n## Quick Start\n\nDefine your data processing and AI workflow declaratively using\n**[computed columns](https:\u002F\u002Fdocs.pixeltable.com\u002Ftutorials\u002Fcomputed-columns)** on\n**[tables](https:\u002F\u002Fdocs.pixeltable.com\u002Ftutorials\u002Ftables-and-data-operations)**.\nFocus on your logic, not the data plumbing.\n\n```bash\npip install pixeltable google-genai torch transformers scenedetect\n```\n\nSet your Gemini API key via environment variable or `~\u002F.pixeltable\u002Fconfig.toml`. See [Configuration](https:\u002F\u002Fdocs.pixeltable.com\u002Fplatform\u002Fconfiguration) for all provider keys and options.\n\n```python\nimport pixeltable as pxt\nfrom pixeltable.functions import gemini, huggingface\n\n# 1. Store — structured data + media references, versioned and materialized automatically\nvideos = pxt.create_table('video_search', {'video': pxt.Video, 'title': pxt.String})\n\n# 2. Orchestrate — computed columns are nodes in the table's DAG; the table is the pipeline\nvideos.add_computed_column(scenes=videos.video.scene_detect_adaptive())\n\n# 3. AI integration — external API calls with rate limiting, retry, and async parallelism\nvideos.add_computed_column(\n    response=gemini.generate_content(\n        [videos.video, 'Describe this video in detail.'], model='gemini-3-flash-preview'\n    )\n)\n\n# 4. JSON path expressions — extract nested fields with just-in-time typing\nvideos.add_computed_column(\n    description=videos.response.candidates[0].content.parts[0].text\n)\n\n# 5. Incremental index maintenance — embedding indexes stay in sync, no ETL pipeline needed\nvideos.add_embedding_index('video', embedding=gemini.embed_content.using(model='gemini-embedding-2-preview'))\n\n# Insert data — triggers the full pipeline automatically\nbase_url = 'https:\u002F\u002Fraw.githubusercontent.com\u002Fpixeltable\u002Fpixeltable\u002Frelease\u002Fdocs\u002Fresources'\nvideos.insert([\n    {'video': f'{base_url}\u002Fbangkok.mp4', 'title': 'Bangkok Street Tour'},\n    {'video': f'{base_url}\u002FThe-Pursuit-of-Happiness-Video-Extract.mp4', 'title': 'The Pursuit of Happiness'},\n])\n\n# 6. Retrieve — structured + unstructured data side by side, with on-the-fly transforms\nvideos.select(\n    videos.video,\n    videos.title,\n    videos.description,\n    detections=huggingface.detr_for_object_detection(\n        videos.video.extract_frame(timestamp=2.0),\n        model_id='facebook\u002Fdetr-resnet-50',\n    ),\n).collect()\n\n# 7. Cross-modal search — find similar videos using a reference image, with filters\nsim = videos.video.similarity(image=f'{base_url}\u002FThe-Pursuit-of-Happiness-Screenshot.png')\nvideos.where(videos.description != None).order_by(sim, asc=False).limit(5).collect()\n```\n\n## What Pixeltable Does\n\n| You Write | Pixeltable Does |\n|-----------|-----------------|\n| `pxt.Image`, `pxt.Video`, `pxt.Document` columns | Stores media, handles formats, caches from URLs |\n| `add_computed_column(fn(...))` | Runs incrementally, caches results, retries failures |\n| `add_embedding_index(column)` | Manages vector storage, keeps index in sync |\n| `@pxt.udf` \u002F `@pxt.query` | Creates reusable functions with dependency tracking |\n| `table.insert(...)` | Triggers all dependent computations automatically |\n| `t.sample(5).select(t.text, summary=udf(t.text))` | Experiment on a sample — nothing stored, calls parallelized and cached |\n| `table.select(...).collect()` | Returns structured + unstructured data together |\n| *(nothing — it's automatic)* | Versions all data and schema changes for time-travel |\n\nThat single workflow replaces most of the typical AI stack:\n\n| Instead of ... | Pixeltable gives you ... |\n|---|---|\n| PostgreSQL \u002F MySQL | `pxt.create_table()` — schema is Python, versioned automatically |\n| pgAdmin \u002F Retool.. | Built-in local dashboard — auto-launches, zero config |\n| Pinecone \u002F Weaviate \u002F Qdrant | `add_embedding_index()` — one line, stays in sync |\n| S3 \u002F boto3 \u002F blob storage | `pxt.Image` \u002F `Video` \u002F `Audio` \u002F `Document` types with caching; `destination='s3:\u002F\u002F...'` |\n| Airflow \u002F Prefect \u002F Celery | Computed columns trigger on insert — no orchestrator needed |\n| LangChain \u002F LlamaIndex (RAG) | `@pxt.query` + `.similarity()` + computed column chaining |\n| pandas \u002F polars (multimodal) | `.sample()`, ephemeral UDFs, then `add_computed_column()` |\n| DVC \u002F MLflow \u002F W&B | Built-in `history()`, `revert()`, time travel (`table:N`), snapshots |\n| Custom retry \u002F rate-limit \u002F caching | Built into every AI integration; results cached, only new rows recomputed |\n| Custom ETL \u002F glue code | Declarative schema — Pixeltable handles execution, caching, incremental updates |\n\nOn top of these, Pixeltable ships with [built-in functions](https:\u002F\u002Fdocs.pixeltable.com\u002Fsdk\u002Flatest\u002Fpixeltable) for media processing (FFmpeg, Pillow, spaCy), embeddings (sentence-transformers, CLIP), and [30+ AI providers](https:\u002F\u002Fdocs.pixeltable.com\u002Fintegrations\u002Fframeworks) (OpenAI, Anthropic, Gemini, Ollama, and more). For anything domain-specific, wrap your own logic with [`@pxt.udf`](https:\u002F\u002Fdocs.pixeltable.com\u002Fplatform\u002Fudfs-in-pixeltable). You still write the application layer (FastAPI, React, Docker).\n\n**Deployment options:** Pixeltable can serve as your [full backend](https:\u002F\u002Fdocs.pixeltable.com\u002Fhowto\u002Fdeployment\u002Foverview) (managing media locally or syncing with S3\u002FGCS\u002FAzure, plus built-in vector search and orchestration) or as an [orchestration layer](https:\u002F\u002Fdocs.pixeltable.com\u002Fhowto\u002Fdeployment\u002Foverview) alongside your existing infrastructure.\n\n## Demo\n\nSee Pixeltable in action — table creation, computed columns, multimodal processing, and querying in a single workflow:\n\nhttps:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002Fb50fd6df-5169-4881-9dbe-1b6e5d06cede\n\n## Core Capabilities\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>Store:\u003C\u002Fb> Unified Multimodal Interface\u003C\u002Fsummary>\n\u003Cbr>\n\n[`pxt.Image`](https:\u002F\u002Fdocs.pixeltable.com\u002Fplatform\u002Ftype-system), `pxt.Video`, `pxt.Audio`, `pxt.Document`, `pxt.Json` – manage diverse data consistently.\n\n```python\nt = pxt.create_table(\n    'media',\n    {\n        'img': pxt.Image,\n        'video': pxt.Video,\n        'audio': pxt.Audio,\n        'document': pxt.Document,\n        'metadata': pxt.Json,\n    },\n)\n```\n\n→ [Type System](https:\u002F\u002Fdocs.pixeltable.com\u002Fplatform\u002Ftype-system) · [Tables & Data](https:\u002F\u002Fdocs.pixeltable.com\u002Ftutorials\u002Ftables-and-data-operations)\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>Orchestrate:\u003C\u002Fb> Declarative Computed Columns\u003C\u002Fsummary>\n\u003Cbr>\n\n[Define processing steps once](https:\u002F\u002Fdocs.pixeltable.com\u002Ftutorials\u002Fcomputed-columns); they run automatically on new\u002Fupdated data. Supports **API calls** (OpenAI, Anthropic, Gemini), **local inference** (Hugging Face, YOLOX, Whisper), **vision models**, and any Python logic.\n\n```python\n# LLM API call\nt.add_computed_column(\n    summary=openai.chat_completions(\n        messages=[{'role': 'user', 'content': t.text}], model='gpt-4o-mini'\n    )\n)\n\n# Local model inference\nt.add_computed_column(\n    classification=huggingface.vit_for_image_classification(t.image)\n)\n\n# Vision analysis (multimodal)\nt.add_computed_column(\n    description=openai.chat_completions(\n        messages=[{'role': 'user', 'content': [\n            {'type': 'text', 'text': 'Describe this image'},\n            {'type': 'image_url', 'image_url': t.image},\n        ]}],\n        model='gpt-4o-mini'\n    )\n)\n```\n\n→ [Computed Columns](https:\u002F\u002Fdocs.pixeltable.com\u002Ftutorials\u002Fcomputed-columns) · [AI Integrations](https:\u002F\u002Fdocs.pixeltable.com\u002Fintegrations\u002Fframeworks) · [Sample App: Prompt Studio](https:\u002F\u002Fgithub.com\u002Fpixeltable\u002Fpixeltable\u002Ftree\u002Fmain\u002Fdocs\u002Fsample-apps\u002Fprompt-engineering-studio-gradio-application)\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>Iterate:\u003C\u002Fb> Explode & Process Media\u003C\u002Fsummary>\n\u003Cbr>\n\n[Create views with iterators](https:\u002F\u002Fdocs.pixeltable.com\u002Fplatform\u002Fviews) to explode one row into many (video→frames, doc→chunks, audio→segments).\n\n```python\nfrom pixeltable.functions.video import frame_iterator\nfrom pixeltable.functions.document import document_splitter\n\n# Document chunking with overlap & metadata\nchunks = pxt.create_view(\n    'chunks', docs,\n    iterator=document_splitter(\n        document=docs.doc,\n        separators='sentence,token_limit',\n        overlap=50, limit=500\n    )\n)\n\n# Video frame extraction\nframes = pxt.create_view(\n    'frames', videos,\n    iterator=frame_iterator(video=videos.video, fps=0.5)\n)\n```\n\n→ [Views](https:\u002F\u002Fdocs.pixeltable.com\u002Fplatform\u002Fviews) · [Iterators](https:\u002F\u002Fdocs.pixeltable.com\u002Fplatform\u002Fiterators) · [RAG Pipeline](https:\u002F\u002Fdocs.pixeltable.com\u002Fhowto\u002Fcookbooks\u002Fagents\u002Fpattern-rag-pipeline)\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>Index:\u003C\u002Fb> Built-in Vector Search\u003C\u002Fsummary>\n\u003Cbr>\n\n[Add embedding indexes](https:\u002F\u002Fdocs.pixeltable.com\u002Fplatform\u002Fembedding-indexes) and perform similarity searches directly on tables\u002Fviews.\n\n```python\nt.add_embedding_index(\n    'img',\n    embedding=clip.using(model_id='openai\u002Fclip-vit-base-patch32')\n)\n\nsim = t.img.similarity(string='cat playing with yarn')\nresults = t.order_by(sim, asc=False).limit(10).collect()\n```\n\n→ [Embedding Indexes](https:\u002F\u002Fdocs.pixeltable.com\u002Fplatform\u002Fembedding-indexes) · [Semantic Search](https:\u002F\u002Fdocs.pixeltable.com\u002Fhowto\u002Fcookbooks\u002Fsearch\u002Fsearch-semantic-text) · [Image Search App](https:\u002F\u002Fgithub.com\u002Fpixeltable\u002Fpixeltable\u002Ftree\u002Frelease\u002Fdocs\u002Fsample-apps\u002Ftext-and-image-similarity-search-nextjs-fastapi)\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>Extend:\u003C\u002Fb> Bring Your Own Code\u003C\u002Fsummary>\n\u003Cbr>\n\n[Extend Pixeltable](https:\u002F\u002Fdocs.pixeltable.com\u002Fplatform\u002Fudfs-in-pixeltable) with UDFs, reusable queries, batch processing, and custom aggregators.\n\n```python\n@pxt.udf\ndef format_prompt(context: list, question: str) -> str:\n    return f'Context: {context}\\nQuestion: {question}'\n\n@pxt.query\ndef search_by_topic(topic: str):\n    return t.where(t.category == topic).select(t.title, t.summary)\n```\n\n→ [UDFs Guide](https:\u002F\u002Fdocs.pixeltable.com\u002Fplatform\u002Fudfs-in-pixeltable) · [Custom Aggregates](https:\u002F\u002Fdocs.pixeltable.com\u002Fhowto\u002Fcookbooks\u002Fcore\u002Fcustom-aggregates-uda)\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>Agents & Tools:\u003C\u002Fb> Tool Calling & MCP Integration\u003C\u002Fsummary>\n\u003Cbr>\n\nRegister [`@pxt.udf`](https:\u002F\u002Fdocs.pixeltable.com\u002Fhowto\u002Fcookbooks\u002Fagents\u002Fllm-tool-calling), `@pxt.query` functions, or **MCP servers** as callable tools. LLMs decide which tool to invoke; Pixeltable executes and stores results.\n\n```python\n# Load tools from MCP server, UDFs, and query functions\nmcp_tools = pxt.mcp_udfs('http:\u002F\u002Flocalhost:8000\u002Fmcp')\ntools = pxt.tools(get_weather_udf, search_context_query, *mcp_tools)\n\n# LLM decides which tool to call; Pixeltable executes it\nt.add_computed_column(\n    tool_output=invoke_tools(tools, t.llm_tool_choice)\n)\n```\n\n→ [Tool Calling Cookbook](https:\u002F\u002Fdocs.pixeltable.com\u002Fhowto\u002Fcookbooks\u002Fagents\u002Fllm-tool-calling) · [Agents & MCP](https:\u002F\u002Fdocs.pixeltable.com\u002Fuse-cases\u002Fagents-mcp) · [Pixelbot](https:\u002F\u002Fgithub.com\u002Fpixeltable\u002Fpixelbot) · [Pixelagent](https:\u002F\u002Fgithub.com\u002Fpixeltable\u002Fpixelagent)\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>Query & Experiment:\u003C\u002Fb> The Best Path from Prototype to Production\u003C\u002Fsummary>\n\u003Cbr>\n\nUnlike pandas\u002Fpolars, Pixeltable [persists everything](https:\u002F\u002Fdocs.pixeltable.com\u002Ftutorials\u002Fqueries-and-expressions), parallelizes API calls automatically, caches results, and turns your experiment into production with one line change. **No separate notebook → pipeline handoff:**\n\n```python\n# Explore with a familiar DSL — filter, sample, apply UDFs ephemerally\nresults = (\n    t.where(t.score > 0.8)\n    .order_by(t.timestamp)\n    .select(t.image, score=t.score)\n    .limit(10)\n    .collect()\n)\n\n# Sample 5 rows and test a UDF — nothing stored, API calls parallelized and cached\nt.sample(5).select(t.text, summary=summarize(t.text)).collect()\n\n# Happy? One line to commit — runs on full dataset, skips already-cached rows\nt.add_computed_column(summary=summarize(t.text))\n```\n\n→ [Queries & Expressions](https:\u002F\u002Fdocs.pixeltable.com\u002Ftutorials\u002Fqueries-and-expressions) · [Iterative Workflow](https:\u002F\u002Fdocs.pixeltable.com\u002Fhowto\u002Fcookbooks\u002Fcore\u002Fdev-iterative-workflow) · [Version Control](https:\u002F\u002Fdocs.pixeltable.com\u002Fplatform\u002Fversion-control)\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>Version:\u003C\u002Fb> Data Persistence & Time Travel\u003C\u002Fsummary>\n\u003Cbr>\n\n[All data is automatically stored and versioned](https:\u002F\u002Fdocs.pixeltable.com\u002Fplatform\u002Fversion-control). Query any prior version.\n\n```python\nt = pxt.get_table('my_table')  # Get a handle to an existing table\nt.revert()  # Undo the last modification\n\nt.history()  # Display all prior versions\nold_version = pxt.get_table('my_table:472')  # Query a specific version\n```\n\n→ [Version Control](https:\u002F\u002Fdocs.pixeltable.com\u002Fplatform\u002Fversion-control) · [Data Sharing](https:\u002F\u002Fdocs.pixeltable.com\u002Fplatform\u002Fdata-sharing)\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>Inspect:\u003C\u002Fb> Local Dashboard\u003C\u002Fsummary>\n\u003Cbr>\n\nPixeltable ships with a built-in local dashboard that launches automatically when you start a session. Browse tables, inspect schemas, view media with lightbox navigation, visualize your full data pipeline as a DAG, and track computation errors — all from your browser.\n\n```python\nimport pixeltable as pxt\n\n# Dashboard launches automatically at http:\u002F\u002Flocalhost:22089\npxt.init()\n\n# Disable if needed\npxt.init(config_overrides={'start_dashboard': False})\n# Or set environment variable: PIXELTABLE_START_DASHBOARD=false\n```\n\n**Highlights:** Table browser with sorting & filtering · Media preview (images, video, audio) · Column lineage visualization · Pipeline graph · Per-column error tracking · CSV export · Auto-refresh\n\nNo extra dependencies. No setup. It's just there.\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>Import\u002FExport:\u003C\u002Fb> I\u002FO & Integration\u003C\u002Fsummary>\n\u003Cbr>\n\n[Import from any source](https:\u002F\u002Fdocs.pixeltable.com\u002Fhowto\u002Fcookbooks\u002Fdata\u002Fdata-import-csv) and [export to ML formats](https:\u002F\u002Fdocs.pixeltable.com\u002Fhowto\u002Fcookbooks\u002Fdata\u002Fdata-export-pytorch).\n\n```python\n# Import from files, URLs, S3, Hugging Face\nt.insert(pxt.io.import_csv('data.csv'))\nt.insert(pxt.io.import_huggingface_dataset(dataset))\n\n# Export to analytics\u002FML formats\npxt.io.export_parquet(table, 'data.parquet')\npytorch_ds = table.to_pytorch_dataset('pt')  # → PyTorch DataLoader ready\ncoco_path = table.to_coco_dataset()          # → COCO annotations\n\n# ML tool integrations\npxt.create_label_studio_project(table, label_config)  # Annotation\npxt.export_images_as_fo_dataset(table, table.image)   # FiftyOne\n```\n\n→ [Data Import](https:\u002F\u002Fdocs.pixeltable.com\u002Fhowto\u002Fcookbooks\u002Fdata\u002Fdata-import-csv) · [PyTorch Export](https:\u002F\u002Fdocs.pixeltable.com\u002Fhowto\u002Fcookbooks\u002Fdata\u002Fdata-export-pytorch) · [Label Studio](https:\u002F\u002Fdocs.pixeltable.com\u002Fhowto\u002Fusing-label-studio-with-pixeltable) · [Data Wrangling for ML](https:\u002F\u002Fdocs.pixeltable.com\u002Fuse-cases\u002Fml-data-wrangling)\n\u003C\u002Fdetails>\n\n## Tutorials & Cookbooks\n\n| Fundamentals | Cookbooks | Providers | Sample Apps |\n|:-------------|:----------|:----------|:------------|\n| [![Colab](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002F10--Minute_Tour-FFDE59?logo=googlecolab&logoColor=000)](https:\u002F\u002Fcolab.research.google.com\u002Fgithub\u002Fpixeltable\u002Fpixeltable\u002Fblob\u002Frelease\u002Fdocs\u002Frelease\u002Foverview\u002Ften-minute-tour.ipynb) | [![Colab](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FAgentic_Patterns-FFDE59?logo=googlecolab&logoColor=000)](https:\u002F\u002Fcolab.research.google.com\u002Fgithub\u002Fpixeltable\u002Fpixeltable\u002Fblob\u002Frelease\u002Fdocs\u002Frelease\u002Fhowto\u002Fcookbooks\u002Fagents\u002Fagentic-patterns.ipynb) | [![OpenAI](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FOpenAI-74aa9c?logo=openai&logoColor=white)](https:\u002F\u002Fcolab.research.google.com\u002Fgithub\u002Fpixeltable\u002Fpixeltable\u002Fblob\u002Frelease\u002Fdocs\u002Frelease\u002Fhowto\u002Fproviders\u002Fworking-with-openai.ipynb) | [![GitHub](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FStarter_Kit-181717?logo=github&logoColor=white)](https:\u002F\u002Fgithub.com\u002Fpixeltable\u002Fpixeltable-starter-kit) |\n| [![Colab](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FComputed_Columns-FFDE59?logo=googlecolab&logoColor=000)](https:\u002F\u002Fcolab.research.google.com\u002Fgithub\u002Fpixeltable\u002Fpixeltable\u002Fblob\u002Frelease\u002Fdocs\u002Frelease\u002Ftutorials\u002Fcomputed-columns.ipynb) | [![Colab](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FRAG_Pipeline-FFDE59?logo=googlecolab&logoColor=000)](https:\u002F\u002Fcolab.research.google.com\u002Fgithub\u002Fpixeltable\u002Fpixeltable\u002Fblob\u002Frelease\u002Fdocs\u002Frelease\u002Fhowto\u002Fuse-cases\u002Frag-demo.ipynb) | [![Anthropic](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FAnthropic-191919?logo=anthropic&logoColor=white)](https:\u002F\u002Fcolab.research.google.com\u002Fgithub\u002Fpixeltable\u002Fpixeltable\u002Fblob\u002Frelease\u002Fdocs\u002Frelease\u002Fhowto\u002Fproviders\u002Fworking-with-anthropic.ipynb) | [![GitHub](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FJFK_Files_MCP-181717?logo=github&logoColor=white)](https:\u002F\u002Fgithub.com\u002Fpixeltable\u002Fpixeltable\u002Ftree\u002Fmain\u002Fdocs\u002Fsample-apps\u002Fjfk-files-mcp-server) |\n| [![Colab](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FTables_&_Operations-FFDE59?logo=googlecolab&logoColor=000)](https:\u002F\u002Fcolab.research.google.com\u002Fgithub\u002Fpixeltable\u002Fpixeltable\u002Fblob\u002Frelease\u002Fdocs\u002Frelease\u002Ftutorials\u002Ftables-and-data-operations.ipynb) | [![Colab](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FTool--Calling_Agents-FFDE59?logo=googlecolab&logoColor=000)](https:\u002F\u002Fcolab.research.google.com\u002Fgithub\u002Fpixeltable\u002Fpixeltable\u002Fblob\u002Frelease\u002Fdocs\u002Frelease\u002Fhowto\u002Fcookbooks\u002Fagents\u002Fllm-tool-calling.ipynb) | [![Gemini](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FGemini-8E75B2?logo=googlegemini&logoColor=white)](https:\u002F\u002Fcolab.research.google.com\u002Fgithub\u002Fpixeltable\u002Fpixeltable\u002Fblob\u002Frelease\u002Fdocs\u002Frelease\u002Fhowto\u002Fproviders\u002Fworking-with-gemini.ipynb) | [![GitHub](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FImage%2FText_Search-181717?logo=github&logoColor=white)](https:\u002F\u002Fgithub.com\u002Fpixeltable\u002Fpixeltable\u002Ftree\u002Frelease\u002Fdocs\u002Fsample-apps\u002Ftext-and-image-similarity-search-nextjs-fastapi) |\n| [![Colab](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FUDFs-FFDE59?logo=googlecolab&logoColor=000)](https:\u002F\u002Fcolab.research.google.com\u002Fgithub\u002Fpixeltable\u002Fpixeltable\u002Fblob\u002Frelease\u002Fdocs\u002Frelease\u002Fplatform\u002Fudfs-in-pixeltable.ipynb) | [![Colab](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FAudio_Transcription-FFDE59?logo=googlecolab&logoColor=000)](https:\u002F\u002Fcolab.research.google.com\u002Fgithub\u002Fpixeltable\u002Fpixeltable\u002Fblob\u002Frelease\u002Fdocs\u002Frelease\u002Fhowto\u002Fuse-cases\u002Faudio-transcriptions.ipynb) | [![Ollama](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FOllama-000000?logo=ollama&logoColor=white)](https:\u002F\u002Fcolab.research.google.com\u002Fgithub\u002Fpixeltable\u002Fpixeltable\u002Fblob\u002Frelease\u002Fdocs\u002Frelease\u002Fhowto\u002Fproviders\u002Fworking-with-ollama.ipynb) | [![GitHub](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FMultimodal_Chat-181717?logo=github&logoColor=white)](https:\u002F\u002Fgithub.com\u002Fpixeltable\u002Fpixeltable\u002Ftree\u002Fmain\u002Fdocs\u002Fsample-apps\u002Fmultimodal-chat) |\n| [![Colab](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FEmbedding_Indexes-FFDE59?logo=googlecolab&logoColor=000)](https:\u002F\u002Fcolab.research.google.com\u002Fgithub\u002Fpixeltable\u002Fpixeltable\u002Fblob\u002Frelease\u002Fdocs\u002Frelease\u002Fplatform\u002Fembedding-indexes.ipynb) | [![Colab](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FObject_Detection-FFDE59?logo=googlecolab&logoColor=000)](https:\u002F\u002Fcolab.research.google.com\u002Fgithub\u002Fpixeltable\u002Fpixeltable\u002Fblob\u002Frelease\u002Fdocs\u002Frelease\u002Fhowto\u002Fuse-cases\u002Fobject-detection-in-videos.ipynb) | [![DeepSeek](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FDeepSeek-0A6DC2?logoColor=white)](https:\u002F\u002Fcolab.research.google.com\u002Fgithub\u002Fpixeltable\u002Fpixeltable\u002Fblob\u002Frelease\u002Fdocs\u002Frelease\u002Fhowto\u002Fproviders\u002Fworking-with-deepseek.ipynb) | [![Discord](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FDiscord_Bot-5865F2?logo=discord&logoColor=white)](https:\u002F\u002Fgithub.com\u002Fpixeltable\u002Fpixeltable\u002Fblob\u002Frelease\u002Fdocs\u002Fsample-apps\u002Fcontext-aware-discord-bot) |\n| [**All →**](https:\u002F\u002Fdocs.pixeltable.com\u002Foverview\u002Ften-minute-tour) | [**All →**](https:\u002F\u002Fdocs.pixeltable.com\u002Fhowto\u002Fcookbooks\u002Fagents\u002Fpattern-rag-pipeline) | [**All providers →**](https:\u002F\u002Fdocs.pixeltable.com\u002Fintegrations\u002Fframeworks) | [**All →**](https:\u002F\u002Fgithub.com\u002Fpixeltable\u002Fpixeltable\u002Ftree\u002Frelease\u002Fdocs\u002Fsample-apps) |\n\n## External Storage and Pixeltable Cloud\n\n[![S3](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FAmazon_S3-232F3E?logo=amazons3&logoColor=white)](https:\u002F\u002Fdocs.pixeltable.com\u002Fintegrations\u002Fcloud-storage) [![GCS](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FGoogle_Cloud-4285F4?logo=googlecloud&logoColor=white)](https:\u002F\u002Fdocs.pixeltable.com\u002Fintegrations\u002Fcloud-storage) [![Azure](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FAzure_Blob-0078D4?logo=microsoftazure&logoColor=white)](https:\u002F\u002Fdocs.pixeltable.com\u002Fintegrations\u002Fcloud-storage) [![R2](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FCloudflare_R2-F38020?logo=cloudflare&logoColor=white)](https:\u002F\u002Fdocs.pixeltable.com\u002Fintegrations\u002Fcloud-storage) [![B2](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FBackblaze_B2-E21E29?logo=backblaze&logoColor=white)](https:\u002F\u002Fgithub.com\u002Fbackblaze-b2-samples\u002Fb2-pixeltable-multimodal-data) [![Tigris](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FTigris-00C853?logoColor=white)](https:\u002F\u002Fcolab.research.google.com\u002Fgithub\u002Fpixeltable\u002Fpixeltable\u002Fblob\u002Frelease\u002Fdocs\u002Frelease\u002Fhowto\u002Fproviders\u002Fworking-with-tigris.ipynb)\n\nStore computed media using the `destination` parameter on columns, or set defaults globally via `PIXELTABLE_OUTPUT_MEDIA_DEST` and `PIXELTABLE_INPUT_MEDIA_DEST`. See [Configuration](https:\u002F\u002Fdocs.pixeltable.com\u002Fhowto\u002Fconfiguration).\n\n**Data Sharing:** Publish datasets to Pixeltable Cloud for team collaboration or public sharing. Replicate public datasets instantly—no account needed for replication.\n\n```python\nimport pixeltable as pxt\n\n# Replicate a public dataset (no account required)\ncoco = pxt.replicate(\n    remote_uri='pxt:\u002F\u002Fpixeltable:fiftyone\u002Fcoco_mini_2017',\n    local_path='coco-copy'\n)\n\n# Publish your own dataset (requires free account)\npxt.publish(source='my-table', destination_uri='pxt:\u002F\u002Fmyorg\u002Fmy-dataset')\n\n# Store computed media in external cloud storage\nt.add_computed_column(\n    thumbnail=t.image.resize((256, 256)),\n    destination='s3:\u002F\u002Fmy-bucket\u002Fthumbnails\u002F'\n)\n```\n\n[**Data Sharing Guide**](https:\u002F\u002Fdocs.pixeltable.com\u002Fplatform\u002Fdata-sharing) | [**Cloud Storage**](https:\u002F\u002Fdocs.pixeltable.com\u002Fintegrations\u002Fcloud-storage) | [**Public Datasets**](https:\u002F\u002Fwww.pixeltable.com\u002Fdata-products)\n\n## Built with Pixeltable\n\n| Project | Description |\n|:--------|:------------|\n| [**Starter Kit**](https:\u002F\u002Fgithub.com\u002Fpixeltable\u002Fpixeltable-starter-kit) | Production-ready FastAPI + React app with deployment configs for Docker, Helm, Terraform (EKS\u002FGKE\u002FAKS), and AWS CDK |\n| [**Pixelbot**](https:\u002F\u002Fgithub.com\u002Fpixeltable\u002Fpixelbot) | Multimodal AI agent, an interactive data studio with on-demand ML inference, media generation, and a database explore |\n| [**Pixelagent**](https:\u002F\u002Fgithub.com\u002Fpixeltable\u002Fpixelagent) | Lightweight agent framework with built-in memory and tool orchestration |\n| [**Pixelmemory**](https:\u002F\u002Fgithub.com\u002Fpixeltable\u002Fpixelmemory) | Persistent memory layer for AI applications |\n| [**Skill**](https:\u002F\u002Fgithub.com\u002Fpixeltable\u002Fpixeltable-skill) | AI coding skill for Cursor, Claude Code, Copilot, Windsurf, and other AI IDEs — reduces hallucination and generates accurate Pixeltable code |\n| [**MCP Server**](https:\u002F\u002Fgithub.com\u002Fpixeltable\u002Fmcp-server-pixeltable-developer) | Model Context Protocol server for Claude, Cursor, and other AI IDEs |\n\n## Contributing\n\nWe love contributions! Whether it's reporting bugs, suggesting features, improving documentation, or submitting code\nchanges, please check out our [Contributing Guide](CONTRIBUTING.md) and join the\n[Discussions](https:\u002F\u002Fgithub.com\u002Fpixeltable\u002Fpixeltable\u002Fdiscussions) or our\n[Discord Server](https:\u002F\u002Fdiscord.gg\u002FQPyqFYx2UN).\n\n## License\n\nPixeltable is licensed under the Apache 2.0 License.\n","Pixeltable 是一个开源的 Python 库，提供了声明式、事务性的数据基础设施，用于构建多模态 AI 应用。其核心功能包括增量存储、数据转换、索引、检索及编排，并确保全程操作完整性。该库集成了自己的事务数据库和编排引擎，无需额外的 Docker 或外部服务，仅通过 `pip install` 即可使用，所有数据管理在本地目录中完成。适用于需要高效处理多媒体数据并希望简化 MLOps 流程的场景，如计算机视觉、自然语言处理等领域的项目开发。",2,"2026-06-11 03:30:03","top_topic"]