abstracts-search ist ein Projekt zur Indexierung von 95 Millionen akademischen Veröffentlichungen in eine einzelne semantische Suchmaschine. Die Methode dahinter besteht darin, die öffentlich verfügbaren Abstracts im Openalex-Datensatz einzunehmen und Emetten mit dem von Satztransformen bereitgestellten all-MiniLM-L6-v2 Modell zu generieren.
Das Projekt ist in drei Repositories aufgeteilt:
abstracts-search : Hosts build.py und train.py , die Einbettungs- und Indexierungsskripte jeweilsabstracts-embeddings : Hosts die Roheinbettungen (unter CC0 veröffentlicht) als Umarmungs-Gesichtsdatensatzabstracts-index : Host den Index und die app.py , die Suchschnittstelle, als Umarmungsfläche (ebenfalls unter CC0 veröffentlicht)Alle Daten, die mit den Veröffentlichungen (Titel, Abstracts, Autoren usw.) verbunden sind, werden von diesem Projekt nicht bereitgestellt. Vielmehr enthält es nur Einbettungen, die mit Openalex -IDs gekennzeichnet sind, und die IDs werden verwendet, um diese Daten von der OpenALEX -API zu holen. Eine Internetverbindung wird daher immer benötigt. Dennoch kann es wünschenswert sein, die semantische Suche vor Ort auszuführen.
Wenn dies der Fall ist, ist das einzige Repo, das kloniert werden muss 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
Das gesamte Gebäude wurde auf einer Maschine mit 16 GB RAM (plus 16 GB Swap), einem RTX 2060 6 GB und einer 1 -TB -Scratch -Scheibe durchgeführt, sodass dies vorerst die Mindestanforderungen erfüllt.
Es gibt zwei Möglichkeiten, den Index zu erstellen: aus den abstracts-embeddings (empfohlen) oder aus dem Openalex S3-Eimer.
Stellen Sie sicher, dass conda und gcc-12 aus abstracts-embeddings aufgebaut sind:
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
Wenn Sie aus dem Openalex S3 -Eimer bauen möchten, sind Sie möglicherweise auch daran interessiert, die Git -Geschichte beizubehalten. Stellen Sie erneut sicher, dass conda und gcc-12 verfügbar sind.
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