DB 구조 설계와 테스트 결과
이 문서는 말씀선집 GraphRAG 연구의 데이터베이스 구조 설계, 청크 구조, 3권 샘플 테스트 결과를 논문 본문 또는 부록에 옮길 수 있는 형태로 정리한다.
현재 결과는 전체 615권 투입 전의 1차 샘플 실험이다. 따라서 최종 성능이 아니라, 구조 설계의 타당성과 테스트 방법을 검증하기 위한 기준선으로 해석한다.
1. 샘플 데이터
| 항목 |
내용
|
| 원본 위치 |
~/ffwpcb/말씀선집
|
| 전체 자료 규모 |
PDF 615권, 약 207,548쪽, 약 765MB
|
| 샘플 권수 |
001권, 091권, 154권
|
| 샘플 선택 방식 |
001권 고정, 나머지 2권 랜덤 선택
|
| 랜덤 seed |
5751795
|
| 추출 도구 |
pdftotext -layout
|
| 청크 방식 |
문단 기반, 800-1,200자 목표, 짧은 조각 병합
|
2. DB 구조 설계
2.1 기본 원칙
- 원본 PDF는 NAS에 보존한다.
- DB에는 원본 파일 경로, 추출 텍스트, 청크, 임베딩, 지식그래프 관계, 테스트 결과만 저장한다.
- 모든 청크는 권과 페이지 출처를 잃지 않아야 한다.
- 추출 오류 가능성은 삭제하지 않고 경고 필드로 남긴다.
- 검색 평가는 DB와 함께 관리하여 재현 가능하게 한다.
2.2 관계형 DB 테이블 설계
| 테이블 |
용도 |
주요 필드
|
source_files |
원본 PDF 파일 등록 |
file_id, volume, file_name, source_path, file_size, sha256, page_count
|
volumes |
권 단위 메타데이터 |
volume, title, page_count, source_file_id
|
sermons |
설교 단위 구조 |
sermon_id, volume, title, date, place, scripture, page_start, page_end
|
pages |
PDF 페이지별 추출 텍스트 |
page_id, volume, pdf_page, printed_page, raw_text, normalized_text
|
paragraphs |
문단 단위 텍스트 |
paragraph_id, volume, page_start, page_end, paragraph_index, text, warnings
|
chunks |
RAG 검색 기본 단위 |
chunk_id, volume, page_start, page_end, sermon_id, section_title, text, char_count, paragraph_count, warnings
|
chunk_embeddings |
벡터 검색 |
chunk_id, embedding_model, embedding, created_at
|
extraction_warnings |
추출 우려사항 기록 |
warning_id, target_type, target_id, warning_type, detail
|
retrieval_test_queries |
검색 평가 질의 |
query_id, query, expected_volume, expected_page, query_type
|
retrieval_test_runs |
검색 평가 실행 |
run_id, run_at, retrieval_method, chunk_version, notes
|
retrieval_test_results |
검색 평가 결과 |
run_id, query_id, rank, chunk_id, score, is_expected_volume
|
2.3 그래프 DB 구조
GraphRAG 고도화 단계에서는 Neo4j 또는 동등한 그래프 저장소를 사용한다.
| 노드 |
의미
|
Volume |
말씀선집 권
|
Sermon |
설교 단위
|
Page |
페이지
|
Chunk |
검색 청크
|
Person |
인물
|
Place |
장소
|
Concept |
핵심 개념
|
DoctrineTerm |
섭리/교리 용어
|
Event |
사건
|
Topic |
주제군
|
| 관계 |
의미
|
CONTAINS |
포함 관계
|
NEXT |
순차 관계
|
MENTIONS |
언급 관계
|
EXPLAINS |
설명 관계
|
RELATED_TO |
의미 관련
|
CONTRASTS_WITH |
대비 관계
|
EVIDENCE_OF |
근거 관계
|
BELONGS_TO_TOPIC |
주제 소속
|
3. 청크 구조
| 필드 |
설명
|
chunk_id |
권수와 순번을 포함한 고유 ID
|
volume |
말씀선집 권수
|
file_name |
원본 PDF 파일명
|
page_start |
청크 시작 PDF 페이지
|
page_end |
청크 종료 PDF 페이지
|
sermon_title |
설교 제목
|
section_title |
소제목
|
date |
설교 날짜
|
place |
설교 장소
|
paragraph_count |
청크 안 문단 수
|
char_count |
청크 글자 수
|
text |
청크 본문
|
extraction_warnings |
추출 우려사항
|
추출 우려사항
| 경고 유형 |
의미 |
예시
|
word_spacing_suspected |
줄바꿈으로 단어 내부 공백 발생 가능 |
허락하 여, 되 는
|
page_boundary_join_needed |
페이지 경계에서 문장 연결 필요 |
이전 페이지 문장이 종결되지 않음
|
starts_mid_sentence |
청크가 문장 중간에서 시작 |
는 자녀들로...
|
metadata_mixed_in_text |
제목/날짜/장소가 본문에 섞임 |
1977년 1월 16일...
|
short_fragment_merged |
짧은 조각을 앞 청크에 병합 |
300자 미만 조각
|
4. 샘플 청크 생성 결과
| 권수 |
파일명 |
청크 수 |
포함 페이지 |
비고
|
| 001권 |
001권.pdf |
364 |
약 341쪽 |
고정 샘플
|
| 091권 |
091권.pdf |
325 |
약 321쪽 |
랜덤 샘플
|
| 154권 |
154권-김지연.pdf |
342 |
약 345쪽 |
랜덤 샘플
|
| 합계 |
3권 |
1,031 |
약 1,007쪽 |
1차 테스트
|
5. 구조 품질 테스트 결과
| 항목 |
결과 |
해석
|
| 전체 청크 수 |
1,031개 |
3권 샘플 기준
|
| 평균 글자 수 |
약 1,043자 |
목표 범위에 근접
|
| 중앙값 |
약 1,065자 |
안정적 분포
|
| 최소/최대 |
313자 / 1,470자 |
매우 짧은 조각은 대부분 병합됨
|
| 목차/점선 노이즈 |
0개 |
목차 제거 성공
|
| 3쪽 초과 청크 |
0개 |
출처 범위가 과도하게 넓지 않음
|
| 문장 중간 시작 의심 |
205개 |
페이지/줄 경계 보정 필요
|
6. 검색 테스트 결과 요약
| 테스트 유형 |
질의 수 |
Top1 성공 |
Top5 성공 |
해석
|
| 일반 개념/키워드 테스트 |
30 |
26/30 |
29/30 |
반복 개념어는 1순위가 흔들릴 수 있음
|
| 고유 문장형 테스트 |
30 |
30/30 |
30/30 |
권별 고유 표현은 정확히 검색됨
|
일반 개념 테스트에서 일부 1순위가 흔들린 이유는 하나님의 심정, 천적인 사명, 세계적인 운세처럼 여러 권에서 반복되는 표현이기 때문이다. 이는 청크 자체의 실패라기보다 질의 유형과 랭킹 방식의 문제로 해석한다.
7. 고유 문장형 검색 테스트 결과표
| ID |
유형 |
질의 |
기대 권수 |
1순위 결과 |
Top1 |
Top5
|
| D001-01 |
제목형 |
승리하는 하나님의 정병 |
001권 |
001권 11-11쪽 vol001-00005 |
성공 |
성공
|
| D001-02 |
고유문장형 |
사탄의 화살의 자국 |
001권 |
001권 9-10쪽 vol001-00004 |
성공 |
성공
|
| D001-03 |
고유문장형 |
생명의 기름을 발라 |
001권 |
001권 9-10쪽 vol001-00004 |
성공 |
성공
|
| D001-04 |
고유문장형 |
새로운 부활의 붕대 |
001권 |
001권 9-10쪽 vol001-00004 |
성공 |
성공
|
| D001-05 |
고유문장형 |
사탄과 정면 충돌 |
001권 |
001권 11-11쪽 vol001-00005 |
성공 |
성공
|
| D001-06 |
개념정의형 |
정병이라는 말은 본래부터 |
001권 |
001권 11-11쪽 vol001-00005 |
성공 |
성공
|
| D001-07 |
개념관계형 |
싸움의 직접적인 책임 |
001권 |
001권 12-12쪽 vol001-00006 |
성공 |
성공
|
| D001-08 |
고유문장형 |
섭리의 전체를 책임지고 |
001권 |
001권 12-12쪽 vol001-00006 |
성공 |
성공
|
| D001-09 |
고유문장형 |
예수 그리스도가 왔다 가신 지 |
001권 |
001권 15-15쪽 vol001-00010 |
성공 |
성공
|
| D001-10 |
개념관계형 |
6천년 섭리의 전체 |
001권 |
001권 12-12쪽 vol001-00006 |
성공 |
성공
|
| D091-01 |
제목형 |
나는 누구에게 속해 있는가 |
091권 |
091권 7-7쪽 vol091-00001 |
성공 |
성공
|
| D091-02 |
장소형 |
태리타운 땅 자체 |
091권 |
091권 7-7쪽 vol091-00001 |
성공 |
성공
|
| D091-03 |
개념문장형 |
심정에 속하고 싶다고 |
091권 |
091권 9-9쪽 vol091-00003 |
성공 |
성공
|
| D091-04 |
개념문장형 |
하나님의 심정은 영원합니다 |
091권 |
091권 7-8쪽 vol091-00002 |
성공 |
성공
|
| D091-05 |
비교문장형 |
돈에 속하는 사람이 |
091권 |
091권 9-9쪽 vol091-00003 |
성공 |
성공
|
| D091-06 |
고유문장형 |
공통적인 대답 |
091권 |
091권 9-9쪽 vol091-00003 |
성공 |
성공
|
| D091-07 |
주제문장형 |
통일교회 자체를 두고 볼 때 |
091권 |
091권 7-8쪽 vol091-00002 |
성공 |
성공
|
| D091-08 |
개념문장형 |
심정적인 주체 |
091권 |
091권 7-7쪽 vol091-00001 |
성공 |
성공
|
| D091-09 |
고유문장형 |
여러분 자체를 중심삼고 많은 경계선 |
091권 |
091권 7-7쪽 vol091-00001 |
성공 |
성공
|
| D091-10 |
장소형 |
벨베디아 수련소 |
091권 |
091권 238-238쪽 vol091-00235 |
성공 |
성공
|
| D154-01 |
제목형 |
세계적인 승리자가 되자 |
154권 |
154권 9-9쪽 vol154-00001 |
성공 |
성공
|
| D154-02 |
소제목형 |
큰 사명과 큰 책임 |
154권 |
154권 9-9쪽 vol154-00001 |
성공 |
성공
|
| D154-03 |
고유문장형 |
민족을 지도할 수 있는 뜻 |
154권 |
154권 9-9쪽 vol154-00001 |
성공 |
성공
|
| D154-04 |
고유문장형 |
죄악세계에서 개인을 구하고 |
154권 |
154권 10-10쪽 vol154-00002 |
성공 |
성공
|
| D154-05 |
고유문장형 |
천주를 구한다는 엄청난 사명 |
154권 |
154권 10-10쪽 vol154-00002 |
성공 |
성공
|
| D154-06 |
개념문장형 |
악한 세계, 악한 국가 |
154권 |
154권 11-11쪽 vol154-00003 |
성공 |
성공
|
| D154-07 |
개념문장형 |
승리할 수 있는 기반 |
154권 |
154권 11-11쪽 vol154-00003 |
성공 |
성공
|
| D154-08 |
개념문장형 |
하나님의 심정세계 |
154권 |
154권 11-11쪽 vol154-00003 |
성공 |
성공
|
| D154-09 |
고유문장형 |
그간 비좁은 가운데서 긴 40일 |
154권 |
154권 9-9쪽 vol154-00001 |
성공 |
성공
|
| D154-10 |
개념문장형 |
내적 결의 |
154권 |
154권 10-10쪽 vol154-00002 |
성공 |
성공
|
8. 논문용 해석 문장
3권 샘플을 대상으로 한 문단 기반 청크 실험에서, 고유 문장형 질의 30개는 모두 기대 권수를 1순위로 검색하였다. 이는 권·페이지 출처를 보존한 문단 기반 청크가 원문 근거 검색에 효과적임을 보여준다. 다만 일반 개념어 질의에서는 반복 출현 개념으로 인해 1순위가 흔들리는 사례가 있었으므로, 향후 검색 단계에서는 키워드 검색, 벡터 검색, 그래프 관계 확장을 결합한 하이브리드 검색 구조가 필요하다.
또한 205개의 문장 중간 시작 의심 청크가 발견되었으므로, 최종 DB 투입 전에는 페이지 경계 문장 이어붙이기와 단어 내부 공백 보정이 필요하다. 이 문제는 현재 실험의 실패라기보다, 대규모 PDF 기반 종교 강연문 말뭉치를 처리할 때 반드시 기록하고 보정해야 할 추출 품질 관리 항목으로 본다.
9. 다음 단계
- 페이지 경계 문장 이어붙이기 보정본 생성
- 보정 전/후 품질 비교
- PostgreSQL + pgvector 스키마 생성
- 샘플 3권 청크 적재
- 키워드 검색, 벡터 검색, GraphRAG 검색 결과 비교
관련 문서