LEXICAL INDEXING
How it’s built
v1.0 · 2026-10-27
Method
- 정적 HTML·CSS·JavaScript로 구성한다. 입력 변경 계산은 Web Worker에서 실행한다. 기본 입력의 표와 SVG는 같은 엔진으로 미리 계산해 HTML에 넣었다. 언어·테마·글자 크기를 바꿔도 계산 모델은 같다.
- 브라우저 모델 학습 없음. 준비 단계에서 TF-IDF→SVD를 적합했다. NumPy 2.3.5 · scikit-learn 1.8.0 · PyMuPDF 1.26.6 · KaTeX 0.16.11.
- 본문 초안 작성 보조: GPT-6. 실습 실행 중 LLM 호출 없음.
- 1 Retrieval Tokenization — 단어형·n-gram·혼합 모드를 바꾸고 빈도가 높은 특징을 비교한다. 이 선택기는 특징 생성 원리만 바꾸며 전체 검색 색인은 혼합 규칙으로 고정되어 있다.
- 2 Inverted Index — 질의를 바꾸고 표시한 앞 8개 특징의 DF·합집합·교집합을 비교한다. 한글 n-gram을 모두 AND로 묶었을 때 후보가 지나치게 줄어드는지도 살펴본다.
- 3 TF-IDF — 조문과 질의를 바꾸며 TF=0인 특징, 흔한 특징, 드문 특징을 비교한다. 가중치가 0인 특징이 왜 생겼는지 원문과 연결한다.
- 4 BM25 — k₁과 b를 바꾸고 상위 문서·점수·원문을 함께 비교한다. 순위가 달라졌다는 사실과 정답이 더 잘 검색되었다는 평가는 분리한다.
Data
- 사용자가 첨부한 2026-03-02 시행본 PDF 168쪽에서 712개 레코드를 만들었다. 검색은 조문과 별표·부칙 레코드 단위이며 청킹 탭은 분할 원리를 별도로 실험한다. TF-IDF 어휘 3,000개와 시드 42로 32차원 LSA를 만들었다. 계산 데이터 4.55 MB와 원본 PDF 2.80 MB를 공통 폴더에 둔다.
- 공개 법령 원문 + 작성한 관련성 라벨 12개 + 범위 밖 질의 2개. 문서 접근 등급·공격 문자열·질의 변형은 합성 입력이다.
- 입력은 앱 저장소에 보관하지 않는다. 상태 URL에는 실습 값이 포함되며 테마·글자 크기는 localStorage에 저장한다.
Validation
- 수식은 BM25·RRF·코사인·순위 지표의 정의와 독립 계산값을 대조한다. 시드 재현성·경계 입력·상태 직렬화·인용 추적·로컬 파일 연결은 소스 검증 스크립트로 확인한다. 공개 데이터에 붙인 관련성 라벨과 접근 등급은 작성자가 만든 설명용 예시다.
- 18개 계산·구조 검증 항목과 기본·최소·최대 입력 108개를 통과했다. BM25 수작업 예제, RRF 합산, 순위 지표, SHA-256 일치와 시드 재현을 포함한다.
Scope
- Knowledge Base 구축 기술을 다루며 OSH 안전 규정 해설은 별도 영역이다. 이 구현은 실제 LSA·BM25 계산을 사용한다. OCR, 신경망 임베딩, 생성형 답변, HNSW, 운영 인증 서버는 실행하지 않는다. RAG 탭은 근거 선택·컨텍스트 조립·인용·보류 기준을 다룬다.
- Retrieval Tokenization: 조문 ID ≤300 characters, 분석 방식 word / ngram / mixed
- Inverted Index: 검색 질의 · 한국어 원문 ≤300 characters
- TF-IDF: 조문 ID ≤300 characters, 검색 질의 · 한국어 원문 ≤300 characters
- BM25: 검색 질의 · 한국어 원문 ≤300 characters, 검색 깊이 k 1–20 , k₁ 0–3 , b 0–1
Sources
- scikit-learn · Feature extraction
- Unicode · UAX #15: Unicode Normalization Forms
- Robertson & Zaragoza · The Probabilistic Relevance Framework: BM25 and Beyond (2009)
- 실습 코퍼스 · 첨부 PDF와 추출 레코드
- 법령 본문: 대한민국 저작권법 제7조의 보호받지 못하는 저작물. 첨부 시행본을 그대로 보존한다.
- NumPy · BSD-3-Clause; scikit-learn · BSD-3-Clause; PyMuPDF · AGPL-3.0 (preparation only); KaTeX · MIT (CDN)
History
- 2026-10-27 · v1.0 · 공개