pixeltable 0.4.6__py3-none-any.whl → 0.4.8__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of pixeltable might be problematic. Click here for more details.
- pixeltable/__init__.py +4 -2
- pixeltable/catalog/__init__.py +1 -1
- pixeltable/catalog/catalog.py +7 -9
- pixeltable/catalog/column.py +49 -0
- pixeltable/catalog/insertable_table.py +0 -7
- pixeltable/catalog/schema_object.py +1 -14
- pixeltable/catalog/table.py +180 -67
- pixeltable/catalog/table_version.py +42 -146
- pixeltable/catalog/table_version_path.py +6 -5
- pixeltable/catalog/view.py +2 -1
- pixeltable/config.py +24 -9
- pixeltable/dataframe.py +5 -6
- pixeltable/env.py +113 -21
- pixeltable/exec/aggregation_node.py +1 -1
- pixeltable/exec/cache_prefetch_node.py +4 -3
- pixeltable/exec/exec_node.py +0 -8
- pixeltable/exec/expr_eval/expr_eval_node.py +2 -2
- pixeltable/exec/expr_eval/globals.py +1 -0
- pixeltable/exec/expr_eval/schedulers.py +52 -19
- pixeltable/exec/in_memory_data_node.py +2 -3
- pixeltable/exprs/array_slice.py +2 -2
- pixeltable/exprs/data_row.py +15 -2
- pixeltable/exprs/expr.py +9 -9
- pixeltable/exprs/function_call.py +61 -23
- pixeltable/exprs/globals.py +1 -2
- pixeltable/exprs/json_path.py +3 -3
- pixeltable/exprs/row_builder.py +25 -21
- pixeltable/exprs/string_op.py +3 -3
- pixeltable/func/expr_template_function.py +6 -3
- pixeltable/func/query_template_function.py +2 -2
- pixeltable/func/signature.py +30 -3
- pixeltable/func/tools.py +2 -2
- pixeltable/functions/anthropic.py +76 -27
- pixeltable/functions/deepseek.py +5 -1
- pixeltable/functions/gemini.py +11 -2
- pixeltable/functions/globals.py +2 -2
- pixeltable/functions/huggingface.py +6 -12
- pixeltable/functions/llama_cpp.py +9 -1
- pixeltable/functions/openai.py +76 -55
- pixeltable/functions/video.py +59 -6
- pixeltable/functions/vision.py +2 -2
- pixeltable/globals.py +86 -13
- pixeltable/io/datarows.py +3 -3
- pixeltable/io/fiftyone.py +7 -7
- pixeltable/io/globals.py +3 -3
- pixeltable/io/hf_datasets.py +4 -4
- pixeltable/io/label_studio.py +2 -1
- pixeltable/io/pandas.py +6 -6
- pixeltable/io/parquet.py +3 -3
- pixeltable/io/table_data_conduit.py +2 -2
- pixeltable/io/utils.py +2 -2
- pixeltable/iterators/audio.py +3 -2
- pixeltable/iterators/document.py +2 -8
- pixeltable/iterators/video.py +49 -9
- pixeltable/plan.py +0 -16
- pixeltable/share/packager.py +51 -42
- pixeltable/share/publish.py +134 -7
- pixeltable/store.py +5 -25
- pixeltable/type_system.py +5 -8
- pixeltable/utils/__init__.py +2 -2
- pixeltable/utils/arrow.py +5 -5
- pixeltable/utils/description_helper.py +3 -3
- pixeltable/utils/iceberg.py +1 -2
- pixeltable/utils/media_store.py +131 -66
- {pixeltable-0.4.6.dist-info → pixeltable-0.4.8.dist-info}/METADATA +238 -122
- {pixeltable-0.4.6.dist-info → pixeltable-0.4.8.dist-info}/RECORD +69 -69
- {pixeltable-0.4.6.dist-info → pixeltable-0.4.8.dist-info}/WHEEL +0 -0
- {pixeltable-0.4.6.dist-info → pixeltable-0.4.8.dist-info}/entry_points.txt +0 -0
- {pixeltable-0.4.6.dist-info → pixeltable-0.4.8.dist-info}/licenses/LICENSE +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pixeltable
|
|
3
|
-
Version: 0.4.
|
|
3
|
+
Version: 0.4.8
|
|
4
4
|
Summary: AI Data Infrastructure: Declarative, Multimodal, and Incremental
|
|
5
5
|
Project-URL: homepage, https://pixeltable.com/
|
|
6
6
|
Project-URL: repository, https://github.com/pixeltable/pixeltable
|
|
@@ -67,7 +67,8 @@ Description-Content-Type: text/markdown
|
|
|
67
67
|

|
|
68
68
|
<br>
|
|
69
69
|
[](https://github.com/pixeltable/pixeltable/actions/workflows/pytest.yml)
|
|
70
|
-
[](https://github.com/pixeltable/pixeltable/actions/workflows/nightly.yml)
|
|
71
|
+
[](https://github.com/pixeltable/pixeltable/actions/workflows/stress-tests.yml)
|
|
71
72
|
[](https://pypi.org/project/pixeltable/)
|
|
72
73
|
[](https://discord.gg/QPyqFYx2UN)
|
|
73
74
|
|
|
@@ -82,137 +83,234 @@ Description-Content-Type: text/markdown
|
|
|
82
83
|
|
|
83
84
|
---
|
|
84
85
|
|
|
85
|
-
|
|
86
|
+
## 💾 Installation
|
|
86
87
|
|
|
87
|
-
|
|
88
|
+
```python
|
|
89
|
+
pip install pixeltable
|
|
90
|
+
```
|
|
88
91
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
* Vector databases for semantic search.
|
|
92
|
-
* Feature stores for ML models.
|
|
93
|
-
* Orchestrators for scheduling.
|
|
94
|
-
* Model serving infrastructure for inference.
|
|
95
|
-
* Separate systems for parallelization, caching, versioning, and lineage tracking.
|
|
92
|
+
**Pixeltable unifies storage, retrieval, and orchestration for multimodal data.**
|
|
93
|
+
It stores metadata and computed results persistently, typically in a `.pixeltable` directory in your workspace.
|
|
96
94
|
|
|
97
|
-
|
|
95
|
+
## Pixeltable Demo
|
|
98
96
|
|
|
99
|
-
|
|
97
|
+
https://github.com/user-attachments/assets/b50fd6df-5169-4881-9dbe-1b6e5d06cede
|
|
98
|
+
|
|
99
|
+
## Quick Start
|
|
100
|
+
|
|
101
|
+
With Pixeltable, you define your *entire* data processing and AI workflow declaratively using
|
|
102
|
+
**[computed columns](https://docs.pixeltable.com/docs/datastore/computed-columns)** on
|
|
103
|
+
**[tables](https://docs.pixeltable.com/docs/datastore/tables-and-operations)**.
|
|
104
|
+
Focus on your application logic, not the data plumbing.
|
|
100
105
|
|
|
101
106
|
```python
|
|
102
|
-
pip install pixeltable
|
|
103
|
-
```
|
|
104
107
|
|
|
105
|
-
|
|
108
|
+
# Installation
|
|
109
|
+
pip install -qU torch transformers openai pixeltable
|
|
110
|
+
|
|
111
|
+
# Basic setup
|
|
112
|
+
import pixeltable as pxt
|
|
113
|
+
|
|
114
|
+
# Table with multimodal column types (Image, Video, Audio, Document)
|
|
115
|
+
t = pxt.create_table('images', {'input_image': pxt.Image})
|
|
116
|
+
|
|
117
|
+
# Computed columns: define transformation logic once, runs on all data
|
|
118
|
+
from pixeltable.functions import huggingface
|
|
119
|
+
|
|
120
|
+
# Object detection with automatic model management
|
|
121
|
+
t.add_computed_column(
|
|
122
|
+
detections=huggingface.detr_for_object_detection(
|
|
123
|
+
t.input_image,
|
|
124
|
+
model_id='facebook/detr-resnet-50'
|
|
125
|
+
)
|
|
126
|
+
)
|
|
127
|
+
|
|
128
|
+
# Extract specific fields from detection results
|
|
129
|
+
t.add_computed_column(detections_text=t.detections.label_text)
|
|
130
|
+
|
|
131
|
+
# OpenAI Vision API integration with built-in rate limiting and async managemennt
|
|
132
|
+
from pixeltable.functions import openai
|
|
133
|
+
|
|
134
|
+
t.add_computed_column(
|
|
135
|
+
vision=openai.vision(
|
|
136
|
+
prompt="Describe what's in this image.",
|
|
137
|
+
image=t.input_image,
|
|
138
|
+
model='gpt-4o-mini'
|
|
139
|
+
)
|
|
140
|
+
)
|
|
141
|
+
|
|
142
|
+
# Insert data directly from an external URL
|
|
143
|
+
# Automatically triggers computation of all computed columns
|
|
144
|
+
t.insert(input_image='https://raw.github.com/pixeltable/pixeltable/release/docs/resources/images/000000000025.jpg')
|
|
106
145
|
|
|
107
|
-
|
|
146
|
+
# Query - All data, metadata, and computed results are persistently stored
|
|
147
|
+
# Structured and unstructured data are returned side-by-side
|
|
148
|
+
results = t.select(
|
|
149
|
+
t.input_image,
|
|
150
|
+
t.detections_text,
|
|
151
|
+
t.vision
|
|
152
|
+
).collect()
|
|
153
|
+
```
|
|
108
154
|
|
|
109
|
-
|
|
155
|
+
## ✨ What Happened?
|
|
156
|
+
|
|
157
|
+
* **Data Ingestion & Storage:** References [files](https://docs.pixeltable.com/docs/datastore/bringing-data)
|
|
158
|
+
(images, videos, audio, docs) in place, handles structured data.
|
|
159
|
+
* **Transformation & Processing:** Applies *any* Python function ([UDFs](https://docs.pixeltable.com/docs/datastore/custom-functions))
|
|
160
|
+
or built-in operations ([chunking, frame extraction](https://docs.pixeltable.com/docs/datastore/iterators)) automatically.
|
|
161
|
+
* **AI Model Integration:** Runs inference ([embeddings](https://docs.pixeltable.com/docs/datastore/embedding-index),
|
|
162
|
+
[object detection](https://docs.pixeltable.com/docs/examples/vision/yolox),
|
|
163
|
+
[LLMs](https://docs.pixeltable.com/docs/integrations/frameworks#cloud-llm-providers)) as part of the data pipeline.
|
|
164
|
+
* **Indexing & Retrieval:** Creates and manages vector indexes for fast
|
|
165
|
+
[semantic search](https://docs.pixeltable.com/docs/datastore/embedding-index#phase-3%3A-query)
|
|
166
|
+
alongside traditional filtering.
|
|
167
|
+
* **Incremental Computation:** Only [recomputes](https://docs.pixeltable.com/docs/overview/quick-start) what's
|
|
168
|
+
necessary when data or code changes, saving time and cost.
|
|
169
|
+
* **Versioning & Lineage:** Automatically tracks data and schema changes for reproducibility. See below for an example
|
|
170
|
+
that uses "time travel" to query an older version of a table.
|
|
171
|
+
|
|
172
|
+
Pixeltable can ingest data from local storage or directly from a URL. When external media files are referenced by URL,
|
|
173
|
+
as in the `insert` statement above, Pixeltable caches them locally before processing. See the
|
|
174
|
+
[Working with External Files](https://github.com/pixeltable/pixeltable/blob/main/docs/notebooks/feature-guides/working-with-external-files.ipynb)
|
|
175
|
+
notebook for more details.
|
|
176
|
+
|
|
177
|
+
## 🗄️ Where Did My Data Go?
|
|
178
|
+
|
|
179
|
+
Pixeltable workloads generate various outputs, including both structured outputs (such as bounding boxes for detected
|
|
180
|
+
objects) and/or unstructured outputs (such as generated images or video). By default, everything resides in your
|
|
181
|
+
Pixeltable user directory at `~/.pixeltable`. Structured data is stored in a Postgres instance in `~/.pixeltable`.
|
|
182
|
+
Generated media (images, video, audio, documents) are stored outside the Postgres database, in separate flat files in
|
|
183
|
+
`~/.pixeltable/media`. Those media files are referenced by URL in the database, and Pixeltable provides the "glue" for
|
|
184
|
+
a unified table interface over both structured and unstructured data.
|
|
185
|
+
|
|
186
|
+
In general, the user is not expected to interact directly with the data in `~/.pixeltable`; the data store is fully
|
|
187
|
+
managed by Pixeltable and is intended to be accessed through the Pixeltable Python SDK.
|
|
188
|
+
|
|
189
|
+
## ⚖️ Key Principles
|
|
190
|
+
|
|
191
|
+
* **[Unified Multimodal Interface:](https://docs.pixeltable.com/docs/datastore/tables-and-operations)** `pxt.Image`,
|
|
192
|
+
`pxt.Video`, `pxt.Audio`, `pxt.Document`, etc. – manage diverse data consistently.
|
|
193
|
+
|
|
194
|
+
```python
|
|
195
|
+
t = pxt.create_table(
|
|
196
|
+
'media',
|
|
197
|
+
{
|
|
198
|
+
'img': pxt.Image,
|
|
199
|
+
'video': pxt.Video
|
|
200
|
+
}
|
|
201
|
+
)
|
|
202
|
+
```
|
|
110
203
|
|
|
111
|
-
*
|
|
112
|
-
|
|
113
|
-
* **AI Model Integration:** Runs inference ([embeddings](https://docs.pixeltable.com/docs/datastore/embedding-index), [object detection](https://docs.pixeltable.com/docs/examples/vision/yolox), [LLMs](https://docs.pixeltable.com/docs/integrations/frameworks#cloud-llm-providers)) as part of the data pipeline.
|
|
114
|
-
* **Indexing & Retrieval:** Creates and manages vector indexes for fast [semantic search](https://docs.pixeltable.com/docs/datastore/embedding-index#phase-3%3A-query) alongside traditional filtering.
|
|
115
|
-
* **Incremental Computation:** Only [recomputes](https://docs.pixeltable.com/docs/overview/quick-start) what's necessary when data or code changes, saving time and cost.
|
|
116
|
-
* **Versioning & Lineage:** Automatically tracks data and schema changes for reproducibility.
|
|
204
|
+
* **[Declarative Computed Columns:](https://docs.pixeltable.com/docs/datastore/computed-columns)** Define processing
|
|
205
|
+
steps once; they run automatically on new/updated data.
|
|
117
206
|
|
|
118
|
-
|
|
207
|
+
```python
|
|
208
|
+
t.add_computed_column(
|
|
209
|
+
classification=huggingface.vit_for_image_classification(
|
|
210
|
+
t.image
|
|
211
|
+
)
|
|
212
|
+
)
|
|
213
|
+
```
|
|
119
214
|
|
|
215
|
+
* **[Built-in Vector Search:](https://docs.pixeltable.com/docs/datastore/embedding-index)** Add embedding indexes and
|
|
216
|
+
perform similarity searches directly on tables/views.
|
|
120
217
|
|
|
121
|
-
|
|
218
|
+
```python
|
|
219
|
+
t.add_embedding_index(
|
|
220
|
+
'img',
|
|
221
|
+
embedding=clip.using(
|
|
222
|
+
model_id='openai/clip-vit-base-patch32'
|
|
223
|
+
)
|
|
224
|
+
)
|
|
122
225
|
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
t = pxt.create_table(
|
|
126
|
-
'media',
|
|
127
|
-
{
|
|
128
|
-
'img': pxt.Image,
|
|
129
|
-
'video': pxt.Video
|
|
130
|
-
}
|
|
131
|
-
)
|
|
132
|
-
```
|
|
226
|
+
sim = t.img.similarity("cat playing with yarn")
|
|
227
|
+
```
|
|
133
228
|
|
|
134
|
-
* **[
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
229
|
+
* **[On-the-Fly Data Views:](https://docs.pixeltable.com/docs/datastore/views)** Create virtual tables using iterators
|
|
230
|
+
for efficient processing without data duplication.
|
|
231
|
+
|
|
232
|
+
```python
|
|
233
|
+
frames = pxt.create_view(
|
|
234
|
+
'frames',
|
|
235
|
+
videos,
|
|
236
|
+
iterator=FrameIterator.create(
|
|
237
|
+
video=videos.video,
|
|
238
|
+
fps=1
|
|
239
|
+
)
|
|
139
240
|
)
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
* **[Seamless AI Integration:](https://docs.pixeltable.com/docs/integrations/frameworks)** Built-in functions for
|
|
244
|
+
OpenAI, Anthropic, Hugging Face, CLIP, YOLOX, and more.
|
|
245
|
+
|
|
246
|
+
```python
|
|
247
|
+
t.add_computed_column(
|
|
248
|
+
response=openai.chat_completions(
|
|
249
|
+
messages=[{"role": "user", "content": t.prompt}]
|
|
250
|
+
)
|
|
149
251
|
)
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
* **[Bring Your Own Code:](https://docs.pixeltable.com/docs/datastore/custom-functions)** Extend Pixeltable with simple
|
|
255
|
+
Python User-Defined Functions.
|
|
256
|
+
|
|
257
|
+
```python
|
|
258
|
+
@pxt.udf
|
|
259
|
+
def format_prompt(context: list, question: str) -> str:
|
|
260
|
+
return f"Context: {context}\nQuestion: {question}"
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
* **[Agentic Workflows / Tool Calling:](https://docs.pixeltable.com/docs/examples/chat/tools)** Register `@pxt.udf` or
|
|
264
|
+
`@pxt.query` functions as tools and orchestrate LLM-based tool use (incl. multimodal).
|
|
265
|
+
|
|
266
|
+
```python
|
|
267
|
+
# Example tools: a UDF and a Query function for RAG
|
|
268
|
+
tools = pxt.tools(get_weather_udf, search_context_query)
|
|
269
|
+
|
|
270
|
+
# LLM decides which tool to call; Pixeltable executes it
|
|
271
|
+
t.add_computed_column(
|
|
272
|
+
tool_output=invoke_tools(tools, t.llm_tool_choice)
|
|
163
273
|
)
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
274
|
+
```
|
|
275
|
+
|
|
276
|
+
* **[Data Persistence:](https://docs.pixeltable.com/docs/datastore/tables-and-operations#data-operations)** All data,
|
|
277
|
+
metadata, and computed results are automatically stored and versioned.
|
|
278
|
+
|
|
279
|
+
```python
|
|
280
|
+
t = pxt.get_table('my_table') # Get a handle to an existing table
|
|
281
|
+
t.select(t.account, t.balance).collect() # Query its contents
|
|
282
|
+
t.revert() # Undo the last modification to the table and restore its previous state
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
* **[Time Travel:](https://docs.pixeltable.com/docs/datastore/tables-and-operations#data-operations)** By default,
|
|
286
|
+
Pixeltable preserves the full change history of each table, and any prior version can be selected and queried.
|
|
287
|
+
|
|
288
|
+
```python
|
|
289
|
+
t.history() # Display a human-readable list of all prior versions of the table
|
|
290
|
+
old_version = pxt.get_table('my_table:472') # Get a handle to a specific table version
|
|
291
|
+
old_version.select(t.account, t.balance).collect() # Query the older version
|
|
292
|
+
```
|
|
293
|
+
|
|
294
|
+
* **[SQL-like Python Querying:](https://docs.pixeltable.com/docs/datastore/filtering-and-selecting)** Familiar syntax
|
|
295
|
+
combined with powerful AI capabilities.
|
|
296
|
+
|
|
297
|
+
```python
|
|
298
|
+
results = (
|
|
299
|
+
t.where(t.score > 0.8)
|
|
300
|
+
.order_by(t.timestamp)
|
|
301
|
+
.select(t.image, score=t.score)
|
|
302
|
+
.limit(10)
|
|
303
|
+
.collect()
|
|
172
304
|
)
|
|
173
|
-
|
|
174
|
-
```
|
|
175
|
-
|
|
176
|
-
* **[Bring Your Own Code:](https://docs.pixeltable.com/docs/datastore/custom-functions)** Extend Pixeltable with simple Python User-Defined Functions.
|
|
177
|
-
```python
|
|
178
|
-
@pxt.udf
|
|
179
|
-
def format_prompt(context: list, question: str) -> str:
|
|
180
|
-
return f"Context: {context}\nQuestion: {question}"
|
|
181
|
-
```
|
|
182
|
-
|
|
183
|
-
* **[Agentic Workflows / Tool Calling:](https://docs.pixeltable.com/docs/examples/chat/tools)** Register `@pxt.udf` or `@pxt.query` functions as tools and orchestrate LLM-based tool use (incl. multimodal).
|
|
184
|
-
```python
|
|
185
|
-
# Example tools: a UDF and a Query function for RAG
|
|
186
|
-
tools = pxt.tools(get_weather_udf, search_context_query)
|
|
187
|
-
|
|
188
|
-
# LLM decides which tool to call; Pixeltable executes it
|
|
189
|
-
t.add_computed_column(
|
|
190
|
-
tool_output=invoke_tools(tools, t.llm_tool_choice)
|
|
191
|
-
)
|
|
192
|
-
```
|
|
193
|
-
|
|
194
|
-
* **[Persistent & Versioned:](https://docs.pixeltable.com/docs/datastore/tables-and-operations#data-operations)** All data, metadata, and computed results are automatically stored.
|
|
195
|
-
```python
|
|
196
|
-
t.revert() # Revert to a previous version
|
|
197
|
-
stored_table = pxt.get_table('my_existing_table') # Retrieve persisted table
|
|
198
|
-
```
|
|
199
|
-
|
|
200
|
-
* **[SQL-like Python Querying:](https://docs.pixeltable.com/docs/datastore/filtering-and-selecting)** Familiar syntax combined with powerful AI capabilities.
|
|
201
|
-
```python
|
|
202
|
-
results = (
|
|
203
|
-
t.where(t.score > 0.8)
|
|
204
|
-
.order_by(t.timestamp)
|
|
205
|
-
.select(t.image, score=t.score)
|
|
206
|
-
.limit(10)
|
|
207
|
-
.collect()
|
|
208
|
-
)
|
|
209
|
-
```
|
|
305
|
+
```
|
|
210
306
|
|
|
211
307
|
## 💡 Key Examples
|
|
212
308
|
|
|
213
|
-
*(See the [Full Quick Start](https://docs.pixeltable.com/docs/overview/quick-start) or
|
|
309
|
+
*(See the [Full Quick Start](https://docs.pixeltable.com/docs/overview/quick-start) or
|
|
310
|
+
[Notebook Gallery](#-notebook-gallery) for more details)*
|
|
214
311
|
|
|
215
312
|
**1. Multimodal Data Store and Data Transformation (Computed Column):**
|
|
313
|
+
|
|
216
314
|
```bash
|
|
217
315
|
pip install pixeltable
|
|
218
316
|
```
|
|
@@ -222,14 +320,14 @@ import pixeltable as pxt
|
|
|
222
320
|
|
|
223
321
|
# Create a table
|
|
224
322
|
t = pxt.create_table(
|
|
225
|
-
'films',
|
|
226
|
-
{'name': pxt.String, 'revenue': pxt.Float, 'budget': pxt.Float},
|
|
323
|
+
'films',
|
|
324
|
+
{'name': pxt.String, 'revenue': pxt.Float, 'budget': pxt.Float},
|
|
227
325
|
if_exists="replace"
|
|
228
326
|
)
|
|
229
327
|
|
|
230
328
|
t.insert([
|
|
231
|
-
|
|
232
|
-
|
|
329
|
+
{'name': 'Inside Out', 'revenue': 800.5, 'budget': 200.0},
|
|
330
|
+
{'name': 'Toy Story', 'revenue': 1073.4, 'budget': 200.0}
|
|
233
331
|
])
|
|
234
332
|
|
|
235
333
|
# Add a computed column for profit - runs automatically!
|
|
@@ -371,13 +469,13 @@ qa.add_computed_column(context=get_relevant_context(qa.prompt))
|
|
|
371
469
|
qa.add_computed_column(
|
|
372
470
|
final_prompt=pxtf.string.format(
|
|
373
471
|
"""
|
|
374
|
-
PASSAGES:
|
|
472
|
+
PASSAGES:
|
|
375
473
|
{0}
|
|
376
|
-
|
|
377
|
-
QUESTION:
|
|
474
|
+
|
|
475
|
+
QUESTION:
|
|
378
476
|
{1}
|
|
379
|
-
""",
|
|
380
|
-
qa.context,
|
|
477
|
+
""",
|
|
478
|
+
qa.context,
|
|
381
479
|
qa.prompt
|
|
382
480
|
)
|
|
383
481
|
)
|
|
@@ -416,18 +514,36 @@ Explore Pixeltable's capabilities interactively:
|
|
|
416
514
|
| Object Detection | <a target="_blank" href="https://colab.research.google.com/github/pixeltable/pixeltable/blob/release/docs/notebooks/use-cases/object-detection-in-videos.ipynb"> <img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"/> </a> | Image/Text Search | <a target="_blank" href="https://github.com/pixeltable/pixeltable/tree/main/docs/sample-apps/text-and-image-similarity-search-nextjs-fastapi"> <img src="https://img.shields.io/badge/🖥️%20App-black.svg" alt="GitHub App"/> |
|
|
417
515
|
| Audio Transcription | <a target="_blank" href="https://colab.research.google.com/github/pixeltable/pixeltable/blob/release/docs/notebooks/use-cases/audio-transcriptions.ipynb"> <img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"/> | Discord Bot | <a target="_blank" href="https://github.com/pixeltable/pixeltable/blob/main/docs/sample-apps/context-aware-discord-bot"> <img src="https://img.shields.io/badge/%F0%9F%92%AC%20Bot-%235865F2.svg" alt="GitHub App"/></a> |
|
|
418
516
|
|
|
517
|
+
## 🚨 Maintaining Production-Ready Multimodal AI Apps is Still Too Hard
|
|
518
|
+
|
|
519
|
+
Building robust AI applications, especially [multimodal](https://docs.pixeltable.com/docs/datastore/bringing-data) ones,
|
|
520
|
+
requires stitching together numerous tools:
|
|
521
|
+
|
|
522
|
+
* ETL pipelines for data loading and transformation.
|
|
523
|
+
* Vector databases for semantic search.
|
|
524
|
+
* Feature stores for ML models.
|
|
525
|
+
* Orchestrators for scheduling.
|
|
526
|
+
* Model serving infrastructure for inference.
|
|
527
|
+
* Separate systems for parallelization, caching, versioning, and lineage tracking.
|
|
528
|
+
|
|
529
|
+
This complex "data plumbing" slows down development, increases costs, and makes applications brittle and hard to reproduce.
|
|
530
|
+
|
|
419
531
|
## 🔮 Roadmap (2025)
|
|
420
532
|
|
|
421
533
|
### Cloud Infrastructure and Deployment
|
|
534
|
+
|
|
422
535
|
We're working on a hosted Pixeltable service that will:
|
|
423
536
|
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
537
|
+
* Enable Multimodal Data Sharing of Pixeltable Tables and Views | [Waitlist](https://www.pixeltable.com/waitlist)
|
|
538
|
+
* Provide a persistent cloud instance
|
|
539
|
+
* Turn Pixeltable workflows (Tables, Queries, UDFs) into API endpoints/[MCP Servers](https://github.com/pixeltable/pixeltable-mcp-server)
|
|
427
540
|
|
|
428
541
|
## 🤝 Contributing
|
|
429
542
|
|
|
430
|
-
We love contributions! Whether it's reporting bugs, suggesting features, improving documentation, or submitting code
|
|
543
|
+
We love contributions! Whether it's reporting bugs, suggesting features, improving documentation, or submitting code
|
|
544
|
+
changes, please check out our [Contributing Guide](CONTRIBUTING.md) and join the
|
|
545
|
+
[Discussions](https://github.com/pixeltable/pixeltable/discussions) or our
|
|
546
|
+
[Discord Server](https://discord.gg/QPyqFYx2UN).
|
|
431
547
|
|
|
432
548
|
## 🏢 License
|
|
433
549
|
|