Inferência, ingestão e indexação - sobrecarregadas pela ferrugem?
Explore os documentos »
Visualize Demo · Bancos · Adaptadores de streaming de vetores. Pesquise no espaço de áudio
A incorporação é um pipeline minimalista, de altamente performante, rápido, leve, leve, multisource, multimodal e de incorporação local construído em ferrugem. Esteja você trabalhando com texto, imagens, áudio, PDFs, sites ou outras mídias, incorporar tudo otimizar o processo de geração de incorporações de várias fontes e transmitindo perfeitamente (indexação eficiente de memória) para um banco de dados vetorial. Ele suporta incorporações densas, escassas, ONNX e interações tardias, oferecendo flexibilidade para uma ampla gama de casos de uso.
O streaming de vetores permite processar e gerar incorporação para arquivos e transmiti -los; portanto, se você tiver 10 GB de arquivo, ele poderá gerar continuamente a incorporação por pedaços, que você pode segmentar semanticamente e armazená -los no banco de dados de vetores de sua escolha, elimina o armazenamento incorporado em alta. O processo de incorporação acontece separadamente do processo principal, de modo a manter o alto desempenho ativado pelo Rust MPSC.
Execution Execução.
Ganagem
➡️Tue multithreading
Modelos de idiomas que runnam ou modelos de incorporação local e eficientemente
➡️Candle permite inferências em GPUs habilitadas para CUDA imediatamente.
➡️Decrease O uso da memória da incorporação.
Apoiamos quaisquer modelos de face de abraços na vela. E também apoiamos o tempo de execução do ONNX para Bert e 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 | Link personalizado |
|---|---|
| Jina | Jinaai/Jina-Embeddings-V2-Base-en |
| Jinaai/Jina-Embeddings-V2-Small-en | |
| Bert | Sentença-Transformers/Minilm-L6-V2 |
| Sentença-Transformers/Minilm-L12-V2 | |
| Sentença-transformadores/parafrase-minilm-l6-V2 | |
| Grampo | OpenAI/Clip-Vit-Base-Patch32 |
| Sussurrar | A maioria dos sussurros do Hugging SFACH SUPORTADA. |
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 GPUs e usando modelos especiais 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 )Primeiro de tudo, obrigado por reservar um tempo para contribuir com este projeto. Nós realmente apreciamos suas contribuições, sejam relatórios de bugs, sugestões de recursos ou solicitações de puxar. Seu tempo e esforço são altamente valorizados neste projeto.
Este documento fornece diretrizes e melhores práticas para ajudá -lo a contribuir com eficiência. Eles são destinados a servir como diretrizes, não regras rigorosas. Incentivamos você a usar seu melhor julgamento e se sentir à vontade para propor alterações neste documento por meio de uma solicitação de tração.
Um dos objetivos da incorporação é permitir que os engenheiros de IA usem facilmente modelos de incorporação de última geração em arquivos e documentos típicos. Muito já foi realizado aqui e esses são os formatos que apoiamos agora e mais alguns precisam ser feitos.
Estamos empolgados em compartilhar que expandimos nossa plataforma para suportar várias modalidades, incluindo:
Arquivos de áudio
Marcadas
Sites
Imagens
Vídeos
Gráfico
Isso oferece a flexibilidade de trabalhar com vários tipos de dados em um só lugar!
Nós lançamos algumas atualizações importantes na versão 0.3 para melhorar a funcionalidade e o desempenho. Aqui está o que há de novo:
Chunking semântica: estratégia de chunking otimizada para melhordos de trabalho de geração de recuperação de recuperação (RAG).
Streaming para indexação eficiente: Introduzimos o streaming para indexação com eficiência de memória em bancos de dados vetoriais. Quer saber mais? Confira nosso artigo sobre este recurso aqui: https://www.analyticsvidhya.com/blog/2024/09/vector-streaming/
Aplicativos zero-tiro: Explore nossas demonstrações de aplicativos zero-tiro para ver o poder dessas atualizações em ação.
Funções intuitivas: a versão 0.3 inclui um refattor completo para funções mais intuitivas, facilitando o uso da plataforma.
Streaming Chunkwise: em vez de streaming de arquivo por arquivo, agora suportamos o streaming Chunkwise, permitindo um processamento de dados mais flexível e eficiente.
Confira o lançamento mais recente: e veja como esses recursos podem sobrecarregar seu pipeline GenerativeAi!
Recebemos algumas perguntas sobre por que estamos usando vela, então aqui está uma explicação rápida:
Uma das principais razões é que a vela não requer modelos específicos de formato ONNX, o que significa que pode funcionar perfeitamente com qualquer modelo de rosto abraçado. Essa flexibilidade tem sido um fator -chave para nós. No entanto, também reconhecemos que estamos comprometendo um pouco a velocidade em favor dessa flexibilidade.
O que vem a seguir? Para abordar isso, estamos animados em anunciar que estamos apresentando o Candle-NX junto com nossa estrutura anterior sobre Hugging-Face,
➡️ Suporte para modelos GGUF
Tivemos multimodalidade desde o primeiro dia para nossa infraestrutura. Já o incluímos para sites, imagens e áudios, mas queremos expandi -lo ainda mais.
☑️Graph Incorporação - Construa a profundidade das incorporações de Deepwalks primeiro e a palavra para VEC
☑️Video Incorporação
☑️ CLIP YOLO
Atualmente, apoiamos uma ampla gama de bancos de dados de vetores para transmitir incorporações, incluindo:
Mas não estamos parando por aí! Estamos trabalhando ativamente para expandir esta lista.
Quer contribuir? Se você quiser adicionar suporte ao seu banco de dados vetorial favorito, gostaríamos de ter sua ajuda! Confira nossa contribuição. Vamos construir algo incrível juntos!