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 Libraryが含まれていない場合、Radientは次のことを促します。
vz = text_vectorizer ()
# Vectorizer requires sentence-transformers. Install? [Y/n]「Y」と入力して、Radient Install for Your Your your for自動的にインストールできます。
各ベクターライザーはmethodパラメーターと、基礎となるベクトル化ライブラリに直接渡されるオプションのキーワード引数を使用できます。たとえば、Mixbread AIのmxbai-embed-large-v1モデルを選択できますsentence-transformers
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 )
# True2.3 GHzのクアッドコアIntel Core i7では、元のベクトル化器は約32msで戻り、加速ベクターは約17msで戻ります。
実験を実行することは別として、純粋なベクトル化は特に有用ではありません。ミラーリングデータETLパイプライン、非構造化データETLワークロードには、4つのコンポーネントの組み合わせが必要になることがよくあります。非構造化データが保存されているデータソース、データ変換と前処理を実行するモジュール、ベクターを実行するモジュール、データをSemantically Embeddingsに変えるベクター、およびベクトルを維持するためにベクトルを維持するためにシンクを使用します。
Radientは、ベクトル中心のETLアプリケーションを構築するためのWorkflowオブジェクトを提供します。ワークフローを使用すると、これらのコンポーネントのそれぞれを任意の数を指示グラフに組み合わせることができます。たとえば、Googleドライブからテキストドキュメントを継続的に読み取り、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が提供する機能ではありません。 LLMS周辺のコンテキスト認識システムの構築は複雑なタスクであり、Rasientが解決するつもりのものではありません。 HaystackやLlamaindexなどのプロジェクトは、最大のRAGパフォーマンスを抽出しようとしている場合に考慮すべき多くの優れたオプションの2つです。
Radientに関する完全な記事は、より多くのサンプルアプリケーションとともに後で来るので、お楽しみに。