Radient-это удобная для разработчиков, легкая библиотека для неструктурированных данных ETL, т.е. превращение звука, графиков, изображений, молекул, текста и других типов данных в встраивание. Радиент поддерживает простую векторизацию, а также сложные векторные рабочие процессы.
$ 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!" Использование модели по умолчанию, а именно bge-small-en-v1.5 из sentence-transformers . Если ваша среда Python не содержит библиотеку sentence-transformers , Radient подтолкнет вас к ней:
vz = text_vectorizer ()
# Vectorizer requires sentence-transformers. Install? [Y/n]Вы можете ввести «y», чтобы Radient установил его для автоматического.
Каждый векторизатор может принимать параметр 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" )Частичный список методов и необязательных Kwargs, поддерживаемых каждым модальностью, можно найти здесь.
Для производственных вариантов использования с большим количеством данных производительность является ключевой. 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На четырехъядерном intel core I7 2,3 ГГц оригинальный векторизатор возвращается за ~ 32 мс, в то время как ускоренный векторлизатор возвращается за ~ 17 мс.
Помимо экспериментов, чистая векторизация не особенно полезна. Зеркалирующие строительные данные ETL Pipelines, неразрушенные рабочие нагрузки ETL часто требуют комбинации четырех компонентов: источник данных, где хранятся неструктурированные данные, еще один больше модулей преобразования , которые выполняют преобразования данных и предварительную обработку, векторизатор , который превращает данные в семантически богатые пособия, и раковина , чтобы сохранить векторы после их вычисления.
Radient предоставляет объект Workflow специально для создания векторных векторных приложений ETL. С рабочими процессами вы можете объединить любое количество каждого из этих компонентов в направленный график. Например, рабочий процесс для непрерывного чтения текстовых документов из Google Drive, векторизации их с помощью AI Voyage, и векторизировать их в Милвус может выглядеть как:
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 является сложной задачей, а не Radient намеревается решить. Такие проекты, как Haystack и LlamainDex, являются двумя из множества замечательных вариантов, которые нужно рассмотреть, если вы хотите извлечь максимальную производительность тряпичной.
Полная запись на Radient будет появиться позже, наряду с большим количеством образцов приложений, так что следите за обновлениями.