O Radiente é uma biblioteca leve e amigável para desenvolvedores para dados de dados não estruturados, ou seja, transformando áudio, gráficos, imagens, moléculas, texto e outros tipos de dados em incorporação. O radiente suporta vetorização simples, bem como fluxos de trabalho complexos centrados no vetor.
$ pip install radientSe você achar este projeto útil ou interessante, considere dar -lhe uma estrela.
A vetorização básica pode ser realizada da seguinte maneira:
from radient import text_vectorizer
vz = text_vectorizer ()
vz . vectorize ( "Hello, world!" )
# Vector([-3.21440510e-02, -5.10351397e-02, 3.69579718e-02, ...]) O snippet acima vetoriza a sequência "Hello, world!" Usando um modelo padrão, ou seja, bge-small-en-v1.5 de sentence-transformers . Se o seu ambiente Python não contiver a biblioteca sentence-transformers , a Radiente solicitará:
vz = text_vectorizer ()
# Vectorizer requires sentence-transformers. Install? [Y/n]Você pode digitar "y" para que o radiente o instale automaticamente.
Cada vetorizador pode pegar um parâmetro method junto com argumentos opcionais de palavras -chave que são passadas diretamente para a biblioteca de vetorização subjacente. Por exemplo, podemos escolher o modelo mxbai-embed-large-v1 da AI, usando a biblioteca sentence-transformers via:
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, ...])Com radiente, você não está limitado ao texto. Áudio, gráficos, imagens e moléculas também podem ser vetorizados:
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" )Uma lista parcial de métodos e KWARGs opcionais suportados por cada modalidade pode ser encontrada aqui.
Para casos de uso da produção com grandes quantidades de dados, o desempenho é fundamental. O Radient também fornece uma função accelerate para otimizar os vetores em voar:
import numpy as np
vz = text_vectorizer ()
vec0 = vz . vectorize ( "Hello, world!" )
vz . accelerate ()
vec1 = vz . vectorize ( "Hello, world!" )
np . allclose ( vec0 , vec1 )
# TrueEm um Intel Core i7 de 2,3 GHz, o vetorizador original retorna em ~ 32ms, enquanto o vetorizador acelerado retorna em ~ 17ms.
Além de executar experimentos, a vetorização pura não é particularmente útil. Dados espelhados Dados ETL PIPELINES, Dados não estruturados As cargas de trabalho ETL geralmente requerem uma combinação de quatro componentes: uma fonte de dados em que dados não estruturados são armazenados, mais um um módulos de transformação que executam conversões de dados e pré-processamento, um vetorizador que transforma os dados em incorporação semanticamente rica.
O Radient fornece um objeto Workflow especificamente para criar aplicativos ETL centrados em vetores. Com os fluxos de trabalho, você pode combinar qualquer número de cada um desses componentes em um gráfico direcionado. Por exemplo, um fluxo de trabalho para ler continuamente os documentos de texto do Google Drive, vetorizá -los com a Voyage AI e vetorizá -los em Milvus pode 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" )
) Você pode usar vetorizadores acelerados e transformações em um fluxo de trabalho especificando accelerate=True para todos os operadores suportados.
A radiente constrói o trabalho da comunidade mais ampla de ML. A maioria dos vetores vem de outras bibliotecas:
A aceleração do modelo de voo é feita via ONNX.
Um enorme agradecimento a todos os criadores e mantenedores dessas bibliotecas.
Algumas características programadas para o curto prazo (espero):
Os conectores LLM não serão um recurso que o Radient fornece. A criação de sistemas com reconhecimento de contexto em torno do LLMS é uma tarefa complexa, e não uma que a Radiente pretende resolver. Projetos como Haystack e Llamaindex são duas das muitas ótimas opções a serem consideradas se você deseja extrair o desempenho máximo de trapos.
A redação completa do Radiente virá mais tarde, juntamente com mais aplicativos de amostra, portanto, fique atento.