abstracts-search est un projet sur l'indexation de 95 millions de publications académiques dans un seul moteur de recherche sémantique. La méthode derrière lui est de prendre les résumés publics disponibles dans l'ensemble de données Openalex et de générer des intégres à l'aide du modèle all-MiniLM-L6-v2 fourni par les transformateurs de phrase.
Le projet est divisé en trois référentiels:
abstracts-search : Hosts build.py et train.py , les scripts d'incorporation et d'indexation respectivementabstracts-embeddings : Hôte The Raw Embeddings (publié sous CC0) comme un ensemble de données de visage étreintabstracts-index : héberge l'index et app.py , l'interface de recherche, comme un espace facial étreint (également publié sous CC0)Toutes les données associées aux publications (titres, résumés, auteurs, etc.) ne sont pas fournies par ce projet. Au contraire, il ne contient que des incorporations étiquetées avec des ID Openalex, et les ID sont utilisés pour récupérer ces données de l'API Openalex. Une connexion Internet est donc toujours nécessaire. Pourtant, l'exécution de la recherche sémantique localement peut être souhaitable.
Si tel est le cas, le seul référentiel qui doit être cloné est 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
Tout le bâtiment a été effectué sur une machine avec 16 Go de RAM (plus 16 Go de swap), un RTX 2060 6 Go et un disque de grattage de 1 To, donc cela pose les exigences minimales pour l'instant.
Il existe deux façons de construire l'index: à partir des abstracts-embeddings (recommandés) ou du seau Openalex S3.
Pour construire à partir de abstracts-embeddings , assurez-vous que conda et gcc-12 sont disponibles:
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
Si vous cherchez à construire à partir du seau Openalex S3, vous pouvez également être intéressé à conserver l'histoire du GIT. Encore une fois, assurez-vous que conda et gcc-12 sont disponibles.
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