말씀선집 GraphRAG 연구/DB 구조 설계와 테스트 결과 문서 원본 보기
←
말씀선집 GraphRAG 연구/DB 구조 설계와 테스트 결과
둘러보기로 이동
검색으로 이동
문서 편집 권한이 없습니다. 다음 이유를 확인해주세요:
요청한 명령은 다음 권한을 가진 사용자에게 제한됩니다:
사용자
.
문서의 원본을 보거나 복사할 수 있습니다.
= DB 구조 설계와 테스트 결과 = 이 문서는 [[말씀선집 GraphRAG 연구]]의 데이터베이스 구조 설계, 청크 구조, 3권 샘플 테스트 결과를 논문 본문 또는 부록에 옮길 수 있는 형태로 정리한다. 현재 결과는 전체 615권 투입 전의 1차 샘플 실험이다. 따라서 최종 성능이 아니라, 구조 설계의 타당성과 테스트 방법을 검증하기 위한 기준선으로 해석한다. == 1. 샘플 데이터 == {| class="wikitable" ! 항목 !! 내용 |- | 원본 위치 || <code>~/ffwpcb/말씀선집</code> |- | 전체 자료 규모 || PDF 615권, 약 207,548쪽, 약 765MB |- | 샘플 권수 || 001권, 091권, 154권 |- | 샘플 선택 방식 || 001권 고정, 나머지 2권 랜덤 선택 |- | 랜덤 seed || 5751795 |- | 추출 도구 || <code>pdftotext -layout</code> |- | 청크 방식 || 문단 기반, 800-1,200자 목표, 짧은 조각 병합 |} == 2. DB 구조 설계 == === 2.1 기본 원칙 === * 원본 PDF는 NAS에 보존한다. * DB에는 원본 파일 경로, 추출 텍스트, 청크, 임베딩, 지식그래프 관계, 테스트 결과만 저장한다. * 모든 청크는 권과 페이지 출처를 잃지 않아야 한다. * 추출 오류 가능성은 삭제하지 않고 경고 필드로 남긴다. * 검색 평가는 DB와 함께 관리하여 재현 가능하게 한다. === 2.2 관계형 DB 테이블 설계 === {| class="wikitable" ! 테이블 !! 용도 !! 주요 필드 |- | <code>source_files</code> || 원본 PDF 파일 등록 || <code>file_id</code>, <code>volume</code>, <code>file_name</code>, <code>source_path</code>, <code>file_size</code>, <code>sha256</code>, <code>page_count</code> |- | <code>volumes</code> || 권 단위 메타데이터 || <code>volume</code>, <code>title</code>, <code>page_count</code>, <code>source_file_id</code> |- | <code>sermons</code> || 설교 단위 구조 || <code>sermon_id</code>, <code>volume</code>, <code>title</code>, <code>date</code>, <code>place</code>, <code>scripture</code>, <code>page_start</code>, <code>page_end</code> |- | <code>pages</code> || PDF 페이지별 추출 텍스트 || <code>page_id</code>, <code>volume</code>, <code>pdf_page</code>, <code>printed_page</code>, <code>raw_text</code>, <code>normalized_text</code> |- | <code>paragraphs</code> || 문단 단위 텍스트 || <code>paragraph_id</code>, <code>volume</code>, <code>page_start</code>, <code>page_end</code>, <code>paragraph_index</code>, <code>text</code>, <code>warnings</code> |- | <code>chunks</code> || RAG 검색 기본 단위 || <code>chunk_id</code>, <code>volume</code>, <code>page_start</code>, <code>page_end</code>, <code>sermon_id</code>, <code>section_title</code>, <code>text</code>, <code>char_count</code>, <code>paragraph_count</code>, <code>warnings</code> |- | <code>chunk_embeddings</code> || 벡터 검색 || <code>chunk_id</code>, <code>embedding_model</code>, <code>embedding</code>, <code>created_at</code> |- | <code>extraction_warnings</code> || 추출 우려사항 기록 || <code>warning_id</code>, <code>target_type</code>, <code>target_id</code>, <code>warning_type</code>, <code>detail</code> |- | <code>retrieval_test_queries</code> || 검색 평가 질의 || <code>query_id</code>, <code>query</code>, <code>expected_volume</code>, <code>expected_page</code>, <code>query_type</code> |- | <code>retrieval_test_runs</code> || 검색 평가 실행 || <code>run_id</code>, <code>run_at</code>, <code>retrieval_method</code>, <code>chunk_version</code>, <code>notes</code> |- | <code>retrieval_test_results</code> || 검색 평가 결과 || <code>run_id</code>, <code>query_id</code>, <code>rank</code>, <code>chunk_id</code>, <code>score</code>, <code>is_expected_volume</code> |} === 2.3 그래프 DB 구조 === GraphRAG 고도화 단계에서는 Neo4j 또는 동등한 그래프 저장소를 사용한다. {| class="wikitable" ! 노드 !! 의미 |- | <code>Volume</code> || 말씀선집 권 |- | <code>Sermon</code> || 설교 단위 |- | <code>Page</code> || 페이지 |- | <code>Chunk</code> || 검색 청크 |- | <code>Person</code> || 인물 |- | <code>Place</code> || 장소 |- | <code>Concept</code> || 핵심 개념 |- | <code>DoctrineTerm</code> || 섭리/교리 용어 |- | <code>Event</code> || 사건 |- | <code>Topic</code> || 주제군 |} {| class="wikitable" ! 관계 !! 의미 |- | <code>CONTAINS</code> || 포함 관계 |- | <code>NEXT</code> || 순차 관계 |- | <code>MENTIONS</code> || 언급 관계 |- | <code>EXPLAINS</code> || 설명 관계 |- | <code>RELATED_TO</code> || 의미 관련 |- | <code>CONTRASTS_WITH</code> || 대비 관계 |- | <code>EVIDENCE_OF</code> || 근거 관계 |- | <code>BELONGS_TO_TOPIC</code> || 주제 소속 |} == 3. 청크 구조 == {| class="wikitable" ! 필드 !! 설명 |- | <code>chunk_id</code> || 권수와 순번을 포함한 고유 ID |- | <code>volume</code> || 말씀선집 권수 |- | <code>file_name</code> || 원본 PDF 파일명 |- | <code>page_start</code> || 청크 시작 PDF 페이지 |- | <code>page_end</code> || 청크 종료 PDF 페이지 |- | <code>sermon_title</code> || 설교 제목 |- | <code>section_title</code> || 소제목 |- | <code>date</code> || 설교 날짜 |- | <code>place</code> || 설교 장소 |- | <code>paragraph_count</code> || 청크 안 문단 수 |- | <code>char_count</code> || 청크 글자 수 |- | <code>text</code> || 청크 본문 |- | <code>extraction_warnings</code> || 추출 우려사항 |} === 추출 우려사항 === {| class="wikitable" ! 경고 유형 !! 의미 !! 예시 |- | <code>word_spacing_suspected</code> || 줄바꿈으로 단어 내부 공백 발생 가능 || <code>허락하 여</code>, <code>되 는</code> |- | <code>page_boundary_join_needed</code> || 페이지 경계에서 문장 연결 필요 || 이전 페이지 문장이 종결되지 않음 |- | <code>starts_mid_sentence</code> || 청크가 문장 중간에서 시작 || <code>는 자녀들로...</code> |- | <code>metadata_mixed_in_text</code> || 제목/날짜/장소가 본문에 섞임 || <code>1977년 1월 16일...</code> |- | <code>short_fragment_merged</code> || 짧은 조각을 앞 청크에 병합 || 300자 미만 조각 |} == 4. 샘플 청크 생성 결과 == {| class="wikitable" ! 권수 !! 파일명 !! 청크 수 !! 포함 페이지 !! 비고 |- | 001권 || <code>001권.pdf</code> || 364 || 약 341쪽 || 고정 샘플 |- | 091권 || <code>091권.pdf</code> || 325 || 약 321쪽 || 랜덤 샘플 |- | 154권 || <code>154권-김지연.pdf</code> || 342 || 약 345쪽 || 랜덤 샘플 |- | 합계 || 3권 || 1,031 || 약 1,007쪽 || 1차 테스트 |} == 5. 구조 품질 테스트 결과 == {| class="wikitable" ! 항목 !! 결과 !! 해석 |- | 전체 청크 수 || 1,031개 || 3권 샘플 기준 |- | 평균 글자 수 || 약 1,043자 || 목표 범위에 근접 |- | 중앙값 || 약 1,065자 || 안정적 분포 |- | 최소/최대 || 313자 / 1,470자 || 매우 짧은 조각은 대부분 병합됨 |- | 목차/점선 노이즈 || 0개 || 목차 제거 성공 |- | 3쪽 초과 청크 || 0개 || 출처 범위가 과도하게 넓지 않음 |- | 문장 중간 시작 의심 || 205개 || 페이지/줄 경계 보정 필요 |} == 6. 검색 테스트 결과 요약 == {| class="wikitable" ! 테스트 유형 !! 질의 수 !! Top1 성공 !! Top5 성공 !! 해석 |- | 일반 개념/키워드 테스트 || 30 || 26/30 || 29/30 || 반복 개념어는 1순위가 흔들릴 수 있음 |- | 고유 문장형 테스트 || 30 || 30/30 || 30/30 || 권별 고유 표현은 정확히 검색됨 |} 일반 개념 테스트에서 일부 1순위가 흔들린 이유는 <code>하나님의 심정</code>, <code>천적인 사명</code>, <code>세계적인 운세</code>처럼 여러 권에서 반복되는 표현이기 때문이다. 이는 청크 자체의 실패라기보다 질의 유형과 랭킹 방식의 문제로 해석한다. == 7. 고유 문장형 검색 테스트 결과표 == {| class="wikitable sortable" ! ID !! 유형 !! 질의 !! 기대 권수 !! 1순위 결과 !! Top1 !! Top5 |- | D001-01 || 제목형 || 승리하는 하나님의 정병 || 001권 || 001권 11-11쪽 <code>vol001-00005</code> || 성공 || 성공 |- | D001-02 || 고유문장형 || 사탄의 화살의 자국 || 001권 || 001권 9-10쪽 <code>vol001-00004</code> || 성공 || 성공 |- | D001-03 || 고유문장형 || 생명의 기름을 발라 || 001권 || 001권 9-10쪽 <code>vol001-00004</code> || 성공 || 성공 |- | D001-04 || 고유문장형 || 새로운 부활의 붕대 || 001권 || 001권 9-10쪽 <code>vol001-00004</code> || 성공 || 성공 |- | D001-05 || 고유문장형 || 사탄과 정면 충돌 || 001권 || 001권 11-11쪽 <code>vol001-00005</code> || 성공 || 성공 |- | D001-06 || 개념정의형 || 정병이라는 말은 본래부터 || 001권 || 001권 11-11쪽 <code>vol001-00005</code> || 성공 || 성공 |- | D001-07 || 개념관계형 || 싸움의 직접적인 책임 || 001권 || 001권 12-12쪽 <code>vol001-00006</code> || 성공 || 성공 |- | D001-08 || 고유문장형 || 섭리의 전체를 책임지고 || 001권 || 001권 12-12쪽 <code>vol001-00006</code> || 성공 || 성공 |- | D001-09 || 고유문장형 || 예수 그리스도가 왔다 가신 지 || 001권 || 001권 15-15쪽 <code>vol001-00010</code> || 성공 || 성공 |- | D001-10 || 개념관계형 || 6천년 섭리의 전체 || 001권 || 001권 12-12쪽 <code>vol001-00006</code> || 성공 || 성공 |- | D091-01 || 제목형 || 나는 누구에게 속해 있는가 || 091권 || 091권 7-7쪽 <code>vol091-00001</code> || 성공 || 성공 |- | D091-02 || 장소형 || 태리타운 땅 자체 || 091권 || 091권 7-7쪽 <code>vol091-00001</code> || 성공 || 성공 |- | D091-03 || 개념문장형 || 심정에 속하고 싶다고 || 091권 || 091권 9-9쪽 <code>vol091-00003</code> || 성공 || 성공 |- | D091-04 || 개념문장형 || 하나님의 심정은 영원합니다 || 091권 || 091권 7-8쪽 <code>vol091-00002</code> || 성공 || 성공 |- | D091-05 || 비교문장형 || 돈에 속하는 사람이 || 091권 || 091권 9-9쪽 <code>vol091-00003</code> || 성공 || 성공 |- | D091-06 || 고유문장형 || 공통적인 대답 || 091권 || 091권 9-9쪽 <code>vol091-00003</code> || 성공 || 성공 |- | D091-07 || 주제문장형 || 통일교회 자체를 두고 볼 때 || 091권 || 091권 7-8쪽 <code>vol091-00002</code> || 성공 || 성공 |- | D091-08 || 개념문장형 || 심정적인 주체 || 091권 || 091권 7-7쪽 <code>vol091-00001</code> || 성공 || 성공 |- | D091-09 || 고유문장형 || 여러분 자체를 중심삼고 많은 경계선 || 091권 || 091권 7-7쪽 <code>vol091-00001</code> || 성공 || 성공 |- | D091-10 || 장소형 || 벨베디아 수련소 || 091권 || 091권 238-238쪽 <code>vol091-00235</code> || 성공 || 성공 |- | D154-01 || 제목형 || 세계적인 승리자가 되자 || 154권 || 154권 9-9쪽 <code>vol154-00001</code> || 성공 || 성공 |- | D154-02 || 소제목형 || 큰 사명과 큰 책임 || 154권 || 154권 9-9쪽 <code>vol154-00001</code> || 성공 || 성공 |- | D154-03 || 고유문장형 || 민족을 지도할 수 있는 뜻 || 154권 || 154권 9-9쪽 <code>vol154-00001</code> || 성공 || 성공 |- | D154-04 || 고유문장형 || 죄악세계에서 개인을 구하고 || 154권 || 154권 10-10쪽 <code>vol154-00002</code> || 성공 || 성공 |- | D154-05 || 고유문장형 || 천주를 구한다는 엄청난 사명 || 154권 || 154권 10-10쪽 <code>vol154-00002</code> || 성공 || 성공 |- | D154-06 || 개념문장형 || 악한 세계, 악한 국가 || 154권 || 154권 11-11쪽 <code>vol154-00003</code> || 성공 || 성공 |- | D154-07 || 개념문장형 || 승리할 수 있는 기반 || 154권 || 154권 11-11쪽 <code>vol154-00003</code> || 성공 || 성공 |- | D154-08 || 개념문장형 || 하나님의 심정세계 || 154권 || 154권 11-11쪽 <code>vol154-00003</code> || 성공 || 성공 |- | D154-09 || 고유문장형 || 그간 비좁은 가운데서 긴 40일 || 154권 || 154권 9-9쪽 <code>vol154-00001</code> || 성공 || 성공 |- | D154-10 || 개념문장형 || 내적 결의 || 154권 || 154권 10-10쪽 <code>vol154-00002</code> || 성공 || 성공 |} == 8. 논문용 해석 문장 == 3권 샘플을 대상으로 한 문단 기반 청크 실험에서, 고유 문장형 질의 30개는 모두 기대 권수를 1순위로 검색하였다. 이는 권·페이지 출처를 보존한 문단 기반 청크가 원문 근거 검색에 효과적임을 보여준다. 다만 일반 개념어 질의에서는 반복 출현 개념으로 인해 1순위가 흔들리는 사례가 있었으므로, 향후 검색 단계에서는 키워드 검색, 벡터 검색, 그래프 관계 확장을 결합한 하이브리드 검색 구조가 필요하다. 또한 205개의 문장 중간 시작 의심 청크가 발견되었으므로, 최종 DB 투입 전에는 페이지 경계 문장 이어붙이기와 단어 내부 공백 보정이 필요하다. 이 문제는 현재 실험의 실패라기보다, 대규모 PDF 기반 종교 강연문 말뭉치를 처리할 때 반드시 기록하고 보정해야 할 추출 품질 관리 항목으로 본다. == 9. 다음 단계 == # 페이지 경계 문장 이어붙이기 보정본 생성 # 보정 전/후 품질 비교 # PostgreSQL + pgvector 스키마 생성 # 샘플 3권 청크 적재 # 키워드 검색, 벡터 검색, GraphRAG 검색 결과 비교 == 10. 1차 일반 개념/키워드 테스트의 문제 분석 == 1차 테스트는 30개의 일반 개념어와 키워드형 질의를 사용하였다. 이 테스트의 목적은 문단 기반 청크가 단순 키워드 검색 상황에서 관련 권과 페이지를 얼마나 잘 찾아내는지 확인하는 것이었다. 결과는 Top1 26/30, Top5 29/30이었다. 표면적으로는 4개의 질의가 1순위 검색에 실패했고, 1개의 질의는 Top5에서도 기대 권수를 찾지 못했다. 그러나 이 결과는 청크 구조 자체가 잘못되었다는 뜻으로 해석하면 안 된다. 실패한 질의들은 대부분 특정 권에만 고유한 표현이 아니라 말씀선집 전체에서 반복될 수 있는 일반 신앙어, 섭리어, 개념어였다. 예를 들어 <code>하나님의 심정</code>, <code>천적인 사명</code>, <code>세계적인 운세</code>, <code>하나의 중심</code> 같은 표현은 한 권의 고유 문장이 아니라 여러 권에서 반복적으로 사용될 수 있는 범용 개념어이다. 이런 질의는 키워드 검색만으로 특정 권을 1순위로 고정하기 어렵다. 1차 테스트에서 드러난 핵심 문제는 다음과 같다. {| class="wikitable" ! 문제 !! 설명 !! 논문적 의미 |- | 개념어의 반복성 || 같은 신앙 개념이 여러 권에서 반복 출현 || 단순 키워드 검색만으로는 권별 맥락을 구분하기 어렵다 |- | 질의 맥락 부족 || <code>하나님의 심정</code>처럼 짧은 질의는 시대, 설교, 주제 범위를 지정하지 않음 || 검색 질의에는 개념뿐 아니라 맥락 조건이 필요하다 |- | 랭킹 기준의 한계 || 단어 빈도나 단순 포함 여부만으로는 연구자가 의도한 권을 판단하기 어려움 || 벡터 검색과 그래프 관계 확장이 필요하다 |- | 기대 정답 설정의 어려움 || 일반 개념어는 특정 권 하나만 정답이라고 보기 어려움 || 평가셋을 고유 문장형, 개념형, 관계형으로 분리해야 한다 |} 따라서 1차 테스트는 실패한 실험이 아니라, 말씀선집과 같은 대규모 종교 강연문 말뭉치에서 단순 키워드 검색이 갖는 구조적 한계를 보여준 실험이다. 특히 말씀선집은 동일 개념이 시대와 상황에 따라 반복, 변주, 확장되는 자료이기 때문에, 일반 개념어 검색은 단일 청크 검색만으로 평가하기보다 관련 청크 묶음, 시대별 흐름, 개념 관계망까지 함께 보아야 한다. 논문에서는 이 결과를 다음과 같이 해석할 수 있다. <blockquote> 일반 개념어 기반 검색에서는 반복 출현 개념으로 인해 1순위 검색 결과가 기대 권수와 일치하지 않는 사례가 발생하였다. 이는 문단 기반 청크의 실패라기보다, 말씀선집처럼 장기간 축적된 종교 강연문 말뭉치에서 동일 개념이 여러 문맥에 걸쳐 반복되는 특성에서 비롯된 것이다. 따라서 일반 개념어 검색에는 단순 키워드 매칭을 넘어, 권·설교·시대·주제 관계를 반영하는 GraphRAG 구조가 필요하다. </blockquote> == 11. 2차 고유 문장형 테스트의 성공 이유 == 2차 테스트는 1차 테스트와 달리 각 권의 고유 문장, 제목, 장소 표현, 특징적인 문맥 표현을 중심으로 질의를 구성하였다. 예를 들어 <code>승리하는 하나님의 정병</code>, <code>사탄의 화살의 자국</code>, <code>태리타운 땅 자체</code>, <code>세계적인 승리자가 되자</code>, <code>죄악세계에서 개인을 구하고</code> 같은 질의는 특정 권과 특정 페이지에 강하게 결합된 표현이다. 이 테스트의 결과는 Top1 30/30, Top5 30/30이었다. 이는 문단 기반 청크가 권·페이지 출처를 보존한 상태에서 원문 근거를 찾아내는 데 효과적임을 보여준다. 2차 테스트가 성공한 이유는 다음과 같다. {| class="wikitable" ! 성공 요인 !! 설명 !! 효과 |- | 고유 표현 사용 || 특정 권과 페이지에 가까운 문장을 질의로 사용 || 검색 결과가 분산되지 않고 해당 권으로 집중됨 |- | 문단 기반 청크 || 문장 주변 맥락이 함께 보존됨 || 검색 결과가 단어 조각이 아니라 설교 흐름 단위로 제공됨 |- | 권·페이지 메타데이터 유지 || 모든 청크가 <code>volume</code>, <code>page_start</code>, <code>page_end</code>를 가짐 || 논문과 목회 활용에서 출처 제시 가능 |- | 목차 노이즈 제거 || 목차/점선 청크가 검색 결과에 끼어들지 않음 || 본문 근거 검색의 정확도 향상 |- | 짧은 조각 병합 || 300자 미만 조각이 대부분 앞 청크와 결합됨 || 단편적 검색 결과 감소 |} 이 결과는 문단 기반 청크가 “원문 근거 검색”이라는 1차 목표에는 적합하다는 것을 보여준다. 특히 논문에서 중요한 것은 AI가 답변을 만들어내는 능력보다, 어떤 원문을 근거로 답하는지 추적할 수 있는가이다. 2차 테스트는 이 출처 추적 가능성을 확인한 실험이다. 다만 2차 테스트의 성공을 과도하게 해석해서는 안 된다. 고유 문장형 검색은 정확한 원문 구절을 찾는 데 유리하지만, 사용자가 실제로 던지는 질문은 대개 <code>사랑이란 무엇인가</code>, <code>심정과 복귀섭리는 어떻게 연결되는가</code>, <code>승리의 개념은 시대별로 어떻게 변화하는가</code>처럼 더 넓은 개념형 또는 관계형 질문일 가능성이 높다. 따라서 2차 테스트는 GraphRAG 전체 성능을 증명한 것이 아니라, 문단 기반 청크와 출처 메타데이터가 원문 검색의 기초 구조로 유효하다는 것을 증명한 것으로 보아야 한다. 논문에서는 다음과 같이 쓸 수 있다. <blockquote> 고유 문장형 검색에서는 30개 질의 모두 기대 권수를 1순위로 검색하였다. 이는 문단 기반 청크가 원문 구절과 권·페이지 출처를 함께 보존할 때, 특정 말씀 구절의 근거 검색에 매우 효과적임을 보여준다. 그러나 이 결과는 고유 표현 검색에 대한 성능을 의미하며, 일반 개념어와 관계형 질의에 대해서는 GraphRAG 기반의 개념 관계 확장이 추가로 필요하다. </blockquote> == 12. 1차와 2차 테스트 비교 == {| class="wikitable" ! 비교 항목 !! 1차 일반 개념/키워드 테스트 !! 2차 고유 문장형 테스트 |- | 테스트 목적 || 일반 개념어 검색의 가능성과 한계 확인 || 원문 근거와 출처 추적 가능성 확인 |- | 질의 성격 || 반복 출현 가능성이 높은 개념어 || 특정 권과 페이지에 가까운 고유 표현 |- | 예시 질의 || <code>하나님의 심정</code>, <code>천적인 사명</code>, <code>세계적인 운세</code> || <code>사탄의 화살의 자국</code>, <code>태리타운 땅 자체</code>, <code>죄악세계에서 개인을 구하고</code> |- | 결과 || Top1 26/30, Top5 29/30 || Top1 30/30, Top5 30/30 |- | 실패/오차 원인 || 개념어가 여러 권에 반복되어 1순위가 흔들림 || 거의 없음 |- | 해석 || 단순 키워드 검색만으로는 개념 맥락 구분이 어렵다 || 문단 기반 청크는 원문 근거 검색에 효과적이다 |- | GraphRAG 필요성 || 매우 높음. 개념 관계와 시대별 맥락이 필요 || 출처 기반 검색의 기초 구조로 활용 가능 |- | 논문 내 위치 || 문제 제기와 GraphRAG 필요성 근거 || 제안 구조의 1차 타당성 근거 |} 두 테스트는 서로 모순되는 결과가 아니다. 오히려 함께 제시될 때 연구의 논리가 분명해진다. 1차 테스트는 말씀선집 검색에서 일반 개념어 검색만으로는 부족하다는 것을 보여준다. 2차 테스트는 문단 기반 청크가 원문 근거를 정확히 찾아낼 수 있음을 보여준다. 따라서 본 연구의 방향은 단순 키워드 검색을 폐기하는 것이 아니라, 문단 기반 청크를 기초로 하되 일반 개념형 질문에는 GraphRAG의 관계 확장을 결합하는 것이다. 논문 구조상 이 비교는 다음 논리로 배치할 수 있다. # 말씀선집은 동일 개념이 여러 권에서 반복되는 대규모 종교 강연문 말뭉치이다. # 따라서 일반 개념어 검색은 1순위 정확도가 흔들릴 수 있다. # 그러나 문단 기반 청크는 고유 문장형 원문 근거 검색에서 높은 정확도를 보였다. # 그러므로 본 연구는 문단 기반 청크를 기본 검색 단위로 삼고, 개념형·관계형 질의에는 GraphRAG를 결합한다. == 13. 논문 본문 삽입용 서술 == 다음 문단은 논문 본문에 바로 삽입할 수 있는 형태의 초안이다. <blockquote> 본 연구는 말씀선집 3권 샘플(001권, 091권, 154권)을 대상으로 문단 기반 청크 구조의 검색 가능성을 예비 실험하였다. 일반 개념어 및 키워드형 질의 30개를 적용한 결과 Top1 정확도는 26/30, Top5 정확도는 29/30으로 나타났다. 일부 질의에서 1순위 검색이 기대 권수와 일치하지 않은 이유는 <code>하나님의 심정</code>, <code>천적인 사명</code>, <code>세계적인 운세</code>와 같은 표현이 특정 권에만 고유한 것이 아니라 여러 권에서 반복되는 일반 개념어였기 때문이다. 이는 말씀선집과 같은 대규모 종교 강연문 말뭉치에서 단순 키워드 검색만으로는 개념의 시대적·주제적 맥락을 충분히 구분하기 어렵다는 점을 보여준다. </blockquote> <blockquote> 반면 각 권의 고유 문장과 특징적 표현을 중심으로 구성한 30개 질의에서는 Top1과 Top5 모두 30/30의 결과를 보였다. 이는 문단 기반 청크가 권·페이지 출처를 보존한 상태에서 특정 원문 구절을 검색하는 데 효과적임을 보여준다. 따라서 본 연구에서 제안하는 청크 구조는 원문 근거 검색의 기초 단위로 적합하다고 볼 수 있다. 다만 일반 개념형 질의에서는 동일 개념의 반복 출현으로 인해 검색 결과가 분산될 수 있으므로, 향후 단계에서는 키워드 검색과 벡터 검색뿐 아니라 개념 간 관계, 설교 시기, 주제군을 함께 고려하는 GraphRAG 구조가 필요하다. </blockquote> <blockquote> 또한 구조 품질 테스트에서 문장 중간 시작 의심 청크가 205개 발견되었다. 이는 PDF 추출 과정에서 문장이나 단어가 줄 또는 페이지 경계를 넘어가며 분리될 수 있음을 의미한다. 따라서 최종 DB 투입 전에는 페이지 경계 문장 이어붙이기, 단어 내부 공백 보정, 제목·날짜·장소의 메타데이터 분리 절차가 추가되어야 한다. 본 연구는 이러한 추출 우려사항을 삭제하거나 은폐하지 않고 <code>extraction_warnings</code> 필드로 기록하여, 추후 재처리와 품질 평가가 가능하도록 설계한다. </blockquote> == 14. 문장 경계 보정 결과 == 문장 중간 시작 의심 205개 문제는 별도 보정 실험으로 다루었다. 자세한 원인 분석, 보정 알고리즘, 전후 비교표, 논문 삽입용 서술은 [[말씀선집 GraphRAG 연구/문장 경계 보정 전략과 결과]]에 정리하였다. {| class="wikitable" ! 항목 !! 기준선 !! 경계 보정 후 |- | 전체 청크 수 || 1,031개 || 949개 |- | 평균 글자 수 || 1,043.1자 || 1,074.7자 |- | 최대 글자 수 || 1,470자 || 1,599자 |- | 기준선 판정 의심 시작 || 205개 || 88개 |- | 실제 위험군 판정 || 126개 || 4개 |- | 일반 키워드 Top1/Top5 || 26/30, 29/30 || 26/30, 29/30 |- | 고유 문장형 Top1/Top5 || 30/30, 30/30 || 30/30, 30/30 |} 따라서 1차 DB 투입 후보 청크는 <code>boundary_safe</code>, <code>hard_max_chars=1600</code> 보정본으로 둔다. == 관련 문서 == * [[말씀선집 GraphRAG 연구]] * [[말씀선집 GraphRAG 연구/DB 구축 방향]] * [[말씀선집 GraphRAG 연구/문장 경계 보정 전략과 결과]] * 로컬 문서: <code>/home/ruyjin/.openclaw/workspace/project_docs/말씀선집그래프RAG/DB_STRUCTURE_AND_TEST_RESULTS.md</code> [[분류:말씀선집 GraphRAG 연구]] [[분류:GraphRAG]] [[분류:DB설계]] [[분류:검색평가]] [[분류:연구기획]] == 2026-07-02 615권 전체 색인 반영 결과 == 현의 결정에 따라 성경 본문은 1차 DB 구축 범위에서 제외하였다. 따라서 이번 전체 색인 DB는 말씀선집 615권과 원리강론 후보 TXT 78건, FAQ 200개 기준 테스트셋을 중심으로 구성하였다. === 전체 청크 생성 결과 === {| class="wikitable" ! 항목 !! 결과 |- | 대상 문헌 || 말씀선집 615권 PDF |- | 청크 방식 || 문단 기반 boundary_safe_v1_hardmax1600 |- | 전체 청크 수 || 178,690개 |- | 평균 길이 || 약 1,062.2자 |- | 중앙값 || 약 1,066자 |- | 최대 길이 || 1,600자 |- | 문장 경계 연결 보정 || 30,824건 |- | 문장 중간 시작 의심 || 759건 |- | 전체 청크 JSONL || full_chunk_runs/20260702_211525_boundary_safe_all/chunks.jsonl |- | JSONL 크기 || 약 475MB |} === 전체 DB 적재 결과 === {| class="wikitable" ! 항목 !! 결과 |- | SQLite DB || db_builds/20260702_213134/graphrag_research.sqlite |- | DB 크기 || 약 667MB |- | source_documents || 693건 |- | 말씀선집 원본 PDF || 615건 |- | 원리강론 후보 TXT || 78건 |- | text_chunks || 178,690건 |- | faq_records || 200건 |- | test_results || 200건 |- | 성경 관련 테이블 || 0개 |- | SQLite 무결성 검사 || ok |} === FAQ 200개 전체 재테스트 결과 === {| class="wikitable" ! 판정 !! 3권 샘플 !! 615권 전체 |- | strong_evidence || 12 || 113 |- | reviewable_candidate || 68 || 75 |- | partial_evidence || 51 || 4 |- | insufficient_evidence || 69 || 8 |} 615권 전체 색인을 적용한 결과, strong_evidence는 12개에서 113개로 증가했고 insufficient_evidence는 69개에서 8개로 감소하였다. 이는 3권 샘플 단계의 낮은 답변 근거 확보율이 청크 구조 자체의 실패라기보다 색인 범위 부족의 영향이 컸음을 보여 준다. 이번 결과는 이후 PostgreSQL + pgvector 전환의 기준선으로 사용한다. 단, 원리강론 후보 TXT는 아직 공식 판본 대조가 필요하므로 source_status를 candidate_needs_canonical_review로 유지한다.
말씀선집 GraphRAG 연구/DB 구조 설계와 테스트 결과
문서로 돌아갑니다.
둘러보기 메뉴
개인 도구
로그인
이름공간
문서
토론
한국어
보기
읽기
원본 보기
역사 보기
더 보기
검색
둘러보기
대문
최근 바뀜
임의 문서로
미디어위키 도움말
특수 문서 목록
도구
여기를 가리키는 문서
가리키는 글의 최근 바뀜
문서 정보