Radient是一个用于非结构化数据ETL的开发人员友好,轻巧的库,即转动音频,图形,图像,分子,文本和其他数据类型。 Radient支持简单的矢量化以及以矢量为中心的工作流程。
$ pip install radient如果您觉得这个项目有帮助或有趣,请考虑给它一个明星。
基本矢量化可以如下执行:
from radient import text_vectorizer
vz = text_vectorizer ()
vz . vectorize ( "Hello, world!" )
# Vector([-3.21440510e-02, -5.10351397e-02, 3.69579718e-02, ...])上面的摘要将字符串矢量化为"Hello, world!"使用默认模型,即来自sentence-transformers的bge-small-en-v1.5 。如果您的Python环境不包含sentence-transformers库,则Radient会提示您:
vz = text_vectorizer ()
# Vectorizer requires sentence-transformers. Install? [Y/n]您可以键入“ y”以自动为您安装radient。
每个矢量器都可以使用一个method参数以及可选的关键字参数,该参数直接传递给了基础矢量化库。例如,我们可以使用sentence-transformers库通过以下方式选择Mixbread AI的mxbai-embed-large-v1模型
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, ...])使用Radient,您不仅限于文本。音频,图形,图像和分子也可以进行载体:
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" )可以在此处找到每种模式支持的部分方法和可选的夸尔格斯的部分列表。
对于具有大量数据的生产用例,性能是关键。 Radient还提供了一个accelerate功能,可以在现场优化向量器:
import numpy as np
vz = text_vectorizer ()
vec0 = vz . vectorize ( "Hello, world!" )
vz . accelerate ()
vec1 = vz . vectorize ( "Hello, world!" )
np . allclose ( vec0 , vec1 )
# True在2.3 GHz四核Intel Core i7上,原始矢量器以〜32ms返回,而加速矢量器的返回约17ms。
除了运行实验外,纯矢量化并不是特别有用。镜像所用的数据ETL管道,非结构化数据ETL工作负载通常需要四个组件的组合:一个数据源,该数据源存储了非结构化的数据,一个执行数据转换和预处理的更多转换模块,一个将数据转化为语义丰富的嵌入式嵌入的矢量,以及一旦计算出了一个启动Vectors的嵌入者。
Radient提供了一个专门用于构建以向量为中心的ETL应用程序的Workflow对象。使用工作流程,您可以将这些组件中的任何数量组合到有向图中。例如,从Google Drive连续读取文本文档的工作流程,使用Voyage AI进行矢量化,并将其矢量化为Milvus,可能看起来像:
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" )
)您可以使用加速的矢量器并通过为所有受支持的运算符指定accelerate=True在工作流程中转换。
Radient从更广泛的ML社区开始工作。大多数矢量器来自其他库:
在线模型加速度是通过ONNX完成的。
非常感谢这些图书馆的所有创建者和维护者。
近期(希望如此)的几个功能:
LLM连接器将不是Radient提供的功能。围绕LLM构建上下文感知系统是一项复杂的任务,而不是Radient打算解决的任务。 Haystack和LlamainDex等项目是您希望提取最大的抹布性能的众多绝佳选择中的两个。
Radient上的全部文章将在以后以及更多的示例应用程序中出现,因此请继续关注。