|
|
3 weeks ago | |
|---|---|---|
| .. | ||
| Kontekstid.md | 3 weeks ago | |
| Projekti kirjeldus.md | 3 weeks ago | |
| README.md | 3 weeks ago | |
| Vastused - factor analysis.md | 3 weeks ago | |
Streamlit-põhine lokaalne rakendus teadusartiklite RAG (Retrieval-Augmented Generation) töötluseks.
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
pip install -U langchain-chroma
pip install --upgrade --force-reinstall pymupdf
rag-articles/
├── cli/ # CLI-skriptid artiklite laadimiseks, vektoriseerimiseks jms
│ ├── load_articles.py
│ ├── build_index.py
│ ├── rag_cli.py
│ └── ...
│
├── ingest/ # Artiklite import, töötlemine ja tõlge
│ ├── arxiv_loader.py
│ ├── openai_translate.py
│ └── keyword_extraction.py
│
├── db/ # PostgreSQL andmebaasi skeem
│ └── init_db.py
│
├── streamlit_rag_ui.py # Streamlit kasutajaliides RAG-päringuteks
├── rag_local_demo.py # Kohalik RAG-testi skript
├── static/ # PDF-failid ja muud staatilised andmed
├── requirements.txt
├── .env # Keskkonnamuutujad (nt OpenAI API võti)
└── activate_venv.sh # Mugav skript virtuaalkeskkonna aktiveerimiseks
Käivita db/init_db.py andmebaasi skeemi loomiseks.
# 1. Laadi artiklid Arxivist või DOI kaudu
python -m cli.load_articles --query "traffic volume" --limit 5
python -m cli.load_article_by_doi --doi 10.1016/j.jtrangeo.2013.07.008
# Seo pdf-ga
python -m cli.auto_link_pdf_by_doi --doi 10.1016/j.jtrangeo.2013.07.008 --pdf static/pdfs/1-s2.0-S0966692313001361-main.pdf
# 2. Laadi PDF-id ja salvesta tekst + märksõnad. Viimane versioon kirjutab tulemuse documents.pkl faili
python -m cli.load_texts_from_pdfs
# 3. Tõlgi kokkuvõtted eesti keelde
python -m cli.translate_summaries
# 4. Ehita vektorindeks (Chroma)
python -m cli.build_index
# 5. Kasuta CLI-s RAG-päringuteks
python -m cli.rag_cli --question "What is Poisson distribution?"
# 6. Kontrolli indekseerimist ja indekseeri puuduvad artiklid
python -m cli.check_index_status
python -m cli.index_missing_articles
python -m cli.link_pdf_to_article --id 36 --pdf static/pdfs/1-s2.0-S0966692313001361-main.pdf
python -m cli.auto_link_pdf_by_doi --doi 10.1016/j.jtrangeo.2013.06.011 --pdf static/pdfs/1-s2.0-S096669231300121X-main.pdf
python -m cli.import_dois_from_csv --csv import/imporditavate_doi_failide_nimekiri.csv
CSV-fail peaks olema kujul:
doi,pdf
10.1016/j.trd.2022.103425,static/pdfs/nimi.pdf
10.1016/j.jtrangeo.2013.07.008,static/pdfs/teine.pdf
# Lihtne päring:
python -m cli.arxiv_query_builder --topic "transport" --keywords "traffic flow" "local roads" --limit 5
# Keerulisem:
python -m cli.arxiv_query_builder --topics "traffic modeling" "urban mobility" --keywords "vehicle count" --field all --limit 10
| Käsk | Kirjeldus |
|---|---|
arxiv_query_builder |
|
auto_link_pdf_by_doi |
Seob DOI artikliga käsitsi allalaetud PDF-i |
build_index |
Loob Chroma vektorbaasi tekstide põhjal |
check_index_status |
Kontrollib, millised artiklid on indekseeritud |
cleanup_keywords |
|
import_doi_pdf_csv |
|
import_dois_from_csv |
Laeb mitu DOI artiklit CSV failist |
index_missing_articles |
Indeekseerib puuduolevad artiklid |
link_pdf_to_article |
Seob käsitsi PDF faili olemasoleva artikliga |
load_article_by_doi |
Laeb DOI alusel artikli CrossRef API-st |
load_articles |
Laeb artiklid Arxivist andmebaasi |
load_texts_from_pdfs |
Ekstraktib teksti ja märksõnad PDF-idest |
rag_cli |
Küsimuste esitamine CLI kaudu |
translate_summaries |
Tõlgib kokkuvõtted eesti keelde |
| Käsk | Kirjeldus |
|---|---|
python -m cli.load_articles --query "climate change" --limit 5 |
Laeb artiklid arXivist |
python -m cli.load_article_by_doi --doi 10.1016/j.jtrangeo.2013.07.008 |
Laeb artikli DOI alusel |
python -m cli.link_pdf_to_article --id 36 --pdf static/pdfs/nimi.pdf |
Seob PDF-i artikliga |
python -m cli.build_index |
Loob Chroma vektorindeksi artiklite tekstist |
python -m cli.index_missing_articles |
Indeveerib puuduva tekstiga artiklid |
python -m cli.translate_summaries |
Tõlgib kokkuvõtted eesti keelde |
python -m cli.check_index_status |
Kuvab, millised artiklid on indekseerimata |
python -m cli.import_dois_from_csv --csv import/fail.csv |
Laeb mitu DOI + PDF paari CSV alusel |
streamlit run streamlit_rag_ui.py
Avaneb brauseris: http://localhost:8501
Pärast artikli valimist kuvatakse:
Streamlitis saab ka esitada päringuid valitud artikli kohta ning vaadata eelnevaid küsimusi ja vastuseid logivormis.
| Vaade | Kirjeldus |
|---|---|
![]() |
Vali artikkel ja vaata kokkuvõtet |
![]() |
Esita küsimus artikli kohta |
![]() |
Ava või laadi alla seotud PDF |
![]() |
Filtreeri küsimuste logi kuupäeva ja märksõna järgi |
activate_venv.sh)#!/bin/bash
cd "$(dirname "$0")"
source .venv/bin/activate
Seejärel:
source activate_venv.sh
Projektil on Pytest konfiguratsioon:
pytest
Käivita ainult üks konkreetne testfail:
pytest tests/test_keywords.py
# Vea korral käivita
python -m cli.cleanup_keywords
pytest tests/test_article_completeness.py
pytest tests/test_load_articles.py
pytest tests/test_pdf_linking.py
pytest tests/test_import_dois_from_csv.py
pytest tests/test_translate_summaries.py
pytest tests/test_build_index.py
pytest tests/test_rag_cli.py
# Ei ole korras
pytest tests/test_load_article_by_doi.py
pytest tests/
pytest tests/
Käivita test koos logidega (vajalik veatuvastusel):
pytest -s -v
| Failinimi | Kirjeldus |
|---|---|
test_keywords.py |
Kontrollib, et artiklite märksõnad oleksid unikaalsed ja mitte tühjad. |
test_load_articles.py |
Lisab testartikli andmebaasi ja kontrollib selle olemasolu. Testi lõpus eemaldab andmed. |
test_pdf_linking.py |
Kontrollib, et PDF-failid oleksid lingitud static/pdfs/ kausta ja olemas kettal. Samuti testib teksti salvestamist PDF-ist. |
test_article_completeness.py |
Kontrollib, kas kõik artiklid andmebaasis omavad olulisi veerge (nt title, text, summary). |
conftest.py |
Sisaldab db_engine fixture’it – loob ühenduse PostgreSQL andmebaasiga kõikide testide jaoks. |