Inferensi, konsumsi, dan pengindeksan - supercharged oleh karat?
Jelajahi dokumen »
Lihat Demo · Bangku · Adaptor Streaming Vektor. Cari di ruang audio
Embedanything adalah minimalis, berkinerja tinggi, cepat, ringan, multisource, multimodal, dan pipa embedding lokal yang dibangun di karat. Apakah Anda bekerja dengan teks, gambar, audio, PDF, situs web, atau media lain, embedanything merampingkan proses menghasilkan embeddings dari berbagai sumber dan streaming yang mulus (memori-efisien-indeksing) mereka ke database vektor. Ini mendukung embeddings padat, jarang, ONNX dan interaksi akhir, menawarkan fleksibilitas untuk berbagai kasus penggunaan.
Streaming vektor memungkinkan Anda untuk memproses dan menghasilkan embeddings untuk file dan streaming, jadi jika Anda memiliki file 10 GB, itu dapat terus menghasilkan embeddings chunk by chunk, Anda dapat segmen secara semantik, dan menyimpannya dalam basis data vektor pilihan Anda, sehingga menghilangkan penyimpanan embeddings curah pada RAM sekaligus. Proses penyematan terjadi secara terpisah dari proses utama, sehingga mempertahankan kinerja tinggi yang diaktifkan oleh Rust MPSC.
Eksekusi Eksekusi Fasulat.
➡️ Manajemen Permemori: Rust menegakkan manajemen memori secara bersamaan, mencegah kebocoran memori dan crash yang dapat mengganggu bahasa lain
➡️True Multithreading
Model bahasa bahasa atau model embedding secara lokal dan efisien
➡️Candle memungkinkan kesimpulan pada GPU yang mendukung CUDA langsung dari kotak.
➡️decrease Penggunaan memori embedanything.
Kami mendukung setiap model pelukan di lilin. Dan kami juga mendukung runtime ONNX untuk Bert dan Colpali.
model = EmbeddingModel . from_pretrained_hf (
WhichModel . Bert , model_id = "model link from huggingface"
)
config = TextEmbedConfig ( chunk_size = 200 , batch_size = 32 )
data = embed_anything . embed_file ( "file_address" , embedder = model , config = config )| Model | Tautan khusus |
|---|---|
| Jina | jinaai/jina-embeddings-v2-base-en |
| jinaai/jina-embeddings-v2-small-en | |
| Bert | Transformer kalimat/all-minilm-l6-v2 |
| Transformer kalimat/all-minilm-l12-v2 | |
| kalimat-transformer/parafrase-minilm-l6-v2 | |
| Klip | OpenAI/CLIP-VIT-BASE-PATCH32 |
| Berbisik | Kebanyakan openai berbisik dari Huggingface didukung. |
model = EmbeddingModel.from_pretrained_hf(
WhichModel.SparseBert, "prithivida/Splade_PP_en_v1"
)
model = EmbeddingModel.from_pretrained_onnx(
WhichModel.Bert, model_id="onnx_model_link"
)
model: ColpaliModel = ColpaliModel.from_pretrained_onnx("starlight-ai/colpali-v1.2-merged-onnx", None)
model = EmbeddingModel . from_pretrained_hf (
WhichModel . Bert , model_id = "sentence-transformers/all-MiniLM-L12-v2"
)
# with semantic encoder
semantic_encoder = EmbeddingModel . from_pretrained_hf ( WhichModel . Jina , model_id = "jinaai/jina-embeddings-v2-small-en" )
config = TextEmbedConfig ( chunk_size = 256 , batch_size = 32 , splitting_strategy = "semantic" , semantic_encoder = semantic_encoder ) pip install embed-anything
Untuk GPU dan menggunakan model khusus seperti Colpali
pip install embed-anything-gpu
model = EmbeddingModel . from_pretrained_local (
WhichModel . Bert , model_id = "Hugging_face_link"
)
data = embed_anything . embed_file ( "test_files/test.pdf" , embedder = model ) import embed_anything
from embed_anything import EmbedData
model = embed_anything . EmbeddingModel . from_pretrained_local (
embed_anything . WhichModel . Clip ,
model_id = "openai/clip-vit-base-patch16" ,
# revision="refs/pr/15",
)
data : list [ EmbedData ] = embed_anything . embed_directory ( "test_files" , embedder = model )
embeddings = np . array ([ data . embedding for data in data ])
query = [ "Photo of a monkey?" ]
query_embedding = np . array (
embed_anything . embed_query ( query , embedder = model )[ 0 ]. embedding
)
similarities = np . dot ( embeddings , query_embedding )
max_index = np . argmax ( similarities )
Image . open ( data [ max_index ]. text ). show () import embed_anything
from embed_anything import (
AudioDecoderModel ,
EmbeddingModel ,
embed_audio_file ,
TextEmbedConfig ,
)
# choose any whisper or distilwhisper model from https://huggingface.co/distil-whisper or https://huggingface.co/collections/openai/whisper-release-6501bba2cf999715fd953013
audio_decoder = AudioDecoderModel . from_pretrained_hf (
"openai/whisper-tiny.en" , revision = "main" , model_type = "tiny-en" , quantized = False
)
embedder = EmbeddingModel . from_pretrained_hf (
embed_anything . WhichModel . Bert ,
model_id = "sentence-transformers/all-MiniLM-L6-v2" ,
revision = "main" ,
)
config = TextEmbedConfig ( chunk_size = 200 , batch_size = 32 )
data = embed_anything . embed_audio_file (
"test_files/audio/samples_hp0.wav" ,
audio_decoder = audio_decoder ,
embedder = embedder ,
text_embed_config = config ,
)
print ( data [ 0 ]. metadata )Pertama -tama, terima kasih telah meluangkan waktu untuk berkontribusi pada proyek ini. Kami sangat menghargai kontribusi Anda, apakah itu laporan bug, saran fitur, atau permintaan tarik. Waktu dan upaya Anda sangat dihargai dalam proyek ini.
Dokumen ini memberikan panduan dan praktik terbaik untuk membantu Anda berkontribusi secara efektif. Ini dimaksudkan untuk berfungsi sebagai pedoman, bukan aturan yang ketat. Kami mendorong Anda untuk menggunakan penilaian terbaik Anda dan merasa nyaman mengusulkan perubahan pada dokumen ini melalui permintaan tarik.
Salah satu tujuan embedanything adalah untuk memungkinkan insinyur AI dengan mudah menggunakan model penyematan canggih pada file dan dokumen khas. Banyak yang telah dicapai di sini dan ini adalah format yang kami dukung saat ini dan beberapa lagi harus dilakukan.
Kami senang berbagi bahwa kami telah memperluas platform kami untuk mendukung banyak modalitas, termasuk:
File audio
Markdowns
Situs web
Gambar
Video
Grafik
Ini memberi Anda fleksibilitas untuk bekerja dengan berbagai tipe data di satu tempat!
Kami telah meluncurkan beberapa pembaruan besar dalam versi 0.3 untuk meningkatkan fungsionalitas dan kinerja. Inilah yang baru:
Semantic Chunking: Strategi chunking yang dioptimalkan untuk alur kerja Generasi Pengambilan (RAG) yang lebih baik.
Streaming untuk pengindeksan yang efisien: Kami telah memperkenalkan streaming untuk pengindeksan efisien memori dalam database vektor. Ingin tahu lebih banyak? Lihat artikel kami tentang fitur ini di sini: https://www.analyticsvidhya.com/blog/2024/09/vector-treaming/
Aplikasi Zero-Shot: Jelajahi demo aplikasi nol-shot kami untuk melihat kekuatan pembaruan ini dalam tindakan.
Fungsi intuitif: Versi 0.3 termasuk refactor lengkap untuk fungsi yang lebih intuitif, membuat platform lebih mudah digunakan.
Streaming Chunkwise: Alih-alih streaming file-demi-file, kami sekarang mendukung streaming Chunkwise, memungkinkan pemrosesan data yang lebih fleksibel dan efisien.
Lihat rilis terbaru: dan lihat bagaimana fitur -fitur ini dapat menambah pipa Generativeai Anda!
Kami telah menerima beberapa pertanyaan tentang mengapa kami menggunakan lilin, jadi inilah penjelasan singkat:
Salah satu alasan utama adalah bahwa lilin tidak memerlukan model format ONNX spesifik, yang berarti dapat bekerja dengan mulus dengan model wajah pemeluk. Fleksibilitas ini telah menjadi faktor kunci bagi kami. Namun, kami juga menyadari bahwa kami telah sedikit berkompromi pada kecepatan yang mendukung fleksibilitas itu.
Apa selanjutnya? Untuk mengatasi hal ini, kami senang mengumumkan bahwa kami memperkenalkan Candle-ONNX bersama dengan kerangka kerja kami sebelumnya tentang pelukan,
➡️ Dukungan untuk model GGUF
Kami memiliki multimodality sejak hari pertama untuk infrastruktur kami. Kami sudah memasukkannya untuk situs web, gambar, dan audio tetapi kami ingin memperluasnya lebih jauh.
☑️Graph Embedding - Bangun Deepwalks Embeddings Depth First dan Word to VEC
☑️ video embedding
☑️ Klip Yolo
Kami saat ini mendukung berbagai basis data vektor untuk embeddings streaming, termasuk:
Tapi kami tidak berhenti di sana! Kami secara aktif bekerja untuk memperluas daftar ini.
Ingin berkontribusi? Jika Anda ingin menambahkan dukungan untuk database vektor favorit Anda, kami ingin mendapatkan bantuan Anda! Lihatlah kontribusi kami untuk pedoman, atau jangan ragu untuk menjangkau langsung [email protected]. Mari kita membangun sesuatu yang luar biasa bersama!