Inferencia, ingestión e indexación: ¿sobrealimentado por el óxido?
Explore los documentos »
Ver demostración · Bancos · Adaptadores de transmisión de vectores. Buscar en el espacio de audio
Incrushything es una tubería minimalista, altamente desempeñada, de rayo, liviana, multisorce, multimodal y de incrustación local incorporada con óxido. Ya sea que esté trabajando con texto, imágenes, audio, PDF, sitios web u otros medios, la inclinación optimiza el proceso de generación de incrustaciones de varias fuentes y transmitirlos sin problemas (indexador de memoria eficiente) a una base de datos vectorial. Admite incrustaciones densas, escasas, ONNX y de interacción tardía, ofreciendo flexibilidad para una amplia gama de casos de uso.
La transmisión de vectores le permite procesar y generar integridades para los archivos y transmitirlos, por lo que si tiene 10 GB de archivo, puede generar continuamente incrustaciones por fragmento por fragmento, que puede segmentar semánticamente y almacenarlos en la base de datos de vectores de su elección, por lo tanto, elimina el almacenamiento de incrustaciones de los bultos en RAM a la vez. El proceso de incrustación ocurre separadamente del proceso principal, para mantener habilitado el alto rendimiento por Rust MPSC.
➡️ Ejecución de Faster.
➡️ Gestión de la Memoria: el óxido hace cumplir la gestión de la memoria simultáneamente, evitando fugas de memoria y bloqueos que pueden afectar a otros idiomas
➡️True multithreading
➡️ Running Language Models o Incrustando modelos locales y eficientemente
➡️Candle permite inferencias en las GPU habilitadas para CUDA de inmediato.
➡️ Deciden el uso de la memoria de la incrustación.
Apoyamos cualquier modelo de cara de abrazo en la vela. Y también apoyamos el tiempo de ejecución de ONNX para Bert y 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 )| Modelo | Enlace personalizado |
|---|---|
| Jina | Jinai/Jina-Embeddings-V2-Base-en |
| Jinai/Jina-Embeddings-V2-Small-en | |
| Bert | TRANSFORMADORES DE ARENDIDOS/ALLO MINILM-L6-V2 |
| Transformadores de oración/All-Minilm-L12-V2 | |
| TRANSFORMADORES DE ARENDIDOS/PARAFRASE-MINILM-L6-V2 | |
| Acortar | OPERAI/Clip-Vit-Base-Patch32 |
| Susurro | La mayoría de Operai Whisper desde Huggingface apoyó. |
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
Para GPU y usando modelos especiales como 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 )En primer lugar, gracias por tomarse el tiempo para contribuir a este proyecto. Realmente apreciamos sus contribuciones, ya sean informes de errores, sugerencias de características o solicitudes de extracción. Su tiempo y esfuerzo son muy valorados en este proyecto.
Este documento proporciona pautas y mejores prácticas para ayudarlo a contribuir de manera efectiva. Estos están destinados a servir como directrices, no reglas estrictas. Le recomendamos que use su mejor juicio y se sienta cómodo proponiendo cambios en este documento a través de una solicitud de extracción.
Uno de los objetivos de la incrustación es permitir que los ingenieros de IA usen fácilmente los modelos de incrustación de arte en archivos y documentos típicos. Ya se han logrado mucho aquí y estos son los formatos que apoyamos en este momento y se deben hacer algunos más.
Estamos emocionados de compartir que hemos ampliado nuestra plataforma para admitir múltiples modalidades, que incluyen:
Archivos de audio
Descuento
Sitios web
Imágenes
Videos
Gráfico
¡Esto le brinda la flexibilidad de trabajar con varios tipos de datos en un solo lugar!
Hemos lanzado algunas actualizaciones importantes en la versión 0.3 para mejorar tanto la funcionalidad como el rendimiento. Esto es lo nuevo:
Following semántico: estrategia de fragmentación optimizada para mejor flujos de trabajo de generación de recuperación (trapo) de recuperación (RAG).
Transmisión para una indexación eficiente: hemos introducido la transmisión para la indexación de la memoria eficiente en las bases de datos de vectores. ¿Quieres saber más? Consulte nuestro artículo sobre esta función aquí: https://www.analyticsvidhya.com/blog/2024/09/vector-streaming/
Aplicaciones de disparo cero: explore nuestras demostraciones de aplicación cero de disparo para ver el poder de estas actualizaciones en acción.
Funciones intuitivas: la versión 0.3 incluye un refactor completo para funciones más intuitivas, lo que hace que la plataforma sea más fácil de usar.
Transmisión por fragmento: en lugar de transmisión de archivos por archivo, ahora admitimos la transmisión por fragmento, lo que permite un procesamiento de datos más flexible y eficiente.
Vea el último lanzamiento: y vea cómo estas características pueden sobrealimentar su oleoducto Generativeai!
Hemos recibido bastantes preguntas sobre por qué estamos usando Vandle, así que aquí hay una explicación rápida:
Una de las razones principales es que la vela no requiere modelos de formato ONNX específicos, lo que significa que puede funcionar sin problemas con cualquier modelo de cara abrazada. Esta flexibilidad ha sido un factor clave para nosotros. Sin embargo, también reconocemos que hemos estado comprometiendo un poco a la velocidad a favor de esa flexibilidad.
¿Qué sigue? Para abordar esto, estamos emocionados de anunciar que estamos presentando Candle-onnx junto con nuestro marco anterior en Hugging-Face,
➡️ Soporte para modelos GGUF
Tuvimos multimodalidad desde el primer día para nuestra infraestructura. Ya lo hemos incluido para sitios web, imágenes y audios, pero queremos expandirlo aún más.
☑️ Graph Increding - Construya profundidad de incrustaciones profundas primero y palabra a vec
☑️ Video incrustando
☑️ Yolo Clip
Actualmente admitimos una amplia gama de bases de datos vectoriales para transmitir integrados, que incluyen:
¡Pero no nos estamos deteniendo allí! Estamos trabajando activamente para expandir esta lista.
¿Quieres contribuir? Si desea agregar soporte para su base de datos vectorial favorita, ¡nos encantaría tener su ayuda! Consulte nuestra contribución. MD para obtener pautas, o no dude en comunicarse directamente con [email protected]. ¡Construyamos algo increíble juntos!