CELLFORECAST

Battery Materials Performance Predictor

배터리 소재 조성 → 성능 예측 시뮬레이터 · Hybrid ML + RAG · evidence-based

Hybrid ML + RAG Evidence-based Flask 3 · Python 3.11
chemical-simulator.leanstart.kr
port 9014 · conda py311
3,655
학습 데이터
9
XGBoost 부스터
3
크롤 소스
384
임베딩 차원
Browser · 사용자 입력 TIER 1 · 프론트엔드
조성 입력 패널 sticky · 460px
카테고리 / 소재 계열 조성비 입력 NMC 도넛 차트 듀얼 전압 슬라이더 도펀트 슬롯 ×2 예시 프리셋 5종
결과 패널 full-width · left
예측 카드 ×3 신뢰구간 밴드 모델 카드 근거 논문 ×5 AI 한국어 요약
POST /api/predict · HTTP/JSON
Flask API routes_predict.py · server.py TIER 2 · API
GET
/api/schema
동적 폼 스키마
GET
/api/examples
프리셋 5종
POST ★
/api/predict
ML + RAG 병렬
POST
/api/summarize
LLM 요약
featurize(spec) → 46-col 희소 벡터 · cat one-hot(3) · family(9) · stoich(4) · dopant×2(14) · salt(7) · additive×2(8) · conditions(5)
ThreadPoolExecutor · 병렬 시작
ThreadPool · 동시 실행
ML ENGINE
XGBoost · model.py
피처 벡터화
featurize(spec) → ndarray[46]
XGBoost × 9 분위수 부스터
용량
×3
유지율
×3
수명
×3
objective="reg:quantileerror" · q10/q50/q90
비대칭 불확실성 밴드
예측=q50 · 하한=q10 · 상한=q90
용량 ±12 mAh/g 유지율 ±2.6% 수명 ±153 cyc
RAG ENGINE
FAISS · retrieval.py
3-소스 병렬 크롤
Crossref
DOI
OpenAlex
초록
arXiv
Atom
ThreadPool · timeout 8s · title/DOI dedup
임베딩 + 2단 캐시
all-MiniLM-L6-v2 · 384-dim
Mongo papers upsert → FAISS IndexFlatIP
Top-5 유사 논문
코사인 유사도 · family 일치 +0.05 부스트
초록 스니펫 + DOI + 정규식 근거값 추출
1차 ~27s 2차 ~4s (캐시)
영속 저장 / 로드
영속 저장소 TIER 4 · STORAGE
MongoDB CHEMICAL_SIM
papers — 임베딩 + 요약 캐시
model_meta — 학습 메타
predict_logs — 예측 이력
FAISS Index
papers.faiss
papers_ids.json
IndexFlatIP · L2 정규화 · 인메모리
Model Bundle
model_bundle.joblib
XGBoost ×9 + FEATURE_COLUMNS
lazy 싱글톤 · warmup 스레드
결과 통합 · JSON 응답
결과 렌더링 TIER 1 · 렌더
192.2
mAh/g
초기 용량
q10 / q50 / q90
93.0
%
용량 유지율
q10 / q50 / q90
292
cycles
예상 수명
q10 / q50 / q90
근거 논문 Top-5 · DOI · 유사도 스코어 · 초록 스니펫 · AI 한국어 요약 (LLM + Mongo 캐시)
DATA 데이터 파이프라인 (오프라인)
Seed 데이터 · 55행
cathode 25행 anode 15행 electrolyte 15행
augment.py
3가지 증강 기법
bounded jitter — truncated-normal + BOUNDS 클램프
same-family interpolation — λ∈[0,1] 블렌드
physics-informed target — Ni↑→cap↑/ret↓
train.py · CLI
3,655행 → model_bundle.joblib
55 seed + 3,600 synthetic · provenance 태깅
EXT 외부 서비스 (실시간 호출)
LLM gemma-4-26B-A4B-it
invisiondev.iptime.org:9007/v1
OpenAI 호환 · 초록 → 한국어 3문장 · temp 0.2 · Mongo 캐시
REST Crossref API
api.crossref.org/works · polite mailto
REST OpenAlex API
api.openalex.org/works · abstract_inverted_index
XML arXiv Atom API
export.arxiv.org/api/query · ElementTree
기술 스택
Python 3.11 Flask 3 XGBoost 3.2 FAISS (CPU) sentence-transformers MongoDB Tailwind CSS Watchdog 4.0 pandas scikit-learn requests conda py311
실행 구조 api.py → watchmedo → server.py
코드 수정 → 자동 재시작
캐시 버스터 ?v=mtime · SEND_FILE_MAX_AGE=0
정적 파일 수정 즉시 반영
데이터 투명성 provenance:"synthetic" 태깅
모델 카드 디스클레이머 노출
핵심 설계 결정
XGBoost · 신경망 대신
3,655행 소규모에서 과적합 없이 우수. quantileerror로 불확실성 정량화 — 해석 가능.
FAISS · 벡터 DB 대신
수천 논문 규모에 IndexFlatIP로 충분히 빠름 (≪1ms). 서버 관리 오버헤드 없이 인메모리.
3-소스 병렬 크롤
Crossref(DOI) + OpenAlex(초록) + arXiv(프리프린트) 상호 보완. API 키 불필요.
단일 feature space
양극/음극/전해질 전체가 동일 46-col 희소 벡터 공유. train-serve 패리티 보장.
2단 캐시
Mongo(영속, 임베딩) + FAISS(인메모리, 검색). 동일 조성 2차 ~4s. 재임베딩 방지.
물리 제약 증강
Ni↑→용량↑/유지율↓ 등 전지화학 법칙 반영. validate_row()로 비물리값 리젝트.
시뮬레이터로 돌아가기