Instalasi | Dokumentasi | Referensi API | Contoh Kode | Visi Komputer | LLM
Pixeltable adalah pustaka Python yang menyediakan antarmuka deklaratif untuk data multimodal (teks, gambar, audio, video). Ini memiliki fitur pembuatan versi bawaan, pelacakan silsilah, dan pembaruan bertahap, yang memungkinkan pengguna menyimpan , mengubah , mengindeks , dan mengulangi data untuk alur kerja ML mereka.
Transformasi data, inferensi model, dan logika kustom disematkan sebagai kolom terhitung .
pip install pixeltable
Pixeltable bersifat persisten. Tidak seperti pustaka Python dalam memori seperti Pandas, Pixeltable adalah database.
Pelajari cara membuat tabel, mengisinya dengan data, dan menyempurnakannya dengan transformasi bawaan atau yang ditentukan pengguna.
Topik | Buku catatan | Topik | Buku catatan |
---|---|---|---|
Tur 10 Menit di Pixeltable | Tabel dan Operasi Data | ||
Fungsi Buatan Pengguna (UDF) | Model Deteksi Objek | ||
Rekayasa Cepat Tambahan | Bekerja dengan File Eksternal | ||
Mengintegrasikan dengan Label Studio | Pengindeksan Transkrip Audio/Video | ||
Aplikasi Multimoda | Pengindeksan Dokumen dan RAG | ||
Bot Perselisihan Sadar Konteks | Pencarian Kemiripan Gambar/Teks |
import pixeltable as pxt
v = pxt . create_table ( 'external_data.videos' , { 'video' : pxt . Video })
prefix = 's3://multimedia-commons/'
paths = [
'data/videos/mp4/ffe/ffb/ffeffbef41bbc269810b2a1a888de.mp4' ,
'data/videos/mp4/ffe/feb/ffefebb41485539f964760e6115fbc44.mp4' ,
'data/videos/mp4/ffe/f73/ffef7384d698b5f70d411c696247169.mp4'
]
v . insert ({ 'video' : prefix + p } for p in paths )
Pelajari cara bekerja dengan data di Pixeltable.
import pixeltable as pxt
from pixeltable . functions import huggingface
# Create a table to store data persistently
t = pxt . create_table ( 'image' , { 'image' : pxt . Image })
# Insert some images
prefix = 'https://upload.wikimedia.org/wikipedia/commons'
paths = [
'/1/15/Cat_August_2010-4.jpg' ,
'/e/e1/Example_of_a_Dog.jpg' ,
'/thumb/b/bf/Bird_Diversity_2013.png/300px-Bird_Diversity_2013.png'
]
t . insert ({ 'image' : prefix + p } for p in paths )
# Add a computed column for image classification
t . add_computed_column ( classification = huggingface . detr_for_object_detection (
t . image ,
model_id = 'facebook/detr-resnet-50'
))
# Retrieve the rows where cats have been identified
t . select ( animal = t . image ,
classification = t . classification . label_text [ 0 ])
. where ( t . classification . label_text [ 0 ] == 'cat' ). head ()
Pelajari tentang kolom terhitung dan deteksi objek: Membandingkan model deteksi objek.
@ pxt . udf
def draw_boxes ( img : PIL . Image . Image , boxes : list [ list [ float ]]) -> PIL . Image . Image :
result = img . copy () # Create a copy of `img`
d = PIL . ImageDraw . Draw ( result )
for box in boxes :
d . rectangle ( box , width = 3 ) # Draw bounding box rectangles on the copied image
return result
Pelajari lebih lanjut tentang fungsi yang ditentukan pengguna: UDF di Pixeltable.
# In this example, the view is defined by iteration over the chunks of a DocumentSplitter
chunks_table = pxt . create_view (
'rag_demo.chunks' ,
documents_table ,
iterator = DocumentSplitter . create (
document = documents_table . document ,
separators = 'token_limit' , limit = 300 )
)
Pelajari cara memanfaatkan tampilan untuk membangun alur kerja RAG Anda.
# The computation of the mAP metric can become a query over the evaluation output
frames_view . select ( mean_ap ( frames_view . eval_yolox_tiny ), mean_ap ( frames_view . eval_yolox_m )). show ()
Pelajari cara memanfaatkan analisis Pixeltable untuk Model.
chat_table = pxt . create_table ( 'together_demo.chat' , { 'input' : pxt . String })
# The chat-completions API expects JSON-formatted input:
messages = [{ 'role' : 'user' , 'content' : chat_table . input }]
# This example shows how additional parameters from the Together API can be used in Pixeltable
chat_table . add_computed_column (
output = chat_completions (
messages = messages ,
model = 'mistralai/Mixtral-8x7B-Instruct-v0.1' ,
max_tokens = 300 ,
stop = [ ' n ' ],
temperature = 0.7 ,
top_p = 0.9 ,
top_k = 40 ,
repetition_penalty = 1.1 ,
logprobs = 1 ,
echo = True
)
)
chat_table . add_computed_column (
response = chat_table . output . choices [ 0 ]. message . content
)
# Start a conversation
chat_table . insert ([
{ 'input' : 'How many species of felids have been classified?' },
{ 'input' : 'Can you make me a coffee?' }
])
chat_table . select ( chat_table . input , chat_table . response ). head ()
Pelajari cara berinteraksi dengan layanan inferensi seperti Together AI di Pixeltable.
import pixeltable as pxt
from pixeltable . functions . huggingface import clip_image , clip_text
from pixeltable . iterators import FrameIterator
import PIL . Image
video_table = pxt . create_table ( 'videos' , { 'video' : pxt . Video })
video_table . insert ([{ 'video' : '/video.mp4' }])
frames_view = pxt . create_view (
'frames' , video_table , iterator = FrameIterator . create ( video = video_table . video ))
@ pxt . expr_udf
def embed_image ( img : PIL . Image . Image ):
return clip_image ( img , model_id = 'openai/clip-vit-base-patch32' )
@ pxt . expr_udf
def str_embed ( s : str ):
return clip_text ( s , model_id = 'openai/clip-vit-base-patch32' )
# Create an index on the 'frame' column that allows text and image search
frames_view . add_embedding_index ( 'frame' , string_embed = str_embed , image_embed = embed_image )
# Now we will retrieve images based on a sample image
sample_image = '/image.jpeg'
sim = frames_view . frame . similarity ( sample_image )
frames_view . order_by ( sim , asc = False ). limit ( 5 ). select ( frames_view . frame , sim = sim ). collect ()
# Now we will retrieve images based on a string
sample_text = 'red truck'
sim = frames_view . frame . similarity ( sample_text )
frames_view . order_by ( sim , asc = False ). limit ( 5 ). select ( frames_view . frame , sim = sim ). collect ()
Pelajari cara bekerja dengan Penyematan dan Indeks Vektor.
Persyaratan | Tradisional | dapat dipiksel |
---|---|---|
Ekstraksi Bingkai | ffmpeg + kode khusus | Otomatis melalui FrameIterator |
Deteksi Objek | Banyak skrip + caching | Kolom terhitung tunggal |
Pengindeksan Video | Saluran pipa khusus + DB Vektor | Pencarian kesamaan asli |
Manajemen Anotasi | Alat terpisah + kode khusus | Integrasi Label Studio |
Evaluasi Model | Saluran metrik khusus | Komputasi peta bawaan |
Persyaratan | Tradisional | dapat dipiksel |
---|---|---|
Pemotongan Dokumen | Alat + kode khusus | Pemisah Dokumen Asli |
Menanamkan Generasi | Pisahkan pipa + caching | Kolom yang dihitung |
Pencarian Vektor | DB vektor eksternal | Pengindeksan vektor bawaan |
Manajemen Cepat | Solusi pelacakan khusus | Kolom yang dikontrol versi |
Manajemen Rantai | Alat + kode khusus | DAG kolom yang dihitung |
Persyaratan | Tradisional | dapat dipiksel |
---|---|---|
Tipe Data | Beberapa sistem penyimpanan | Antarmuka tabel terpadu |
Pencarian Lintas Modal | Integrasi yang kompleks | Dukungan kesamaan asli |
Orkestrasi Saluran Pipa | Berbagai alat (Aliran Udara, dll.) | Antarmuka deklaratif tunggal |
Manajemen Aset | Sistem pelacakan khusus | Garis keturunan otomatis |
Kontrol Kualitas | Berbagai alat validasi | Kolom validasi yang dihitung |
Pixeltable menyatukan penyimpanan data, pembuatan versi, dan pengindeksan dengan orkestrasi dan pembuatan versi model di bawah antarmuka tabel deklaratif, dengan transformasi, inferensi model, dan logika khusus yang direpresentasikan sebagai kolom yang dihitung.
Solusi saat ini untuk pengembangan aplikasi AI memerlukan pengkodean khusus dan infrastruktur yang ekstensif. Melacak silsilah dan versi antara dan di seluruh transformasi data, model, dan penerapan merupakan hal yang rumit. Pixeltable memungkinkan Insinyur ML dan Ilmuwan Data fokus pada eksplorasi, pemodelan, dan pengembangan aplikasi tanpa berurusan dengan saluran data biasa.
Tip
Lihat bagian Integrasi, dan silakan kirimkan permintaan untuk integrasi tambahan.
Kami sangat senang menyambut kontribusi dari komunitas! Inilah cara Anda dapat terlibat:
Perpustakaan ini dilisensikan di bawah Lisensi Apache 2.0.