Radient ist eine Entwicklerfreundliche, leichte Bibliothek für unstrukturierte Daten ETL, dh Audio, Diagramme, Bilder, Moleküle, Text und andere Datentypen in Einbettungen. Radient unterstützt einfache Vektorisation sowie komplexe vektororientierte Workflows.
$ pip install radientWenn Sie dieses Projekt hilfreich oder interessant finden, sollten Sie ihm einen Stern geben.
Grundlegende Vektorisierung kann wie folgt durchgeführt werden:
from radient import text_vectorizer
vz = text_vectorizer ()
vz . vectorize ( "Hello, world!" )
# Vector([-3.21440510e-02, -5.10351397e-02, 3.69579718e-02, ...]) Der obige Snippet vektorisiert die Zeichenfolge "Hello, world!" Verwenden eines Standardmodells, nämlich bge-small-en-v1.5 von sentence-transformers . Wenn Ihre Python-Umgebung nicht die Bibliothek sentence-transformers enthält, fordert Radient Sie dazu auf:
vz = text_vectorizer ()
# Vectorizer requires sentence-transformers. Install? [Y/n]Sie können "y" eingeben, damit radientes automatisch für Sie für Sie installiert wird.
Jeder Vectorizer kann einen method zusammen mit optionalen Schlüsselwortargumenten aufnehmen, die direkt an die zugrunde liegende Vektorisierungsbibliothek übergeben werden. Zum Beispiel können wir Mixbread AIs mxbai-embed-large-v1 Modell mit der sentence-transformers -Bibliothek unter Verwendung von:
vz_mbai = text_vectorizer ( method = "sentence-transformers" , model_name_or_path = "mixedbread-ai/mxbai-embed-large-v1" )
vz_mbai . vectorize ( "Hello, world!" )
# Vector([ 0.01729078, 0.04468533, 0.00055427, ...])Mit Radient sind Sie nicht auf Text beschränkt. Audio, Diagramme, Bilder und Moleküle können ebenfalls vektorisiert werden:
from radient import (
audio_vectorizer ,
graph_vectorizer ,
image_vectorizer ,
molecule_vectorizer ,
)
avec = audio_vectorizer (). vectorize ( str ( Path . home () / "audio.wav" ))
gvec = graph_vectorizer (). vectorize ( nx . karate_club_graph ())
ivec = image_vectorizer (). vectorize ( str ( Path . home () / "image.jpg" ))
mvec = molecule_vectorizer (). vectorize ( "O=C=O" )Eine Teilliste von Methoden und optionalen KWARGs, die von jeder Modalität unterstützt werden, finden Sie hier.
Für Produktionsanwendungsfälle mit großen Datenmengen ist die Leistung von entscheidender Bedeutung. Radient bietet auch eine accelerate , um die Vektorisierer im Fliege zu optimieren:
import numpy as np
vz = text_vectorizer ()
vec0 = vz . vectorize ( "Hello, world!" )
vz . accelerate ()
vec1 = vz . vectorize ( "Hello, world!" )
np . allclose ( vec0 , vec1 )
# TrueBei einem 2,3-GHz-Quad-Core-Intel Core i7 kehrt der ursprüngliche Vectorizer in ~ 32 ms zurück, während der beschleunigte Vectorizer in ~ 17 ms zurückkehrt.
Abgesehen vom Ausführen von Experimenten ist die reine Vektorisierung nicht besonders nützlich. Wenn Sie gesteuerte Daten-ETL-Pipelines spiegeln, erfordern unstrukturierte Daten-ETL-Workloads häufig eine Kombination von vier Komponenten: eine Datenquelle , bei der unstrukturierte Daten gespeichert werden, eine weitere Transformationsmodule , die Datenkonvertierungen und Vorverarbeitungen durchführen, eine Vektorisation , die die Daten in semantisch reichhaltige Bededs verwandelt, und eine Spüle , nach der die Vektoren zu rechnen waren.
Radient bietet ein Workflow Objekt speziell zum Aufbau vektororientierter ETL-Anwendungen. Mit Workflows können Sie eine beliebige Anzahl von jeder dieser Komponenten zu einem gerichteten Diagramm kombinieren. Beispielsweise kann ein Workflow zum kontinuierlichen Lesen von Textdokumenten von Google Drive sie mit der Voyage AI vectorisieren und sie in Milvus vektorisieren.
from radient import make_operator
from radient import Workflow
extract = make_operator ( "source" , method = "google-drive" , task_params = { "folder" : "My Files" })
transform = make_operator ( "transform" , method = "read-text" , task_params = {})
vectorize = make_operator ( "vectorizer" , method = "voyage-ai" , modality = "text" , task_params = {})
load = make_operator ( "sink" , method = "milvus" , task_params = { "operation" : "insert" })
wf = (
Workflow ()
. add ( extract , name = "extract" )
. add ( transform , name = "transform" )
. add ( vectorize , name = "vectorize" )
. add ( load , name = "load" )
) Sie können beschleunigte Vektorisierer und Transformationen in einem Workflow verwenden, indem Sie accelerate=True für alle unterstützten Betreiber angeben.
Radient baut auf der Arbeit aus der breiteren ML -Community auf. Die meisten Vektorisierer stammen aus anderen Bibliotheken:
Die Beschleunigung des Fliegemodells erfolgt über ONNX.
Ein großes Dankeschön an alle Schöpfer und Betreuer dieser Bibliotheken.
Ein paar Merkmale, die kurzfristig (hoffentlich) für die kurzfristige Merkmale geplant sind:
LLM -Anschlüsse sind keine Funktion, die Radient bietet. Das Erstellen von kontextbezogenen Systemen rund um LLMs ist eine komplexe Aufgabe, die radient zu lösen beabsichtigt. Projekte wie Haystack und Llamaindex sind zwei der vielen großartigen Optionen, die Sie berücksichtigen sollten, wenn Sie die maximale Lagleistung extrahieren möchten.
Die vollständige Beschreibung von Radient wird später zusammen mit weiteren Beispielanwendungen kommen. Bleiben Sie also dran.