말씀선집 GraphRAG 연구/완료 작업 목록과 산출물 보존 계획

현 아카이브
(토론 | 기여)님의 2026년 7월 3일 (금) 03:48 판 (완료 작업 목록과 산출물 보존 계획 등록)
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)
둘러보기로 이동 검색으로 이동

이 문서는 말씀선집 GraphRAG 연구의 현재 상태를 기준으로, 앞으로 완료까지 필요한 작업과 지금까지 만든 산출물을 어떻게 보존할지 정리한 실행 계획서다.

현재 기준선은 다음과 같다.

  • 중심 자료: 말씀선집 615권
  • 보조 후보: 원리강론 후보 TXT 78건
  • 성경: 1차 DB 구축 범위에서 제외
  • 현재 전체 청크: 178,690개
  • 현재 SQLite DB: db_builds/20260702_213134/graphrag_research.sqlite
  • 현재 FAQ 기준 질문: 200개
  • 현재 답변 자연화 샘플: 5개

1. 현재까지 완료된 핵심 산출물

1.1 전체 청크 생성

  • 위치: project_docs/말씀선집그래프RAG/full_chunk_runs/20260702_211525_boundary_safe_all/chunks.jsonl
  • 크기: 약 475MB
  • 청크 수: 178,690개
  • 방식: 문단 기반 boundary_safe_v1_hardmax1600
  • 의미: 말씀선집 615권 전체를 질문 검색과 DB 적재가 가능한 단위로 분할한 기준 파일이다.

1.2 전체 색인 SQLite DB

  • 위치: project_docs/말씀선집그래프RAG/db_builds/20260702_213134/graphrag_research.sqlite
  • 크기: 약 667MB
  • 포함 내용:
    • 말씀선집 PDF 원본 메타데이터 615건
    • 원리강론 후보 TXT 메타데이터 78건
    • 말씀선집 전체 청크 178,690건
    • FAQ 질문 200건
    • FAQ 테스트 결과 200건
  • 의미: PostgreSQL 전환 전 사용할 1차 전체 색인 기준선이다.

1.3 FAQ 200개 랭킹 보정 재테스트

  • 위치: project_docs/말씀선집그래프RAG/faq_200_ranked_retests/20260702_221642/
  • 결과:
    • 근거 충분: 43개
    • 검수 필요: 103개
    • 부분 근거: 35개
    • 근거 부족: 19개
  • 의미: 단순 검색 결과를 그대로 믿지 않고, 질문 핵심어와 고유어 기준으로 과신을 줄인 최종 검색 기준선이다.

1.4 근거 충분 43개 자동 초안

  • 위치: project_docs/말씀선집그래프RAG/faq_answer_drafts/20260703_031625_strong43/
  • 내용:
    • 근거 충분 43개 질문
    • 질문별 Top3 근거 청크
    • 원문 발췌
    • 검수 메모
  • 의미: 최종 답변이 아니라 자연화와 사람 검수를 위한 원자료다.

1.5 자연화 5개 샘플

  • 위치: project_docs/말씀선집그래프RAG/faq_answer_drafts/20260703_032000_naturalized5/
  • 대상: E-004, E-011, E-059, U-024, U-071
  • 형식: 질문, 답변 초안, 핵심 요지, 근거 출처, 검수 메모
  • 의미: 나머지 근거 충분 답변을 사람이 읽는 FAQ 문장으로 바꿀 때 사용할 기준 형식이다.

2. 완료까지 해야 할 일

2.1 용어 정리

일부 산출물에는 영문 상태명이 남아 있다. 이후 위키와 논문에서는 다음 한국어 표현으로 통일한다.

기존 표현 한국어 표현 의미
strong_evidence 근거 충분 현재 근거만으로 답변 초안 생성 가능
reviewable_candidate 검수 필요 근거 후보는 있으나 사람 검토가 필요
partial_evidence 부분 근거 일부 관련 근거만 있고 답변에는 부족
insufficient_evidence 근거 부족 현재 DB로는 답변 근거가 부족

우선 처리:

  • 새 문서에는 한국어 상태명을 우선 사용한다.
  • 기존 실험 결과 파일의 원본 상태명은 보존하되, 해설 문서에는 한국어 병기를 붙인다.
  • 위키 제목과 본문은 가능한 한 근거 충분, 검수 필요, 부분 근거, 근거 부족 중심으로 고친다.

2.2 근거 충분 43개 답변 완성

이미 5개 자연화 샘플을 만들었으므로, 남은 38개를 같은 형식으로 자연화한다.

작업 방식:

  1. strong_answer_drafts.jsonl에서 남은 38개를 읽는다.
  2. 질문별 Top3 근거 청크를 확인한다.
  3. 자동 발췌 문장을 그대로 쓰지 않고, 일반 독자가 읽을 수 있는 FAQ 문장으로 바꾼다.
  4. 각 답변마다 근거 출처와 검수 메모를 유지한다.
  5. 결과를 로컬 문서와 위키에 반영한다.

완료 기준:

  • 근거 충분 43개 전체가 자연화 형식으로 작성되어야 한다.
  • 각 답변에는 최소 1개 이상의 권/쪽/청크ID 근거가 있어야 한다.
  • 최종 확정 전 상태는 사람 검수 필요로 유지한다.

2.3 검수 필요 103개 정리

검수 필요 103개는 바로 답변을 만들지 않고, Top10 근거 묶음 검수 패키지로 정리한다.

작업 방식:

  1. 질문별 Top10 근거를 묶는다.
  2. 중복 주제와 일반어 매칭 결과를 제거한다.
  3. 답변 가능, 근거 보강 필요, 오검색, 추가 문헌 필요로 재분류한다.
  4. 답변 가능으로 올라온 항목만 자연화 대상으로 승격한다.

완료 기준:

  • 103개 전체에 재분류 상태가 있어야 한다.
  • 오검색 사례는 별도 표로 남긴다.
  • 답변 가능으로 승격된 질문 수를 기록한다.

2.4 부분 근거 35개와 근거 부족 19개 처리

부분 근거와 근거 부족 항목은 답변 생성 대상이 아니라 보류 항목으로 관리한다.

작업 방식:

  1. 질문이 너무 넓은지 확인한다.
  2. 말씀선집만으로 답하기 어려운지 확인한다.
  3. 원리강론 후보 TXT를 추가 검색했을 때 개선되는지 별도 테스트한다.
  4. 성경 본문이 필요한 질문은 현재 1차 DB 범위 밖으로 표시한다.

완료 기준:

  • 54개 전체에 보류 사유를 붙인다.
  • 질문 재작성 필요 항목을 분리한다.
  • 추가 문헌 없이 답변하면 위험한 항목을 표시한다.

2.5 원문 대조 검수

검색 결과가 실제 PDF 권/쪽과 맞는지 표본 대조한다.

작업 방식:

  1. 근거 충분 답변 중 10-20개를 뽑는다.
  2. 청크의 권/쪽 번호가 PDF 원문과 맞는지 확인한다.
  3. 문장 경계가 자연스러운지 확인한다.
  4. 인용 가능한 문장인지 확인한다.
  5. 문제가 있으면 청크 메타데이터와 추출 경고를 보정한다.

완료 기준:

  • 표본 검수표가 있어야 한다.
  • 권/쪽 오류가 발견되면 수정 이력을 남긴다.
  • 인용 부적합 청크는 답변 근거에서 제외한다.

2.6 PostgreSQL + pgvector 전환

현재 SQLite 기준선을 PostgreSQL로 이전한다.

이전 대상:

  • source_documents
  • text_chunks
  • faq_records
  • evidence_sources
  • test_results
  • 향후 embeddings

작업 방식:

  1. PostgreSQL 스키마를 작성한다.
  2. SQLite 기준 DB에서 CSV 또는 직접 로딩 방식으로 이전한다.
  3. pgvector 확장을 활성화한다.
  4. 임베딩 전용 테이블을 추가한다.
  5. 인덱스와 백업 정책을 만든다.

완료 기준:

  • PostgreSQL에서 청크 178,690개 조회가 가능해야 한다.
  • FAQ 200개 검색 테스트를 PostgreSQL 기준으로 재현해야 한다.
  • SQLite 기준 결과와 PostgreSQL 결과 차이를 기록한다.

2.7 임베딩 샘플 테스트

전체 임베딩 전에 1만 청크 샘플로 검색 품질을 검증한다.

작업 방식:

  1. 1만 청크 샘플을 선정한다.
  2. 임베딩 후보 모델 2-3개를 비교한다.
  3. FAQ 30-50개 질문으로 검색 테스트를 한다.
  4. 키워드 검색, 임베딩 검색, 혼합 검색을 비교한다.
  5. Top10 근거가 실제 답변 근거로 좋아지는지 본다.

완료 기준:

  • 모델별 검색 품질표가 있어야 한다.
  • 모델별 비용과 저장용량 추정이 있어야 한다.
  • 전체 178,690개 임베딩으로 확대할지 결정한다.

2.8 FAQ 답변 DB 구조 확정

최종 FAQ DB는 단순 문답표가 아니라 질문, 답변, 근거, 검수 상태를 함께 저장해야 한다.

필수 필드:

  • 질문 ID
  • 질문 원문
  • 질문 분류
  • 답변 초안
  • 최종 답변
  • 근거 청크 Top3/Top5/Top10
  • 근거 등급
  • 검수 상태
  • 수정 이력
  • 공식 감수 여부

완료 기준:

  • 답변 초안과 최종 답변을 분리해야 한다.
  • 근거 없는 답변은 공개 상태로 올라가면 안 된다.
  • 검수자와 수정 시간을 남길 수 있어야 한다.

2.9 위키와 논문용 결과 정리

필요 문서:

  • 전체 파이프라인 구조도
  • 3권 샘플과 615권 전체 결과 비교표
  • 랭킹 보정 전후 비교표
  • 자연화 전후 답변 예시
  • 오검색 보정 사례
  • 저장용량과 토큰 사용량 표

완료 기준:

  • 논문 방법론 장에 들어갈 절차 설명이 있어야 한다.
  • 실험 결과 장에 들어갈 표가 있어야 한다.
  • 실패 사례와 한계가 함께 기록되어야 한다.

2.10 최종 운영 단계

필요 기능:

  • 질문 입력
  • 근거 검색
  • Top 근거 확인
  • 답변 초안 생성
  • 출처 표시
  • 사람 검수
  • 공개 가능 답변만 분리

완료 기준:

  • FAQ 질문을 넣으면 근거 청크와 답변 초안이 함께 나와야 한다.
  • 출처 없는 답변은 생성하지 않아야 한다.
  • 검수 전 답변과 공개 답변을 구분해야 한다.

3. 산출물 보존 계획

3.1 보존 원칙

  1. 원본 PDF는 NAS에 있는 것을 기준 원본으로 유지한다.
  2. 로컬에는 DB, 청크, 스크립트, 테스트 결과, 문서만 보존한다.
  3. 대용량 결과물은 체크섬을 만들어 무결성을 확인한다.
  4. 코드와 문서는 Git으로 관리한다.
  5. DB와 청크 파일은 Git에 넣지 않고 별도 백업 대상으로 둔다.

3.2 반드시 보존할 파일

A. 기준 DB

  • project_docs/말씀선집그래프RAG/db_builds/20260702_213134/graphrag_research.sqlite
  • 크기: 약 667MB
  • 보존 이유: 현재 1차 전체 색인 기준선이다.

B. 기준 청크 JSONL

  • project_docs/말씀선집그래프RAG/full_chunk_runs/20260702_211525_boundary_safe_all/chunks.jsonl
  • 크기: 약 475MB
  • 보존 이유: DB를 다시 만들 수 있는 전체 청크 원본이다.

C. 실행 스크립트

  • chunk_all_words_collection.py
  • build_research_db.py
  • faq_200_top10_stream_retest.py
  • faq_evidence_sample_audit.py
  • faq_strong_answer_draft_pack.py
  • publish_naturalized5_to_wiki.py

D. 테스트 결과

  • faq_200_answer_tests/20260702_212702/
  • faq_evidence_audits/20260702_220119/
  • faq_200_ranked_retests/20260702_221642/
  • faq_answer_drafts/20260703_031625_strong43/
  • faq_answer_drafts/20260703_032000_naturalized5/

E. 설계 문서

  • DB_STRUCTURE_AND_TEST_RESULTS.md
  • BOUNDARY_REPAIR_STRATEGY_AND_RESULTS.md
  • TOKEN_USAGE_ESTIMATE.md
  • COMPLETION_AND_PRESERVATION_PLAN.md
  • DOCUMENTS.md
  • CHANGELOG.md
  • TODO.md

3.3 보존하지 않아도 되는 파일

다음은 필요할 때 다시 만들 수 있거나 중복 산출물이므로 장기 보존 우선순위가 낮다.

  • 실패한 중간 실행 결과
  • 중복된 이전 답변 초안 폴더
  • Python __pycache__
  • 임시 로그
  • 위키 등록 중간 파일 중 최종 문서와 동일한 복사본

단, 삭제는 바로 하지 말고 보존 기준선이 완전히 만들어진 뒤 정리한다.

3.4 권장 백업 구조

새 백업 기준선 이름은 다음처럼 둔다.

20260703_words_graphrag_baseline_v1

권장 폴더 구조:

project_docs/말씀선집그래프RAG/releases/20260703_words_graphrag_baseline_v1/
  manifest.md
  checksums.sha256
  docs/
  scripts/
  reports/
  pointers/

여기에는 대용량 DB와 청크 파일을 직접 복사하지 않고, 우선 경로와 체크섬을 기록한다. NAS 백업을 만들 때만 대용량 파일을 별도 복사한다.

NAS 백업 후보 경로:

ffwpcb/말씀선집GraphRAG_백업/20260703_words_graphrag_baseline_v1/

3.5 체크섬 생성

대용량 파일은 복사보다 먼저 체크섬을 만든다.

대상:

  • 전체 청크 JSONL
  • SQLite DB
  • 주요 결과 JSONL

예상 명령:

sha256sum full_chunk_runs/20260702_211525_boundary_safe_all/chunks.jsonl
sha256sum db_builds/20260702_213134/graphrag_research.sqlite

체크섬은 checksums.sha256에 저장한다. 나중에 파일을 NAS로 옮긴 뒤 다시 체크섬을 비교하면 손상 여부를 확인할 수 있다.

3.6 SQLite DB 검증

DB 파일은 백업 전후에 무결성 검사를 한다.

예상 명령:

sqlite3 db_builds/20260702_213134/graphrag_research.sqlite "PRAGMA integrity_check;"

결과가 ok여야 기준선으로 인정한다.

3.7 압축 전략

대용량 텍스트 파일은 압축 보관이 가능하다.

권장:

  • chunks.jsonl은 압축 대상
  • graphrag_research.sqlite는 원본 DB와 압축본을 함께 보관할 수 있음
  • PDF 원본은 NAS 기준 원본으로 두고 중복 복사하지 않음

예상 용량:

  • 기준 DB: 약 667MB
  • 기준 청크 JSONL: 약 475MB
  • 주요 리포트: 수 MB
  • 1회 기준선 전체: 약 1.2GB 전후

3.8 Git 관리 기준

Git에 넣을 것:

  • 스크립트
  • 설계 문서
  • 요약 리포트
  • 위키 원본 문서
  • 체크섬 파일
  • manifest 파일

Git에 넣지 않을 것:

  • 475MB 청크 JSONL
  • 667MB SQLite DB
  • NAS 원본 PDF
  • 대용량 압축본

대용량 파일은 Git이 아니라 release manifest와 NAS 백업으로 관리한다.

3.9 위키 보존

위키에는 다음 문서를 기준으로 연결해 둔다.

위키는 사람이 읽는 연구 기록이고, 로컬 파일은 재현 가능한 원자료로 본다.

4. 추천 실행 순서

4.1 즉시 실행

  1. 이 문서를 위키에 등록한다.
  2. 용어를 한국어 상태명으로 정리한다.
  3. 기준선 release manifest를 만든다.
  4. DB와 청크 파일 체크섬을 만든다.

4.2 다음 실행

  1. 남은 근거 충분 38개 자연화.
  2. 검수 필요 103개 Top10 검수 패키지 생성.
  3. 부분 근거와 근거 부족 항목 보류 사유 정리.
  4. PostgreSQL 전환 설계.

4.3 그 다음 실행

  1. 1만 청크 임베딩 샘플 테스트.
  2. 키워드 검색과 임베딩 검색 비교.
  3. FAQ 답변 DB 최종 구조 확정.
  4. 논문용 표와 시스템 구조도 작성.

5. 현재 판단

지금 단계에서 가장 중요한 것은 답변을 많이 만드는 것이 아니라, 이미 만든 결과를 잃지 않고 재현 가능하게 고정하는 것이다.

따라서 다음 우선순위는 다음과 같다.

  1. 기준선 보존
  2. 한국어 용어 정리
  3. 근거 충분 43개 자연화 완료
  4. 검수 필요 103개 재분류
  5. PostgreSQL 전환

이 순서로 가야 연구 기록, 논문 작성, 실제 DB 구축이 서로 어긋나지 않는다.