starfriend commited on
Commit
c5bf3cc
·
verified ·
1 Parent(s): 881aff7

Upload app.py

Browse files
Files changed (1) hide show
  1. metadata_search/app.py +52 -0
metadata_search/app.py CHANGED
@@ -10,6 +10,58 @@ from dotenv import load_dotenv
10
 
11
  load_dotenv(override=True)
12
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
13
  from flask import Flask, jsonify, request, send_from_directory
14
 
15
  from metadata_search.chat_api import chat_payload, get_papers_payload
 
10
 
11
  load_dotenv(override=True)
12
 
13
+ # ---------------------------------------------------------------------------
14
+ # Hugging Face Dataset bootstrap
15
+ # Download only the search-critical metadata + Qdrant index at startup.
16
+ # The large PDFs/Summary/Figures assets are intentionally NOT downloaded here.
17
+ # ---------------------------------------------------------------------------
18
+ def _bootstrap_search_data() -> None:
19
+ if os.getenv("WATERSCOPE_DATA_BOOTSTRAP", "1").lower() not in {"1", "true", "yes"}:
20
+ return
21
+
22
+ from huggingface_hub import snapshot_download
23
+
24
+ repo_id = os.getenv(
25
+ "WATERSCOPE_DATASET_REPO",
26
+ "EnvironmentalAI/WaterScopeAI-Data",
27
+ ).strip()
28
+ data_root = Path(
29
+ os.getenv("WATERSCOPE_DATA_ROOT", "/tmp/waterscope-data")
30
+ ).resolve()
31
+ data_root.mkdir(parents=True, exist_ok=True)
32
+
33
+ print(f"[bootstrap] Loading search data from {repo_id}")
34
+ snapshot_download(
35
+ repo_id=repo_id,
36
+ repo_type="dataset",
37
+ local_dir=str(data_root),
38
+ allow_patterns=[
39
+ "metadata/papers.csv",
40
+ "metadata_search_data/qdrant/**",
41
+ "metadata_search_data/qdrant_manifest.json",
42
+ ],
43
+ )
44
+
45
+ paper_csv = data_root / "metadata" / "papers.csv"
46
+ qdrant_path = data_root / "metadata_search_data" / "qdrant"
47
+ qdrant_manifest = data_root / "metadata_search_data" / "qdrant_manifest.json"
48
+
49
+ if not paper_csv.is_file():
50
+ raise RuntimeError(f"Dataset bootstrap did not produce papers.csv: {paper_csv}")
51
+ if not qdrant_path.is_dir():
52
+ raise RuntimeError(f"Dataset bootstrap did not produce Qdrant directory: {qdrant_path}")
53
+
54
+ # Set these before importing metadata_search.config/search modules.
55
+ os.environ["PAPER_CSV"] = str(paper_csv)
56
+ os.environ["METADATA_QDRANT_PATH"] = str(qdrant_path)
57
+ os.environ["METADATA_QDRANT_MANIFEST"] = str(qdrant_manifest)
58
+
59
+ print(f"[bootstrap] PAPER_CSV={paper_csv}")
60
+ print(f"[bootstrap] METADATA_QDRANT_PATH={qdrant_path}")
61
+
62
+
63
+ _bootstrap_search_data()
64
+
65
  from flask import Flask, jsonify, request, send_from_directory
66
 
67
  from metadata_search.chat_api import chat_payload, get_papers_payload