Installation | Documents | Référence API | Exemples de codes | Vision par ordinateur | LLM
Pixeltable est une bibliothèque Python fournissant une interface déclarative pour les données multimodales (texte, images, audio, vidéo). Il propose une gestion des versions intégrée, un suivi du lignage et des mises à jour incrémentielles, permettant aux utilisateurs de stocker , transformer , indexer et itérer sur les données pour leurs flux de travail ML.
Les transformations de données, l'inférence de modèle et la logique personnalisée sont intégrées sous forme de colonnes calculées .
pip install pixeltable
Pixeltable est persistant. Contrairement aux bibliothèques Python en mémoire telles que Pandas, Pixeltable est une base de données.
Apprenez à créer des tableaux, à les remplir de données et à les améliorer avec des transformations intégrées ou définies par l'utilisateur.
Sujet | Carnet de notes | Sujet | Carnet de notes |
---|---|---|---|
Visite de 10 minutes de Pixeltable | Tableaux et opérations sur les données | ||
Fonctions définies par l'utilisateur (UDF) | Modèles de détection d'objets | ||
Ingénierie d’invite incrémentielle | Travailler avec des fichiers externes | ||
Intégration avec Label Studio | Indexation des transcriptions audio/vidéo | ||
Application multimodale | Indexation de documents et RAG | ||
Bot Discord contextuel | Recherche de similarité image/texte |
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 )
Apprenez à travailler avec des données dans 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 ()
Découvrez les colonnes calculées et la détection d'objets : Comparaison des modèles de détection d'objets.
@ 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
En savoir plus sur les fonctions définies par l'utilisateur : UDF dans 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 )
)
Découvrez comment exploiter les vues pour créer votre flux de travail RAG.
# 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 ()
Découvrez comment tirer parti de Pixeltable pour l'analyse de modèles.
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 ()
Découvrez comment interagir avec des services d'inférence tels que Together AI dans 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 ()
Apprenez à travailler avec l'incorporation et les index vectoriels.
Exigence | Traditionnel | Table pixellisée |
---|---|---|
Extraction du cadre | ffmpeg + code personnalisé | Automatique via FrameIterator |
Détection d'objet | Plusieurs scripts + mise en cache | Colonne calculée unique |
Indexation vidéo | Pipelines personnalisés + base de données vectorielle | Recherche de similarité native |
Gestion des annotations | Outils séparés + code personnalisé | Intégration de Label Studio |
Évaluation du modèle | Pipeline de métriques personnalisées | Calcul mAP intégré |
Exigence | Traditionnel | Table pixellisée |
---|---|---|
Regroupement de documents | Outil + code personnalisé | Séparateur de documents natif |
Génération d'intégration | Pipeline séparé + mise en cache | Colonnes calculées |
Recherche de vecteurs | Base de données vectorielle externe | Indexation vectorielle intégrée |
Gestion rapide | Solution de suivi personnalisée | Colonnes contrôlées par version |
Gestion de la chaîne | Outil + code personnalisé | DAG de colonnes calculés |
Exigence | Traditionnel | Table pixellisée |
---|---|---|
Types de données | Plusieurs systèmes de stockage | Interface de table unifiée |
Recherche multimodale | Intégration complexe | Prise en charge de la similarité native |
Orchestration des pipelines | Outils multiples (Airflow, etc.) | Interface déclarative unique |
Gestion des actifs | Système de suivi personnalisé | Lignée automatique |
Contrôle de qualité | Plusieurs outils de validation | Colonnes de validation calculées |
Pixeltable unifie le stockage, la gestion des versions et l'indexation des données avec l'orchestration et la gestion des versions de modèles sous une interface de table déclarative, avec des transformations, une inférence de modèle et une logique personnalisée représentées sous forme de colonnes calculées.
Les solutions actuelles pour le développement d’applications d’IA nécessitent un codage personnalisé approfondi et une plomberie d’infrastructure. Le suivi du traçage et des versions entre et entre les transformations de données, les modèles et les déploiements est fastidieux. Pixeltable permet aux ingénieurs ML et aux data scientists de se concentrer sur l'exploration, la modélisation et le développement d'applications sans s'occuper de la plomberie habituelle des données.
Conseil
Consultez la section Intégrations et n'hésitez pas à soumettre une demande pour des intégrations supplémentaires.
Nous sommes ravis d’accueillir les contributions de la communauté ! Voici comment vous pouvez vous impliquer :
Cette bibliothèque est sous licence Apache 2.0.