Radient es una biblioteca liviana y amigable para el desarrollador para datos no estructurados ETL, es decir, girando audio, gráficos, imágenes, moléculas, texto y otros tipos de datos en incrustaciones. Radient admite la vectorización simple, así como los flujos de trabajo complejos centrados en el vector.
$ pip install radientSi encuentra que este proyecto es útil o interesante, considere darle una estrella.
La vectorización básica se puede realizar de la siguiente manera:
from radient import text_vectorizer
vz = text_vectorizer ()
vz . vectorize ( "Hello, world!" )
# Vector([-3.21440510e-02, -5.10351397e-02, 3.69579718e-02, ...]) El fragmento anterior vectoriza la cadena "Hello, world!" Usando un modelo predeterminado, a saber, bge-small-en-v1.5 de sentence-transformers . Si su entorno de Python no contiene la biblioteca de sentence-transformers , Radient le solicitará que lo haga:
vz = text_vectorizer ()
# Vectorizer requires sentence-transformers. Install? [Y/n]Puede escribir "Y" para que Radient lo instale automáticamente.
Cada vectorizador puede tomar un parámetro method junto con argumentos de palabras clave opcionales que se pasan directamente a la biblioteca de vectorización subyacente. Por ejemplo, podemos elegir el modelo mxbai-embed-large-v1 de Mixbread AI utilizando la biblioteca de sentence-transformers a través de:
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, ...])Con Radient, no te limitas al texto. El audio, los gráficos, las imágenes y las moléculas también se pueden vectorizar:
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" )Aquí se puede encontrar una lista parcial de métodos y kwargs opcionales compatibles con cada modalidad.
Para los casos de uso de producción con grandes cantidades de datos, el rendimiento es clave. Radient también proporciona una función accelerate para optimizar los vectorizadores sobre la marcha:
import numpy as np
vz = text_vectorizer ()
vec0 = vz . vectorize ( "Hello, world!" )
vz . accelerate ()
vec1 = vz . vectorize ( "Hello, world!" )
np . allclose ( vec0 , vec1 )
# TrueEn un Intel Core i7 de cuatro núcleos de 2.3 GHz, el vectorizador original regresa en ~ 32 ms, mientras que el vectorizador acelerado regresa en ~ 17ms.
Además de ejecutar experimentos, la vectorización pura no es particularmente útil. Reflejando datos de datos ETL ETL, las cargas de trabajo ETL de datos no estructurados a menudo requieren una combinación de cuatro componentes: una fuente de datos en la que se almacenan datos no estructurados, uno más más módulos de transformación que realizan conversiones de datos y preprocesamiento, un vectorizador que convierte los datos en embarcaciones semánticamente ricas y se sumerge para perseguir los vectores una vez que se han calculado.
Radient proporciona un objeto Workflow específicamente para construir aplicaciones ETL centradas en el vector. Con los flujos de trabajo, puede combinar cualquier número de cada uno de estos componentes en un gráfico dirigido. Por ejemplo, un flujo de trabajo para leer continuamente documentos de texto de Google Drive, vectorizarlos con Voyage AI y vectorizarlos en Milvus podría parecer:
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" )
) Puede usar vectorizadores acelerados y transformaciones en un flujo de trabajo especificando accelerate=True para todos los operadores compatibles.
Radient se basa en el trabajo de la comunidad ML más amplia. La mayoría de los vectorizadores provienen de otras bibliotecas:
La aceleración del modelo sobre la marcha se realiza a través de ONNX.
Un gran agradecimiento a todos los creadores y mantenedores de estas bibliotecas.
Un par de características programadas para el plazo a corto plazo (con suerte):
Los conectores LLM no serán una característica que proporcione Radient. Construir sistemas de contexto sobre LLM es una tarea compleja, y no una que el radiente pretenda resolver. Proyectos como Haystack y Llamaindex son dos de las muchas opciones excelentes a considerar si está buscando extraer el máximo rendimiento del trapo.
La redacción completa en Radient vendrá más tarde, junto con más aplicaciones de muestra, así que estad atentos.