Installation | Dokumentation | API-Referenz | Codebeispiele | Computer Vision | LLM
Pixeltable ist eine Python-Bibliothek, die eine deklarative Schnittstelle für multimodale Daten (Text, Bilder, Audio, Video) bereitstellt. Es verfügt über integrierte Versionierung, Herkunftsverfolgung und inkrementelle Aktualisierungen, sodass Benutzer Daten für ihre ML-Workflows speichern , transformieren , indizieren und iterieren können.
Datentransformationen, Modellinferenz und benutzerdefinierte Logik werden als berechnete Spalten eingebettet.
pip install pixeltable
Pixeltable ist persistent. Im Gegensatz zu In-Memory-Python-Bibliotheken wie Pandas ist Pixeltable eine Datenbank.
Erfahren Sie, wie Sie Tabellen erstellen, sie mit Daten füllen und sie mit integrierten oder benutzerdefinierten Transformationen erweitern.
Thema | Notizbuch | Thema | Notizbuch |
---|---|---|---|
10-minütige Tour durch Pixeltable | Tabellen und Datenoperationen | ||
Benutzerdefinierte Funktionen (UDFs) | Objekterkennungsmodelle | ||
Inkrementelles Prompt Engineering | Arbeiten mit externen Dateien | ||
Integration mit Label Studio | Indexierung von Audio-/Video-Transkripten | ||
Multimodale Anwendung | Dokumentenindizierung und RAG | ||
Kontextbezogener Discord-Bot | Bild-/Text-Ähnlichkeitssuche |
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 )
Erfahren Sie, wie Sie in Pixeltable mit Daten arbeiten.
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 ()
Erfahren Sie mehr über berechnete Spalten und Objekterkennung: Vergleich von Objekterkennungsmodellen.
@ 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
Erfahren Sie mehr über benutzerdefinierte Funktionen: UDFs in 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 )
)
Erfahren Sie, wie Sie Ansichten nutzen können, um Ihren RAG-Workflow aufzubauen.
# 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 ()
Erfahren Sie, wie Sie Pixeltable für die Modellanalyse nutzen können.
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 ()
Erfahren Sie, wie Sie mit Inferenzdiensten wie Together AI in Pixeltable interagieren.
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 ()
Erfahren Sie, wie Sie mit Einbettungs- und Vektorindizes arbeiten.
Erfordernis | Traditionell | Pixeltisch |
---|---|---|
Frame-Extraktion | ffmpeg + benutzerdefinierter Code | Automatisch über FrameIterator |
Objekterkennung | Mehrere Skripte + Caching | Einzelne berechnete Spalte |
Videoindizierung | Benutzerdefinierte Pipelines + Vector DB | Native Ähnlichkeitssuche |
Anmerkungsverwaltung | Separate Tools + benutzerdefinierter Code | Label Studio-Integration |
Modellbewertung | Benutzerdefinierte Metrik-Pipeline | Integrierte Kartenberechnung |
Erfordernis | Traditionell | Pixeltable |
---|---|---|
Dokument-Chunking | Tool + benutzerdefinierter Code | Nativer DocumentSplitter |
Einbettende Generation | Separate Pipeline + Caching | Berechnete Spalten |
Vektorsuche | Externer Vektor-DB | Integrierte Vektorindizierung |
Prompte Verwaltung | Benutzerdefinierte Tracking-Lösung | Versionskontrollierte Spalten |
Kettenmanagement | Tool + benutzerdefinierter Code | Berechnete Spalten-DAGs |
Erfordernis | Traditionell | Pixeltisch |
---|---|---|
Datentypen | Mehrere Speichersysteme | Einheitliche Tabellenschnittstelle |
Cross-modale Suche | Komplexe Integration | Native Ähnlichkeitsunterstützung |
Pipeline-Orchestrierung | Mehrere Werkzeuge (Luftstrom usw.) | Einzelne deklarative Schnittstelle |
Vermögensverwaltung | Benutzerdefiniertes Tracking-System | Automatische Abstammung |
Qualitätskontrolle | Mehrere Validierungstools | Berechnete Validierungsspalten |
Pixeltable vereint Datenspeicherung, Versionierung und Indizierung mit Orchestrierung und Modellversionierung unter einer deklarativen Tabellenschnittstelle, wobei Transformationen, Modellinferenz und benutzerdefinierte Logik als berechnete Spalten dargestellt werden.
Heutige Lösungen für die KI-App-Entwicklung erfordern umfangreiche kundenspezifische Codierung und Infrastrukturinstallation. Das Nachverfolgen von Herkunft und Versionen zwischen Datentransformationen, Modellen und Bereitstellungen und über diese hinweg ist mühsam. Mit Pixeltable können sich ML-Ingenieure und Datenwissenschaftler auf die Erforschung, Modellierung und App-Entwicklung konzentrieren, ohne sich mit der üblichen Dateninstallation befassen zu müssen.
Tipp
Schauen Sie sich den Abschnitt „Integrationen“ an und senden Sie uns gerne eine Anfrage für weitere Integrationen.
Wir freuen uns über Beiträge aus der Community! So können Sie mitmachen:
Diese Bibliothek ist unter der Apache 2.0-Lizenz lizenziert.