incorpingdingCache
Recupere as incorporações de texto, mas cache -as localmente se já as calculamos.
Motivação
Se você estiver executando um punhado de tarefas diferentes de PNL ou tiver um único pipeline de NLP que você continua ajustando, provavelmente não deseja recomputar incorporações. Por isso, nós os cache.
Investir rápido
pip install embeddingcache
from embeddingcache.embeddingcache import get_embeddings
embeddings = get_embeddings(
strs=["hi", "I love Berlin."],
embedding_model="all-MiniLM-L6-v2",
db_directory=Path("dbs/"),
verbose=True,
)
Pressupostos de projeto
Usamos o SQLITE3 para cache incorporados. [Isso pode ser adaptado facilmente, pois usamos o sqlalchemy.]
Assumimos cargas pesadas de leitura, com um escritor simultâneo. (No entanto, tentamos novamente em falhas de gravação.)
SHARD SQLITE3 em dois bancos de dados: hashstring.db: tabela de hashstring. Cada linha é um hash SHA512 (exclusivo e primário) para texto (também exclusivo). Ambos os campos são indexados.
[incorpingding_model_name] .db: tabela de incorporação. Cada linha é um hash SHA512 (exclusivo, chave primária) para um vetor Numpy (float32) de 1 aNIM, que serializamos para a mesa como bytes.
Instruções do desenvolvedor
pre-commit install
pip install -e .
pytest
PENDÊNCIA
- Atualize pyProject.toml
- Adicione testes
- Considere outras funções de hash?
- Suporte Float32 e Float64
- Considere adicionar joblib opcional para armazenamento em cache?
- Diferentes maneiras de calcular incorporações (por exemplo, usando uma API) em vez de localmente
- Backup s3 e/ou
- Wal
- Litestream
- Representar em erros de gravação
- Outros back -ends de banco de dados
- Melhores práticas: dê um número específico de versão do OpenAI.
- Rocksdb / rocksdb-cloud?
- Inclua o nome do modelo em banco de dados para verificação de sanidade no slugify.
- Validar no tamanho da matriz Numpy.
- Validar tamanho do blob para hashes.
- Adicione bibliotecas opcionais como o OpenAI e Sentews-Transformers
- Considere também outros provedores de incorporação, por exemplo, Coere
- E Libs apenas para desenvolvedores
- Considere o max_length de cada texto para incorporar, avisar se excedermos
- pdoc3 e/ou esfinge
- Normalize as incorporações por padrão, mas adicione a opção
- Opção para retornar os tensores da tocha
- Considere reutilizar a mesma conexão de banco de dados em vez de criá -la do zero sempre.
- Adicionar parâmetro batch_size?
- Verificação de teste para colisões
- Use o registro não é uma saída detalhada.
- Reescrever usando classes.
- Corrigir DependBot.
- Não continue reutilizando a sessão de banco de dados, armazenam-a na classe ou global
- SECO.
- Sugerir para usar o modelo OpenAI de versão em versão
- Adicione o dispositivo aos transformadores de frases
- Permitir fast_sentence_transformers
- Teste que as coisas funcionam se houver strings duplicados
- Remova o DBS após o teste
- Temos que ter a incorporação aninhada.
- Escudos de qualidade de codecov e código