การอนุมานการบริโภคและการจัดทำดัชนี - ซุปเปอร์ชาร์จโดยสนิม?
สำรวจเอกสาร»
ดูการสาธิต·ม้านั่ง·อะแดปเตอร์สตรีมมิ่งเวกเตอร์ ค้นหาในพื้นที่เสียง
Embedanything เป็นมินิมัลลิสต์มีประสิทธิภาพสูงสายฟ้าเร็วน้ำหนักเบามัลติซอร์ซมัลติโมดอลและท่อฝังตัวในท้องถิ่นที่สร้างขึ้นในสนิม ไม่ว่าคุณจะทำงานกับข้อความ, รูปภาพ, เสียง, PDFs, เว็บไซต์หรือสื่ออื่น ๆ การฝังระบบจะปรับปรุงกระบวนการสร้างการฝังตัวจากแหล่งต่าง ๆ และสตรีมมิ่งอย่างราบรื่น รองรับการฝังตัวที่หนาแน่นเบาบาง ONNX และการโต้ตอบตอนปลายซึ่งนำเสนอความยืดหยุ่นสำหรับกรณีการใช้งานที่หลากหลาย
การสตรีมแบบเวกเตอร์ช่วยให้คุณสามารถประมวลผลและสร้างการฝังตัวสำหรับไฟล์และสตรีมได้ดังนั้นหากคุณมีไฟล์ 10 GB มันสามารถสร้าง embeddings chunk อย่างต่อเนื่องโดยที่คุณสามารถแบ่งส่วนความหมายและเก็บไว้ในฐานข้อมูลเวกเตอร์ที่คุณเลือก กระบวนการฝังตัวเกิดขึ้นแยกจากกระบวนการหลักเพื่อรักษาประสิทธิภาพสูงที่เปิดใช้งานโดย Rust MPSC
➡การดำเนินการที่สมบูรณ์
➡การจัดการหน่วยความจำ: สนิมบังคับใช้การจัดการหน่วยความจำพร้อมกันป้องกันการรั่วไหลของหน่วยความจำและการล่มที่อาจทำให้เกิดโรคอื่น ๆ
➡true multithreading
➡โมเดลภาษาที่รันหรือแบบฝังตัวในที่และมีประสิทธิภาพ
➡ Candle อนุญาตให้มีการอนุมานเกี่ยวกับ GPU ที่เปิดใช้งาน CUDA ออกจากกล่อง
➡ลดการใช้หน่วยความจำของทุกสิ่ง
เราสนับสนุนรูปแบบการกอดใด ๆ บนเทียน และเรายังสนับสนุน ONNX Runtime สำหรับ Bert และ 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 )| แบบอย่าง | ลิงค์ที่กำหนดเอง |
|---|---|
| จิน่า | jinaai/jina-embeddings-v2-base-en |
| jinaai/jina-embeddings-v2-small-en | |
| เบิร์ต | ประโยค-transformers/all-minilm-l6-v2 |
| ประโยค-transformers/all-minilm-L12-V2 | |
| ประโยค-transformers/paraphrase-minilm-l6-v2 | |
| คลิป | openai/clip-vit-base-patch32 |
| กระซิบ | Openai Whisper ส่วนใหญ่จาก HuggingFace รองรับ |
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
สำหรับ GPU และการใช้โมเดลพิเศษเช่น 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 )ก่อนอื่นขอขอบคุณที่สละเวลามีส่วนร่วมในโครงการนี้ เราขอขอบคุณการมีส่วนร่วมของคุณอย่างแท้จริงไม่ว่าจะเป็นรายงานข้อผิดพลาดคำแนะนำคุณสมบัติหรือดึงคำขอ เวลาและความพยายามของคุณมีมูลค่าสูงในโครงการนี้
เอกสารนี้ให้แนวทางและแนวทางปฏิบัติที่ดีที่สุดเพื่อช่วยให้คุณมีส่วนร่วมอย่างมีประสิทธิภาพ สิ่งเหล่านี้มีไว้เพื่อใช้เป็นแนวทางไม่ใช่กฎที่เข้มงวด เราขอแนะนำให้คุณใช้การตัดสินที่ดีที่สุดของคุณและรู้สึกสะดวกสบายในการเสนอการเปลี่ยนแปลงเอกสารนี้ผ่านคำขอดึง
หนึ่งในเป้าหมายของการฝังตัวคือการอนุญาตให้วิศวกร AI ใช้แบบจำลองการฝังสถานะของศิลปะบนไฟล์และเอกสารทั่วไปได้อย่างง่ายดาย มีหลายสิ่งที่ประสบความสำเร็จแล้วที่นี่และนี่คือรูปแบบที่เราสนับสนุนในตอนนี้และต้องทำอีกสองสามอย่าง
เรารู้สึกตื่นเต้นที่จะแบ่งปันว่าเราได้ขยายแพลตฟอร์มของเราเพื่อรองรับหลายรังสีรวมถึง:
ไฟล์เสียง
มาร์คดาวน์
เว็บไซต์
ภาพ
วิดีโอ
กราฟ
สิ่งนี้จะช่วยให้คุณมีความยืดหยุ่นในการทำงานกับประเภทข้อมูลต่าง ๆ ทั้งหมดในที่เดียว!
เราได้เปิดตัวการอัปเดตที่สำคัญบางอย่างในเวอร์ชัน 0.3 เพื่อปรับปรุงการทำงานและประสิทธิภาพ นี่คือสิ่งใหม่:
ความหมายแบบ Chunking: กลยุทธ์การตีพิมพ์ที่ดีที่สุดสำหรับเวิร์กโฟลว์การค้นพบที่ดีขึ้น (RAG) เวิร์กโฟลว์
สตรีมมิ่งเพื่อการจัดทำดัชนีที่มีประสิทธิภาพ: เราได้แนะนำการสตรีมสำหรับการจัดทำดัชนีหน่วยความจำที่มีประสิทธิภาพในฐานข้อมูลเวกเตอร์ ต้องการทราบข้อมูลเพิ่มเติมหรือไม่? ตรวจสอบบทความของเราเกี่ยวกับคุณสมบัตินี้ที่นี่: https://www.analyticsvidhya.com/blog/2024/09/vector-streaming/
แอพพลิเคชั่น Zero-shot: สำรวจการสาธิตแอปพลิเคชัน Zero-Shot ของเราเพื่อดูพลังของการอัปเดตเหล่านี้ในการดำเนินการ
ฟังก์ชั่นที่ใช้งานง่าย: เวอร์ชัน 0.3 มีตัวปรับแต่งที่สมบูรณ์สำหรับฟังก์ชั่นที่ใช้งานง่ายมากขึ้นทำให้แพลตฟอร์มใช้งานง่ายขึ้น
การสตรีม Chunkwise: แทนที่จะสตรีมมิ่งไฟล์ต่อไฟล์ตอนนี้เรารองรับการสตรีมแบบ chunkwise เพื่อให้การประมวลผลข้อมูลที่ยืดหยุ่นและมีประสิทธิภาพมากขึ้น
ตรวจสอบรุ่นล่าสุด: และดูว่าคุณสมบัติเหล่านี้สามารถเติมเต็มไปป์ไปป์ไลน์ Generativeai ของคุณได้อย่างไร!
เราได้รับคำถามสองสามข้อเกี่ยวกับสาเหตุที่เราใช้เทียนดังนั้นนี่คือคำอธิบายอย่างรวดเร็ว:
หนึ่งในเหตุผลหลักคือเทียนไม่จำเป็นต้องใช้โมเดลรูปแบบ ONNX ที่เฉพาะเจาะจงซึ่งหมายความว่ามันสามารถทำงานได้อย่างราบรื่นกับรูปแบบใบหน้ากอดใด ๆ ความยืดหยุ่นนี้เป็นปัจจัยสำคัญสำหรับเรา อย่างไรก็ตามเรายังรับรู้ว่าเราได้ประนีประนอมกับความเร็วเล็กน้อยเพื่อให้ได้ความยืดหยุ่นนั้น
ถัดไปคืออะไร? เพื่อแก้ไขปัญหานี้เรารู้สึกตื่นเต้นที่จะประกาศว่าเรากำลังแนะนำเทียน-ออนเน็กซ์พร้อมกับกรอบก่อนหน้าของเราเกี่ยวกับ Hugging-Face
➡รองรับรุ่น GGUF
เรามีความหลากหลายตั้งแต่วันแรกสำหรับโครงสร้างพื้นฐานของเรา เราได้รวมไว้แล้วสำหรับเว็บไซต์รูปภาพและเสียง แต่เราต้องการขยายเพิ่มเติม
☑การฝังกราฟ - สร้าง Deepwalks Embeddings DEPTH ก่อนและคำไปยัง VEC
☑ Video Embedding
☑คลิป yolo
ขณะนี้เรารองรับฐานข้อมูลเวกเตอร์ที่หลากหลายสำหรับการสตรีมมิ่ง Embeddings รวมถึง:
แต่เราไม่ได้หยุดอยู่ที่นั่น! เรากำลังทำงานอย่างแข็งขันเพื่อขยายรายการนี้
ต้องการมีส่วนร่วม? หากคุณต้องการเพิ่มการสนับสนุนสำหรับฐานข้อมูลเวกเตอร์ที่คุณชื่นชอบเรายินดีที่จะได้รับความช่วยเหลือจากคุณ! ตรวจสอบการบริจาคของเรา MD สำหรับแนวทางหรืออย่าลังเลที่จะเข้าถึง [email protected] โดยตรง มาสร้างสิ่งที่น่าอัศจรรย์ด้วยกันกันเถอะ!