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上的全部文章將在以後以及更多的示例應用程序中出現,因此請繼續關注。