NODA Engine v0.1.0

한글·PDF·스캔 공문서를 정확히 읽어 근거가 붙은 조각으로 LLM 에게 넘기는 RAG 바탕 엔진. 답을 짓는 LLM 과 지시문은 당신의 것 — 엔진은 문서가 스스로 적은 것만 내고, 못 읽으면 못 읽었다고 말한다.

30초 만에

curl -s https://서버/health
curl -s https://서버/parse -H "Authorization: Bearer $KEY" \
     -H 'X-Filename: %EA%B3%B5%EA%B3%A0.hwpx' --data-binary @공고.hwpx     # 파일 → 계약의 JSON
curl -s https://서버/context -H "Authorization: Bearer $KEY" -H 'Content-Type: application/json' \
     -d '{"tenant":"갑","query":"신청기간은?","budget":4000}'                # 질문 → LLM 에게 넘길 근거 묶음

HWPX · HWP · PDF(글자층·스캔) · DOCX · XLSX · XLS · PPTX · PNG · JPG · TIF. 못 읽는 파일도 200 — JSON 의 access.reason 이 까닭이다.

세 길 — 어디까지 가져가나

① 읽기만POST /parse · POST /chunk
문서 JSON과 조각(쪽·좌표·칸 주소가 붙는다). 벡터 DB·검색기·LLM 은 당신 것.
② 찾기까지/documents/upload · /context
테넌트에 문서를 넣고, 질문마다 번호 붙은 근거 묶음을 받아 프롬프트에 붙인다.
③ 답까지POST /answer · /view
발췌 답(지어내지 않음) 또는 인용을 검증하는 게이트웨이. 근거를 원문 위에 칠해 보여 준다.

엔드포인트

길받는 것주는 것
GET /health—살아 있는가 · 포맷 · 엔드포인트 · 키 여부 · 상한 · 요청 제한
POST /parse파일 바이트 + X-Filename문서 JSON (계약)
POST /chunk같음 · ?budget=문서 + 조각
POST /documents/upload · DELETE /documents?tenant= + 파일테넌트에 넣고 바로 읽은 상태 · 뺀다 (키 있는 서버만)
GET /documents?tenant=무엇이 들어와 있고 무엇을 못 읽었나 · 서식 칸(발신·수신·시행일)
POST /context{tenant, query, budget?}LLM 에게 넘길 근거 묶음 ([n] 번호 · 출처 · 쪽)
POST /search · /answer{tenant, query}조각 + 인용 근거 · 발췌 답
GET /try브라우저키 없이 파일을 올려 보는 체험 화면 (저장 안 함)
GET /openapi.json · /usage—OpenAPI 3 명세 · 소비자별 사용량 (키 있는 서버만)

키: Authorization: Bearer <키> 또는 X-API-Key. 소비자가 여럿이면 키 파일로 가른다. 명세는 openapi.json, 자세한 계약은 api.md, 쓰는 법은 rag.md, 에이전트에 도구로 붙이려면 mcp.md(MCP), 띄우는 법은 deploy.md.

어디까지 믿어도 되나 — 점수판에서 그대로

문서 1,488건 · 사람이 붙인 정답 라벨 369건 — 「목표 달성」은 「그 라벨들에서 맞았다」는 뜻이고 고객 문서의 숫자는 다르다.

표 구조 (TEDS)0.905표본 70
공문 구조 — 제목·조항·붙임0.909표본 187
공문 발행 정보 — 문서번호·시행일·발신0.934표본 67
공문 수신 — 수신·수신자 목록0.989표본 55
읽기 순서 (디지털)0.984표본 46
스캔 글자 오차 (낮을수록 좋다 · 알려진 공백)0.186표본 54

자세한 것은 고객에게 주는 한 장. 스캔 글자 오차는 목표(0.164)에 못 미치는 알려진 공백이고 목표를 내리지 않는다.

써 보기

문서를 올려 보기 — 키 없이 파일 하나를 올려 엔진이 읽은 글·표·서식 칸·붙임과 「확인할 자리」를 그 자리에서 본다 (저장하지 않는다).

데모 한 장 — 테넌트의 문서에 물어보고 근거를 원문 위에서 본다. 엔진은 아무것도 바깥으로 보내지 않는다 (LLM 을 켜면 그때만, 어디로 가는지 /health 가 말한다).