Radient adalah perpustakaan yang ramah pengembang dan ringan untuk ETL data yang tidak terstruktur, yaitu mengubah audio, grafik, gambar, molekul, teks, dan tipe data lainnya menjadi embeddings. Radient mendukung vektorisasi sederhana serta alur kerja vektor-sentris yang kompleks.
$ pip install radientJika Anda menemukan proyek ini bermanfaat atau menarik, silakan pertimbangkan untuk memberikannya bintang.
Vektorisasi dasar dapat dilakukan sebagai berikut:
from radient import text_vectorizer
vz = text_vectorizer ()
vz . vectorize ( "Hello, world!" )
# Vector([-3.21440510e-02, -5.10351397e-02, 3.69579718e-02, ...]) Cuplikan di atas vektor string "Hello, world!" Menggunakan model default, yaitu bge-small-en-v1.5 dari sentence-transformers . Jika lingkungan Python Anda tidak mengandung perpustakaan sentence-transformers , Padient akan meminta Anda untuk itu:
vz = text_vectorizer ()
# Vectorizer requires sentence-transformers. Install? [Y/n]Anda dapat mengetik "y" untuk memasang radient untuk Anda secara otomatis.
Setiap vektorisasi dapat mengambil parameter method bersama dengan argumen kata kunci opsional yang dapat diteruskan langsung ke pustaka vektorisasi yang mendasarinya. Misalnya, kita dapat memilih model Mixbread AI mxbai-embed-large-v1 menggunakan perpustakaan sentence-transformers melalui:
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, ...])Dengan radient, Anda tidak terbatas pada teks. Audio, grafik, gambar, dan molekul juga dapat divektor:
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" )Daftar parsial metode dan kwarg opsional yang didukung oleh setiap modalitas dapat ditemukan di sini.
Untuk kasus penggunaan produksi dengan data dalam jumlah besar, kinerja adalah kuncinya. Radient juga menyediakan fungsi accelerate untuk mengoptimalkan vektoris saat terbang:
import numpy as np
vz = text_vectorizer ()
vec0 = vz . vectorize ( "Hello, world!" )
vz . accelerate ()
vec1 = vz . vectorize ( "Hello, world!" )
np . allclose ( vec0 , vec1 )
# TruePada 2,3 GHz quad-core Intel Core i7, vektorizer asli kembali dalam ~ 32ms, sedangkan vektorizer yang dipercepat kembali dalam ~ 17ms.
Selain menjalankan eksperimen, vektorisasi murni tidak terlalu berguna. Data Mirroring Data ETL Pipa, beban kerja ETL data yang tidak terstruktur sering memerlukan kombinasi empat komponen: sumber data di mana data tidak terstruktur disimpan, satu lagi modul transformasi yang melakukan konversi data dan pra-pemrosesan, vektor yang mengubah data menjadi embedding yang kaya secara semantik, dan wastafel untuk bertahan, vektor setelah mereka telah dikomputasi.
Radient menyediakan objek Workflow khusus untuk membangun aplikasi ETL vektor-sentris. Dengan alur kerja, Anda dapat menggabungkan sejumlah masing -masing komponen ini ke dalam grafik yang diarahkan. Misalnya, alur kerja untuk terus membaca dokumen teks dari Google Drive, vektorisasi mereka dengan Voyage AI, dan memvektorisasi mereka menjadi milvus mungkin terlihat seperti:
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" )
) Anda dapat menggunakan vektorizer yang dipercepat dan berubah dalam alur kerja dengan menentukan accelerate=True untuk semua operator yang didukung.
Bangunan radient di atas pekerjaan dari komunitas ML yang lebih luas. Sebagian besar vektoris berasal dari perpustakaan lain:
Akselerasi model on-the-fly dilakukan melalui ONNX.
Terima kasih banyak untuk semua pencipta dan pengelola perpustakaan ini.
Beberapa fitur yang dijadwalkan untuk jangka pendek (semoga):
Konektor LLM tidak akan menjadi fitur yang disediakan Padient. Membangun sistem sadar-konteks di sekitar LLMS adalah tugas yang kompleks, dan bukan yang dipecahkan oleh Radient. Proyek -proyek seperti Haystack dan Llamaindex adalah dua dari banyak pilihan bagus untuk dipertimbangkan jika Anda ingin mengekstraksi kinerja kain maksimum.
Penulisan lengkap tentang radient akan datang nanti, bersama dengan lebih banyak aplikasi sampel, jadi tetaplah disini.