abstracts-search é um projeto sobre a indexação de 95 milhões de publicações acadêmicas em um único mecanismo de busca semântica. O método por trás dele é pegar os resumos publicamente disponíveis no conjunto de dados OpenALEX e gerar incorporações usando o modelo all-MiniLM-L6-v2 fornecido pelos transformadores de sentença.
O projeto é dividido em três repositórios:
abstracts-search : hosts build.py e train.py , os scripts de incorporação e indexação, respectivamenteabstracts-embeddings : hospeda os incorporados RAW (lançado em CC0) como um conjunto de dados de face abraçadoabstracts-index : hospeda o índice e app.py , a interface de pesquisa, como um espaço de rosto abraçado (também lançado no CC0)Todos os dados associados às publicações (títulos, resumos, autores etc.) não são fornecidos por este projeto. Em vez disso, ele contém apenas incorporações rotuladas com IDs OpenALEX, e os IDs são usados para buscar esses dados da API OpenALEX. Uma conexão com a Internet é, portanto, sempre necessária. Ainda assim, executar a pesquisa semântica localmente pode ser desejável.
Se for esse o caso, o único repositório que precisa ser clonado é abstracts-index :
git lfs install
git clone https://huggingface.co/spaces/colonelwatch/abstracts-index
cd abstracts-index
pip3 install -r requirements.txt
python3 app.py
Todo o edifício foi feito em uma máquina com 16 GB de RAM (mais swap de 16 GB), um RTX 2060 6 GB e um disco de arranhões de 1 TB, então isso representa os requisitos mínimos por enquanto.
Existem duas maneiras de construir o índice: a partir dos abstracts-embeddings (recomendados) ou do balde OpenALEX S3.
Para construir a partir de abstracts-embeddings , verifique se conda e gcc-12 estão disponíveis:
git lfs install
git clone https://github.com/colonelwatch/abstracts-search
env CC=gcc-12 conda env create -f environment.yml
conda activate abstracts-search
git submodule update --init abstracts-embeddings
cd abstracts-embeddings
cat embeddings_*.memmap > embeddings.memmap
cd ..
env GIT_LFS_SKIP_SMUDGE=1 git submodule update --init abstracts-index
python train.py
Se você deseja construir a partir do balde OpenALEX S3, também pode estar interessado em manter o histórico do GIT. Novamente, verifique se conda e gcc-12 estão disponíveis.
git lfs install
git clone https://github.com/colonelwatch/abstracts-search
env CC=gcc-12 conda env create -f environment.yml
conda activate abstracts-search
env GIT_LFS_SKIP_SMUDGE=1 git submodule update --init abstracts-embeddings
rm abstracts-embeddings/embeddings_*.memmap
rm abstracts-embeddings/openalex_ids.txt
python build.py
env GIT_LFS_SKIP_SMUDGE=1 git submodule update --init abstracts-index
python train.py