말씀선집 GraphRAG 연구/문장 경계 보정 전략과 결과

현 아카이브
(토론 | 기여)님의 2026년 7월 2일 (목) 21:35 판 (말씀선집 615권 전체 색인 및 성경 제외 결정 반영)
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)
둘러보기로 이동 검색으로 이동

문장 경계 보정 전략과 결과

이 문서는 말씀선집 GraphRAG 연구의 PDF 추출·청크 생성 과정에서 발견된 문장 중간 시작 문제의 원인, 해결 전략, 보정 전후 테스트 결과를 논문 본문에 활용할 수 있도록 정리한다.

1. 문제 정의

3권 샘플 청크 품질 테스트에서 문장 중간 시작 의심 청크가 205개로 확인되었다. 대표 사례는 다음과 같다.

  • 는 자녀들로...
  • 과 하나님을 배경으로...
  • 니다. 그러므로...
  • 의 사실들을 느끼고...

이 문제는 단일 원인이 아니라 세 가지 원인이 겹친 결과로 판단한다.

원인 설명 예시 영향
줄바꿈 기반 단어 분리 PDF의 줄 끝과 다음 줄이 단어 내부에서 끊김 허락하 여, 되 는, 것입 니다 원문 검색은 되지만 독해 품질 저하
페이지/문단 경계 분리 한 문장이 페이지나 문단 블록 사이에서 끊김 이전 조각 예수 그리스도와 성신 + 다음 조각 과 하나님... 청크가 조사나 어미로 시작
청크 경계 분리 800-1,200자 제한을 맞추며 의미상 이어지는 조각을 다음 청크로 넘김 이전 청크 끝이 미종결 상태인데 다음 청크가 니다.로 시작 RAG 답변 근거의 자연스러움 저하

또한 기존 205개 수치는 매우 넓은 판정식으로 계산된 값이다. 이 판정식은 , , 같은 첫 글자도 모두 의심으로 보았기 때문에 이 싸움은, 고통의 예수, 요한계시록처럼 정상적인 제목·문장 시작도 일부 포함한다. 따라서 논문에는 기준선 판정정제 판정을 구분해 기술하는 것이 적절하다.

2. 해결 방향

문제를 한 번에 삭제하지 않고, 자동 보정과 경고 보존을 병행한다.

  1. 원문 추출 후 바로 청크하지 않는다.
  2. 페이지별 문단 조각을 먼저 정규화한다.
  3. 이전 조각이 문장 종결 부호로 끝나지 않고 다음 조각이 조사·어미로 시작하면 같은 문장으로 연결한다.
  4. 것입 + 니다, 성신 + 처럼 단어 또는 구가 끊긴 경우 공백 없이 연결한다.
  5. 청크 생성 시 다음 청크가 조사·어미로 시작할 가능성이 있으면 최대 1,600자까지 같은 청크 안에 유지한다.
  6. 보정한 사실은 extraction_warnings에 남겨 추적 가능하게 한다.

이 방식은 원문을 임의로 많이 고치는 방식이 아니다. 기계적으로 명확한 경우만 자동 보정하고, 애매한 경우는 경고로 남긴다.

3. 보정 알고리즘

3.1 문단 경계 연결

조건 처리
이전 조각이 마침표, 물음표, 느낌표 등 문장 종결 부호로 끝나지 않음 다음 조각을 이어붙일 후보로 본다
다음 조각이 , , , , , , , , , , , , 같은 조사로 시작 공백 없이 연결하거나 최소 공백으로 연결
다음 조각이 니다, 습니다, 겁니다, 것입니다, 다면 등 어미형으로 시작 공백 없이 연결
이전 조각이 것입, 됩니, 합니, 입니, 허락하, 처럼 미완성 형태로 끝남 공백 없이 연결

3.2 단어 내부 공백 보정

보정 전 보정 후 비고
허락하 여 허락하여 자주 나타나는 줄바꿈 분리
되 는 되는 어간+어미 분리
하 나님 하나님 말씀선집에서 빈번한 고유 신앙어
것입 니다 것입니다에 준해 연결 단어 내부 분리

모든 한글 공백을 무조건 제거하지 않는다. 그렇게 하면 정상적인 한국어 띄어쓰기까지 훼손할 수 있기 때문이다.

3.3 청크 경계 보정

  • 목표 크기: 800-1,200자 유지
  • 허용 최대 크기: 1,600자
  • 다음 조각이 조사·어미로 시작하거나 이전 조각이 문장 미종결이면, 1,600자 이내에서 같은 청크에 포함
  • 1,600자를 넘는 경우에는 더 이상 강제로 합치지 않고 starts_mid_sentence 경고를 남김

1,800자 제한도 실험했지만, 긴 청크가 과도하게 늘어나 근거 범위가 흐려질 가능성이 커졌다. 따라서 1차 DB 투입 후보는 1,600자 제한 보정본으로 둔다.

4. 보정 전후 비교

항목 기준선 청크 경계 보정 청크 해석
대상 권수 001, 091, 154권 001, 091, 154권 동일 샘플
전체 청크 수 1,031개 949개 분리 조각이 합쳐져 청크 수 감소
평균 글자 수 1,043.1자 1,074.7자 목표 범위 유지
중앙값 1,065자 1,080자 분포 안정
최대 글자 수 1,470자 1,599자 1,600자 제한 준수
1,600자 초과 청크 0개 0개 과도한 장문 청크 없음
300자 미만 청크 0개 2개 일부 짧은 잔여 조각 존재
목차/점선 노이즈 0개 0개 노이즈 제거 유지
3쪽 초과 청크 0개 0개 출처 범위 안정
문장 중간 시작 의심, 기준선 판정 205개 88개 넓은 판정 기준으로도 57.1% 감소
문장 중간 시작 의심, 정제 판정 147개 7개 실제 위험군 기준 95.2% 감소
핵심 위험군 판정 126개 4개 조사·어미 시작 중심으로 96.8% 감소

5. 권별 보정 통계

권수 입력 문단 보정 후 세그먼트 연결 보정 내부 공백 보정 후보
001권 783 714 69 508
091권 693 630 63 474
154권 647 602 45 463
합계 2,123 1,946 177 1,445

6. 검색 성능 유지 여부

테스트 유형 기준선 결과 보정 후 결과 해석
일반 개념/키워드 테스트 Top1 26/30 26/30 성능 유지
일반 개념/키워드 테스트 Top5 29/30 29/30 성능 유지
고유 문장형 테스트 Top1 30/30 30/30 성능 유지
고유 문장형 테스트 Top5 30/30 30/30 성능 유지

보정 후에도 검색 성능은 떨어지지 않았다. 따라서 문장 경계 보정은 원문 독해 품질을 개선하면서 기존 검색 성능을 유지하는 방향으로 작동했다고 볼 수 있다.

7. Top1 30/30 고유 문장형 테스트 질문

다음 30개 질문은 보정 후 청크 20260702_191959_boundary_safe를 대상으로 실행한 고유 문장형 검색 테스트에 사용되었다. 모든 질문에서 기대 권수가 1순위로 검색되었고, Top5에도 포함되었다.

ID 유형 질문 기대 권수 1순위 결과
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-12쪽 vol001-00006
D001-07 개념관계형 싸움의 직접적인 책임 001권 001권 11-12쪽 vol001-00006
D001-08 고유문장형 섭리의 전체를 책임지고 001권 001권 12-13쪽 vol001-00007
D001-09 고유문장형 예수 그리스도가 왔다 가신 지 001권 001권 15-15쪽 vol001-00009
D001-10 개념관계형 6천년 섭리의 전체 001권 001권 11-12쪽 vol001-00006
D091-01 제목형 나는 누구에게 속해 있는가 091권 091권 7-7쪽 vol091-00001
D091-02 장소형 태리타운 땅 자체 091권 091권 7-7쪽 vol091-00001
D091-03 개념문장형 심정에 속하고 싶다고 091권 091권 8-9쪽 vol091-00002
D091-04 개념문장형 하나님의 심정은 영원합니다 091권 091권 8-9쪽 vol091-00002
D091-05 비교문장형 돈에 속하는 사람이 091권 091권 8-9쪽 vol091-00003
D091-06 고유문장형 공통적인 대답 091권 091권 8-9쪽 vol091-00003
D091-07 주제문장형 통일교회 자체를 두고 볼 때 091권 091권 8-9쪽 vol091-00002
D091-08 개념문장형 심정적인 주체 091권 091권 8-9쪽 vol091-00003
D091-09 고유문장형 여러분 자체를 중심삼고 많은 경계선 091권 091권 7-7쪽 vol091-00001
D091-10 장소형 벨베디아 수련소 091권 091권 289-289쪽 vol091-00273
D154-01 제목형 세계적인 승리자가 되자 154권 154권 9-10쪽 vol154-00001
D154-02 소제목형 큰 사명과 큰 책임 154권 154권 9-10쪽 vol154-00001
D154-03 고유문장형 민족을 지도할 수 있는 뜻 154권 154권 9-10쪽 vol154-00001
D154-04 고유문장형 죄악세계에서 개인을 구하고 154권 154권 9-10쪽 vol154-00001
D154-05 고유문장형 천주를 구한다는 엄청난 사명 154권 154권 9-10쪽 vol154-00001
D154-06 개념문장형 악한 세계, 악한 국가 154권 154권 10-12쪽 vol154-00002
D154-07 개념문장형 승리할 수 있는 기반 154권 154권 10-12쪽 vol154-00002
D154-08 개념문장형 하나님의 심정세계 154권 154권 10-12쪽 vol154-00002
D154-09 고유문장형 그간 비좁은 가운데서 긴 40일 154권 154권 9-10쪽 vol154-00001
D154-10 개념문장형 내적 결의 154권 154권 9-10쪽 vol154-00001

이 질문들은 단순한 일반 개념어가 아니라 권별 제목, 장소, 특징적 문장, 개념 관계 표현을 섞어 구성했다. 따라서 이 결과는 “문단 기반 청크가 원문 근거와 권·페이지 출처를 정확히 찾아낼 수 있는가”를 확인하는 평가로 해석한다.

8. 추가 사례 질의: 예수님의 한을 풀어드리는 방법

현이 제시한 추가 질의 예수님의 한을 풀어드리는 방법은 특정 문장 하나를 찾는 고유 문장형 질의라기보다, 여러 근거 청크를 종합해야 하는 개념·목회 적용형 질의이다. 현재 3권 샘플 기준 검색 결과는 다음과 같다.

순위 권/쪽 청크 핵심 내용
1 154권 344쪽 vol154-00319 하나님과 예수님의 한을 풀 수 있는 곳은 통일교회뿐이라는 제목 아래, 타락 이후 종의 종 자리까지 찾아오신 하나님의 사정을 알아야 한다고 설명
2 154권 345-346쪽 vol154-00320 하나님의 한, 예수와 성신의 한, 선조들의 한을 풀기 위해 눈물과 회개와 책임이 필요하다고 설명
3 001권 311-312쪽 vol001-00279 하나님과 예수와 성신의 서러움을 풀어 드릴 책임이 오늘의 우리에게 있다고 설명
4 001권 312쪽 vol001-00280 예수의 마음, 예수의 서러움, 예수의 수고의 짐을 실체적으로 대신 맡아야 한다고 설명
5 001권 314-315쪽 vol001-00282 초림 예수의 서러움을 풀어 드릴 뿐 아니라 영광을 돌려드릴 책임이 성도에게 있다고 설명
6 001권 55-56쪽 vol001-00044 십자가의 원한을 오늘의 믿는 사람들이 해원해야 하며, 십자가를 넘어설 수 있는 기준을 세워야 한다고 설명
7 154권 275쪽 vol154-00251 예수의 한과 하나님의 복귀 천국의 한을 풀기 위해 참된 백성, 가정, 족속, 민족을 세워야 한다고 설명
8 154권 316쪽 vol154-00291 예수의 한을 풀어 주면 하나님의 한이 풀린다고 설명

이 결과를 종합하면, 샘플 말씀선집 안에서 예수님의 한을 풀어드리는 방법은 다음 네 방향으로 정리된다.

  1. 예수님의 십자가와 비통을 단순 교리로만 보지 않고, 하나님의 사정과 예수님의 서러움을 아는 것.
  2. 예수의 마음, 서러움, 수고의 짐을 실체적으로 대신 맡는 것.
  3. 십자가의 원한을 해원하고, 예수님께 영광을 돌려드릴 수 있는 삶의 기준을 세우는 것.
  4. 개인 차원을 넘어 참된 백성, 가정, 족속, 민족을 세워 하나님의 복귀 천국의 한까지 풀어 드리는 것.

논문적으로 이 질의는 단일 Top1 정답보다 GraphRAG형 응답이 필요한 사례이다. 즉 예수님의 한이라는 개념은 하나님의 한, 십자가의 원한, 성신의 한, 복귀 천국, 참된 백성/가정/민족, 해원과 연결되어야 한다. 따라서 이 질의는 향후 그래프 노드와 관계를 검증하는 테스트 질의로 사용할 수 있다.

9. 추가 사례 질의: 베드로의 한을 풀어주는 방법

추가 질의 베드로의 한을 풀어주는 방법은 현재 3권 샘플 안에서 직접 표현으로는 검색되지 않았다. 그러나 베드로, 예수의 한, 제자, 십자가, 회개, 해원을 중심으로 관계 확장 검색을 하면 다음 근거들이 연결된다.

순위 권/쪽 청크 핵심 내용
1 154권 269쪽 vol154-00245 베드로 야고보가 뭘했던고?라는 질문과 함께, 예수님 최후의 십자가 자리에서 사도들이 함께 책임지지 못한 것을 원통한 일로 설명
2 154권 272쪽 vol154-00248 예수의 한과 하나님의 복귀천국의 한을 풀어야라는 흐름 속에서, 예수가 찾고자 한 참다운 개인·가정·종족·민족·국가를 세우지 못한 것이 한이라고 설명
3 154권 274쪽 vol154-00250 예수의 옷자락을 붙들고 통곡해야 하며, 십자가가 웬말이냐는 심정으로 예수의 뜻과 복귀 노정을 알아야 한다고 설명
4 154권 316쪽 vol154-00291 십자가를 떼고 회개할 수 있는 날을 바라는 심정, 예수의 한을 풀면 하나님의 한이 풀린다고 설명
5 154권 345-346쪽 vol154-00320 예수와 성신의 한을 풀기 위해 눈물, 죽음 각오, 회개, 위로가 필요하다고 설명
6 001권 53쪽 vol001-00042 예수의 슬픔은 십자가 죽음으로 끝난 것이 아니라 풀래야 풀 수 없는 한으로 남았고, 죽음을 각오하고 예수를 슬픔에서 구해야 한다고 설명
7 001권 312쪽 vol001-00280 예수의 마음, 예수의 서러움, 예수의 수고의 짐을 실체적으로 대신 맡아야 한다고 설명

이 결과를 종합하면, 샘플 말씀선집 안에서 베드로의 한을 풀어주는 방법은 베드로 개인의 감정만을 위로하는 것이 아니라, 예수님을 마지막 순간에 홀로 보내고 제자들이 함께 책임하지 못한 역사적 실패를 오늘의 책임으로 탕감·복귀하는 것으로 해석된다.

정리하면 다음 네 방향이다.

  1. 베드로와 제자들이 예수님의 십자가 앞에서 함께 책임하지 못한 사실을 회개하는 것.
  2. 예수님의 마지막 길을 방관하지 않고, 오늘의 성도가 예수의 마음과 서러움과 수고의 짐을 대신 맡는 것.
  3. 십자가를 당연한 구원의 상징으로만 보지 않고, 예수님이 살아서 이루셨어야 할 뜻과 복귀 천국의 한을 보는 것.
  4. 참다운 개인·가정·종족·민족·국가를 세워 예수의 한과 하나님의 한을 함께 풀어 드리는 것.

논문적으로 이 질의는 고유 문장형 검색보다 GraphRAG 관계 확장이 필요한 사례이다. 베드로라는 인물 노드는 사도, 제자 실패, 십자가, 예수의 한, 회개, 복귀 천국, 참다운 개인/가정/민족과 연결되어야 한다. 따라서 이 질의는 인물 중심 GraphRAG 테스트셋에 포함할 수 있다.

10. 남은 한계

  • 로 시작하는 표현은 조사일 수도 있고 정상적인 지시어일 수도 있다.
  • 설교체 문장은 문어체보다 종결 부호가 불규칙할 수 있다.
  • 모든 줄바꿈 공백을 제거하면 정상 띄어쓰기까지 훼손될 수 있다.
  • 제목, 날짜, 장소, 본문이 섞인 문제는 별도 메타데이터 분리 단계가 필요하다.
처리 항목 상태
명확한 단어/문장 분리 자동 보정
애매한 시작 위치 extraction_warnings에 기록
제목/날짜/장소 혼입 다음 단계에서 메타데이터 분리
전체 615권 적용 3권 샘플 검증 후 확장

11. 논문 본문 삽입용 서술

본 연구는 PDF 기반 원문 추출 과정에서 발생하는 문장 경계 분리 문제를 별도의 품질 관리 항목으로 설정하였다. 초기 3권 샘플 청크에서는 기준선 판정 기준으로 205개의 문장 중간 시작 의심 청크가 발견되었다. 이 현상은 단순한 페이지 경계 문제만이 아니라, PDF 줄바꿈에 따른 단어 내부 공백, 페이지 및 문단 블록 사이의 문장 분리, 그리고 청크 길이 제한에 따른 경계 분리가 복합적으로 작용한 결과였다.

이에 본 연구는 원문 추출 후 바로 청크를 생성하지 않고, 문단 경계 보정 단계를 추가하였다. 이전 조각이 문장 종결 부호로 끝나지 않고 다음 조각이 조사 또는 어미로 시작하는 경우 두 조각을 하나의 문장 흐름으로 연결하였다. 또한 것입니다, 성신처럼 단어 또는 구가 분리된 사례는 공백 없이 연결하였다. 청크 생성 단계에서는 다음 청크가 조사나 어미로 시작할 가능성이 있을 경우 최대 1,600자까지 같은 청크에 포함하도록 하였다. 다만 모든 오류 가능성을 임의로 제거하지 않고, 보정 사실과 잔여 의심 사례는 extraction_warnings 필드에 기록하도록 설계하였다.

보정 결과 전체 청크 수는 1,031개에서 949개로 감소하였고, 평균 글자 수는 1,043.1자에서 1,074.7자로 소폭 증가하였다. 기준선 판정에 따른 문장 중간 시작 의심 청크는 205개에서 88개로 감소하였으며, 실제 조사·어미 시작을 중심으로 한 핵심 위험군은 126개에서 4개로 감소하였다. 이는 약 96.8%의 감소에 해당한다. 동시에 일반 개념/키워드 검색 테스트는 Top1 26/30, Top5 29/30으로 유지되었고, 고유 문장형 검색 테스트 역시 Top1 30/30, Top5 30/30을 유지하였다. 따라서 문장 경계 보정은 검색 성능을 저하시키지 않으면서 원문 청크의 독해 품질과 근거 제시 안정성을 개선한 것으로 볼 수 있다.

12. 채택 판단

1차 DB 투입 후보는 boundary_safe, hard_max_chars=1600 보정본으로 한다.

채택 이유는 다음과 같다.

  • 실제 위험군이 126개에서 4개로 감소했다.
  • 검색 성능이 기준선과 동일하게 유지되었다.
  • 1,600자 초과 청크가 없어 근거 범위가 과도하게 넓어지지 않았다.
  • 보정 사실을 경고 필드로 남겨 추후 검토 가능하다.

다음 단계에서는 제목, 날짜, 장소, 소제목을 본문에서 분리해 메타데이터화한 뒤 같은 테스트를 다시 수행한다.

2026-07-02 615권 전체 적용 결과

문장 경계 보정 전략을 3권 샘플에서 끝내지 않고 말씀선집 615권 전체에 적용하였다. 성경은 현의 결정에 따라 1차 DB 구축 범위에서 제외하였다.

항목 결과
대상 말씀선집 615권
청크 방식 문단 기반 boundary_safe_v1_hardmax1600
전체 청크 수 178,690개
문장 경계 연결 보정 30,824건
문장 중간 시작 의심 759건
FAQ 200개 strong_evidence 113개
FAQ 200개 reviewable_candidate 75개
FAQ 200개 insufficient_evidence 8개

따라서 boundary_safe 방식은 전체 말씀선집 색인에도 적용 가능한 1차 기준으로 판단한다. 다음 단계는 제목, 날짜, 장소, 소제목의 메타데이터 분리와 PostgreSQL + pgvector 전환이다.