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!" 기본 모델, 즉 sentence-transformers 의 bge-small-en-v1.5 사용합니다. 파이썬 환경이 sentence-transformers 라이브러리가 포함되어 있지 않으면 방사선이 메시지를 표시합니다.
vz = text_vectorizer ()
# Vectorizer requires sentence-transformers. Install? [Y/n]방사선을 자동으로 설치하도록 "y"를 입력 할 수 있습니다.
각 벡터 라이저는 기본 벡터화 라이브러리로 직접 전달되는 선택적 키워드 인수와 함께 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, ...])방사선을 사용하면 텍스트에 국한되지 않습니다. 오디오, 그래프, 이미지 및 분자도 벡터화 할 수 있습니다.
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 )
# True2.3GHz 쿼드 코어 인텔 코어 i7에서 원래 벡터 라이저는 ~ 32ms로, 가속화 된 벡터 라이저는 ~ 17ms로 반환됩니다.
실험 실험 외에도 순수한 벡터화는 특히 유용하지 않습니다. 미러링 된 데이터 ETL 파이프 라인, 비정형 데이터 ETL 워크로드는 종종 4 가지 구성 요소의 조합이 필요합니다. 구조화되지 않은 데이터가 저장되는 데이터 소스 , 데이터 변환 및 사전 처리를 수행하는 한 가지 더 변환 모듈 , 데이터를 반으로 풍부한 임베드로 전환하는 벡터를 한 번 전환하는 혈통을 유지하는 벡터를 유지 합니다.
Radient는 벡터 중심 ETL 응용 프로그램을 구축하기위한 Workflow 객체를 제공합니다. 워크 플로를 사용하면 이러한 각 구성 요소의 여러 수를 지시 된 그래프로 결합 할 수 있습니다. 예를 들어, Google 드라이브에서 텍스트 문서를 지속적으로 읽고 항해 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 지정하여 가속화 된 벡터 라이저 및 변환을 사용하여 워크 플로에서 변환 할 수 있습니다.
방사선은 더 넓은 ML 커뮤니티에서 작업 위에 구축됩니다. 대부분의 벡터즈기는 다른 라이브러리에서 나옵니다.
현대 모델 가속도는 Onnx를 통해 수행됩니다.
이 라이브러리의 모든 제작자와 관리자에게 큰 감사를드립니다.
단기 (희망적으로)로 예정된 몇 가지 기능 :
LLM 커넥터는 방사선이 제공하는 기능이 아닙니다 . LLM 주변의 상황을 인식하는 시스템을 구축하는 것은 복잡한 작업이며 방사선이 해결하려는 의도가 아닙니다. Haystack 및 Llamaindex와 같은 프로젝트는 최대 걸레 성능을 추출하려는 경우 고려해야 할 많은 훌륭한 옵션 중 하나입니다.
더 많은 샘플 응용 프로그램과 함께 방사선에 대한 전체 쓰기가 나중에 나올 것이므로 계속 지켜봐 주시기 바랍니다.