abstracts-search es un proyecto sobre la indexación de 95 millones de publicaciones académicas en un solo motor de búsqueda semántica. El método detrás es tomar los resúmenes disponibles públicamente en el conjunto de datos de OpenAlex y generar integridades utilizando el modelo all-MiniLM-L6-v2 proporcionado por los transformadores de oraciones.
El proyecto se divide en tres repositorios:
abstracts-search : hosts build.py y train.py , los scripts de incrustación e indexación respectivamenteabstracts-embeddings : aloja los incrustaciones sin procesar (lanzadas en CC0) como un conjunto de datos de la cara abrazadaabstracts-index : aloja el índice y app.py , la interfaz de búsqueda, como un espacio facial de abrazos (también lanzado en CC0)Este proyecto no proporciona todos los datos asociados con las publicaciones (títulos, resúmenes, autores, etc.). Más bien, solo contiene incrustaciones etiquetadas con IDS OpenAlex, y las ID se utilizan para obtener esos datos de la API de OpenAxex. Por lo tanto, siempre se necesita una conexión a Internet. Aún así, ejecutar la búsqueda semántica localmente puede ser deseable.
Si ese es el caso, el único repositorio que debe ser clonado es 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 el edificio se realizó en una máquina con 16 GB de RAM (más de 16 GB de intercambio), un RTX 2060 6GB y un disco de rascar de 1 tb, por lo que esto plantea los requisitos mínimos por ahora.
Hay dos formas de construir el índice: a partir de los abstracts-embeddings (recomendadas) o desde el cubo de OpenAxex S3.
Para construir desde abstracts-embeddings , asegúrese de que conda y gcc-12 estén 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 está buscando construir desde el cubo OpenAlex S3, también puede estar interesado en retener la historia de GIT. Nuevamente, asegúrese de que conda y gcc-12 estén 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