ForStream Claude Opus 4.8 commited on
Commit
5454e77
·
1 Parent(s): 7eedd82

Fix 500 on /api/ask: semantic_search TTL 경로 robust 탐색

Browse files

첫 axisB 질문의 KoSimCSE warm-up에서 semantic_search._TTL_PATH가
code의 부모/ontology로 단정 → 컨테이너 /app/ontology(없음) FileNotFoundError
→ 500. 실제 TTL은 /app/active/ontology. main.py는 ONTOLOGY_DIR robust
탐색으로 이미 해결됐으나 semantic_search는 자체 경로를 독립 계산해 누락.

- semantic_search.py: _ONT_DIR 후보 탐색 (ontology / active·ontology / data)
- Dockerfile: CACHE_BUST v2→v3 (COPY code/ 레이어 캐시 무효화)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

Files changed (2) hide show
  1. Dockerfile +1 -1
  2. code/semantic_search.py +15 -5
Dockerfile CHANGED
@@ -39,7 +39,7 @@ RUN pip install --upgrade pip && pip install -r /app/api/requirements.txt
39
 
40
  # 코드 (rag_engine·semantic_search 등 active/code의 핵심 모듈)
41
  # 캐시 무효화용 ARG (commit SHA 다르면 캐시 무효화)
42
- ARG CACHE_BUST=v2
43
  COPY code/ /app/code/
44
  # 백엔드
45
  COPY api/ /app/api/
 
39
 
40
  # 코드 (rag_engine·semantic_search 등 active/code의 핵심 모듈)
41
  # 캐시 무효화용 ARG (commit SHA 다르면 캐시 무효화)
42
+ ARG CACHE_BUST=v3
43
  COPY code/ /app/code/
44
  # 백엔드
45
  COPY api/ /app/api/
code/semantic_search.py CHANGED
@@ -15,11 +15,21 @@ from typing import Optional
15
 
16
  import numpy as np
17
 
18
- # 기본 경로 — rag_engine과 같은 'code/' 디렉토리에 위치 가정
19
- _ROOT = Path(__file__).resolve().parent.parent # active/
20
- _CACHE_DIR = _ROOT / "ontology" / "_embeddings_cache"
21
- _TTL_PATH = _ROOT / "ontology" / "investment_ontology_v1_10.ttl"
22
- _CHUNKS_PATH = _ROOT / "ontology" / "regulations_chunks_v14.jsonl"
 
 
 
 
 
 
 
 
 
 
23
 
24
  MODEL_NAME = os.environ.get("KOSIMCSE_MODEL", "BM-K/KoSimCSE-roberta")
25
 
 
15
 
16
  import numpy as np
17
 
18
+ # 기본 경로 — code/의 형제 ontology/. 단, code/의 위치가 환경마달라서
19
+ # (컨테이너 /app/code → 부모 /app, 로컬 active/code → 부모 active) 부모 기준 단정은 어긋난다.
20
+ # 데이터는 컨테이너 /app/active/ontology, 로컬 active/ontology, hf_app 로컬 hf_app/data 에 존재 → 후보 탐색.
21
+ # (main.py의 ONTOLOGY_DIR 탐색과 동일 철학 — 한쪽만 고치면 경로가 다시 어긋난다.)
22
+ _CODE_DIR = Path(__file__).resolve().parent
23
+ _ONT_DIR = next(
24
+ (p for p in (_CODE_DIR.parent / "ontology",
25
+ _CODE_DIR.parent / "active" / "ontology",
26
+ _CODE_DIR.parent / "data")
27
+ if p.exists()),
28
+ _CODE_DIR.parent / "ontology",
29
+ )
30
+ _CACHE_DIR = _ONT_DIR / "_embeddings_cache"
31
+ _TTL_PATH = _ONT_DIR / "investment_ontology_v1_10.ttl"
32
+ _CHUNKS_PATH = _ONT_DIR / "regulations_chunks_v14.jsonl"
33
 
34
  MODEL_NAME = os.environ.get("KOSIMCSE_MODEL", "BM-K/KoSimCSE-roberta")
35