diff --git a/journey/ideas/260320_다형식문서_자동지식화_RAG_파이프라인_아이디어.md b/journey/ideas/260320_다형식문서_자동지식화_RAG_파이프라인_아이디어.md index 5dfda47..d02ea1d 100644 --- a/journey/ideas/260320_다형식문서_자동지식화_RAG_파이프라인_아이디어.md +++ b/journey/ideas/260320_다형식문서_자동지식화_RAG_파이프라인_아이디어.md @@ -29,11 +29,16 @@ adopted_by: 260320_다형식문서_RAG_1차_MD_메타_정규화_계획.md, 26032 - PGVector는 의미 검색을 맡고, PostgreSQL 관계 구조는 연결 탐색을 맡는다. - 이 구조는 지금 로빙의 범위에서 과하지 않고, 나중에 더 크게 키워도 버티는 방향이다. -## 현재 반영 상태 (2026-03-22) +## 현재 상태 보정 (2026-03-22) -- `로빙 적용 1`은 별도 계획에서 이미 구현·검증이 끝났고, 현재 열린 체인은 `1차/2차/3차`와 관련 리서치다. -- `PGVector + JSONB + tsvector + Apache AGE` 방향은 설계가 아니라 현재 운영 코드와 문서가 함께 따라가야 하는 실제 기준이 됐다. -- 따라서 이 아이디어 문서는 신규 구상보다 `왜 이 구조를 유지하는가`를 설명하는 상위 맥락 문서로 읽는 편이 맞다. +- `로빙 적용 1`은 별도 계획에서 이미 구현·검증 완료. 현재 열린 체인은 `1차/2차/3차`와 관련 리서치. +- PGVector + JSONB + tsvector + Apache AGE: 설계가 아니라 운영 실체. +- tsvector + GIN: 구현 완료. 하이브리드 검색 (vector + keyword + graph RRF): 구현 완료. +- Apache AGE: companyx_docs, document_graph 그래프 2개 운용 중. +- 임베딩: Gemini Embedding 2, 768d. team_document: 1,174건 / team_document_chunk: 3,474건. +- MD 파생본: 48,906개 (본문 text_length: 0이 48,744건, 99.7% 미추출). OCR: 미구현. +- 증분 동기화 자동화: 미구현 (수동 스크립트만). +- NAS 원본: /mnt/nas/workspace/6.Company X — 53,249파일. ## 단계 구분 diff --git a/journey/plans/260320_다형식문서_RAG_1차_MD_메타_정규화_계획.md b/journey/plans/260320_다형식문서_RAG_1차_MD_메타_정규화_계획.md index 5787b29..7cc17c6 100644 --- a/journey/plans/260320_다형식문서_RAG_1차_MD_메타_정규화_계획.md +++ b/journey/plans/260320_다형식문서_RAG_1차_MD_메타_정규화_계획.md @@ -44,12 +44,12 @@ closing_criteria: 원본 스캔부터 파일별 MD 생성과 front matter 최소 - ~~샘플 100~500개 파일에서 MD 생성 성공률을 확인한다.~~ → 48,906개 생성됨 - ~~주요 확장자별로 최소 한 번 이상 MD 생성이 검증된다.~~ → pdf/hwp/xlsx/pptx/docx 확인 -- 원본 경로와 MD 경로의 1:1 대응이 보장된다. → 원본 53,336 vs MD 48,906 (차이 4,430건, 원인 미확인) +- 원본 경로와 MD 경로의 1:1 대응이 보장된다. → 원본 53,249 vs MD 48,906 (차이 4,343건, 원인 미확인) - 본문 텍스트 추출이 완료된다. → **미완료**: 48,906건 중 48,744건이 `text_length: 0` (본문 미추출 99.7%) ## 현재 상태 (260320) -- `6.Company X_md/`에 48,906개 MD 생성 완료 (front matter만, 본문 text_length: 0이 48,744건) +- `6.Company X_md/`에 48,906개 MD 생성 완료 (front matter만, 본문 text_length: 0이 48,744건, 99.7% 미추출) - 파일명 규칙: `원본파일명_확장자.md` 적용됨 - front matter: title, source_path, md_path, file_type, file_size, modified_at, status, text_length, summary @@ -57,7 +57,9 @@ closing_criteria: 원본 스캔부터 파일별 MD 생성과 front matter 최소 - 이 단계의 핵심 산출물인 `MD 파생본 + front matter 최소 메타`는 이미 만들어졌다. - 다만 `48,906개 중 48,744건 text_length: 0` 상태라서, 실제 운영 가치는 아직 낮다. -- 원본 53,336건과 MD 48,906건의 차이 4,430건도 남아 있어, `생성 완료`보다 `생성 후 본문 부재와 누락 원인 규명`이 현재의 직접 과제다. +- NAS 원본: /mnt/nas/workspace/6.Company X — 53,249파일. 원본과 MD 48,906건의 차이 4,343건 원인 미확인. +- DB: team_document 1,174건 / team_document_chunk 3,474건 (임베딩: Gemini Embedding 2, 768d). +- `생성 완료`보다 `생성 후 본문 부재와 누락 원인 규명`이 현재의 직접 과제다. ## Unresolved diff --git a/journey/research/rag/260320_FrontMatter_메타데이터_설계_리서치.md b/journey/research/rag/260320_FrontMatter_메타데이터_설계_리서치.md index cec9fd5..af58bd9 100644 --- a/journey/research/rag/260320_FrontMatter_메타데이터_설계_리서치.md +++ b/journey/research/rag/260320_FrontMatter_메타데이터_설계_리서치.md @@ -139,10 +139,12 @@ sync_status: synced - OCR/요약/그래프 연결이 붙을 때 메타를 확장한다. - 메타 확장의 기준은 "검색 품질이나 운영 자동화에 실제 도움이 되는가"로 잡는다. -## 8-1. 현재 구현 반영 (2026-03-22) +## 현재 상태 보정 (2026-03-22) -- 실제 MD에는 `title`, `source_path`, `md_path`, `file_type`, `file_size`, `modified_at`, `status`, `text_length`, `summary`가 우선 반영돼 있다. -- 권장 메타 전체와 실제 메타 사이에는 아직 차이가 있으며, 특히 `ocr_status`, `embedding_status`, `sync_status`, `related`는 전면 적용되지 않았다. +- 실제 MD front matter: `title`, `source_path`, `md_path`, `file_type`, `file_size`, `modified_at`, `status`, `text_length`, `summary`. +- DB 운영 테이블: team_document(1,174건) / team_document_chunk(3,474건). 설계 별칭 document_files = team_document, document_chunks = team_document_chunk. +- `ocr_status`, `embedding_status`, `sync_status`, `related`는 MD 전면 적용 안 됨. +- 임베딩: Gemini Embedding 2, 768d. ## Unresolved diff --git a/journey/research/rag/260320_MD_중간표현_SSOT_설계_리서치.md b/journey/research/rag/260320_MD_중간표현_SSOT_설계_리서치.md index 001c6e1..5543dae 100644 --- a/journey/research/rag/260320_MD_중간표현_SSOT_설계_리서치.md +++ b/journey/research/rag/260320_MD_중간표현_SSOT_설계_리서치.md @@ -87,15 +87,17 @@ research_target: 다형식 원본을 위한 Markdown 중간표현 SSOT 규칙 - 최소 MD에는 "이 파일이 무엇인지"와 "현재 어느 정도까지 해석됐는지"만 적어도 된다. - 이후 표 추출, OCR, 요약, 태그는 후속 배치로 누적하는 구조가 좋다. -## 9-1. 현재 구현 반영 (2026-03-22) +## 현재 상태 보정 (2026-03-22) -- 최소 MD 생성 자체는 이미 48,906개 규모로 진행됐다. -- 하지만 본문이 비어 있는 MD가 48,744건이라, 이 리서치의 핵심은 `MD를 만들자`보다 `MD를 실제로 읽을 수 있게 채우자`로 옮겨갔다. +- MD 파생본: 48,906개 생성 완료. 본문 text_length: 0이 48,744건(99.7% 미추출). +- NAS 원본: /mnt/nas/workspace/6.Company X — 53,249파일. +- OCR: 미구현. 본문 채움의 핵심 과제가 여전히 열려 있다. +- DB 적재: team_document 1,174건 / team_document_chunk 3,474건 (임베딩: Gemini Embedding 2, 768d). ## Unresolved - 99.7% 본문 미추출 상태를 어떤 우선순위와 배치로 해소할지 아직 정해지지 않았다. -- 원본 53,336건과 MD 48,906건의 차이를 설명하는 실패/스킵 기준이 문서화되지 않았다. +- 원본 53,249건과 MD 48,906건의 차이를 설명하는 실패/스킵 기준이 문서화되지 않았다. ## 10. 관련 문서 diff --git a/journey/research/rag/260320_OCR_선별적용_정책_리서치.md b/journey/research/rag/260320_OCR_선별적용_정책_리서치.md index 6d8a60e..b1aa189 100644 --- a/journey/research/rag/260320_OCR_선별적용_정책_리서치.md +++ b/journey/research/rag/260320_OCR_선별적용_정책_리서치.md @@ -90,18 +90,19 @@ research_target: OCR 전수 대신 선별 적용 기준과 비용-품질 정책 - OCR과 LLM 해석을 한 배치에 섞는 것 - OCR 실패 파일을 즉시 수동 처리 대상으로 돌리는 것 -## 10. 관련 문서 +## 현재 상태 보정 (2026-03-22) -- [Front Matter 메타데이터 설계 리서치](./260320_FrontMatter_메타데이터_설계_리서치.md) -- [PGVector·JSONB RAG 스키마 설계 리서치](./260320_PGVector_JSONB_RAG_스키마_설계_리서치.md) -- [OCR 모델 벤치마크 리서치](./260320_OCR_모델_벤치마크_리서치.md) - -## 10-1. 현재 구현 반영 (2026-03-22) - -- OCR 정책은 아직 설계 단계이고, 실제 운영은 `텍스트 추출 + PDF 바이너리 직접 임베딩` 수준이다. -- 따라서 OCR 문서는 독립 과제가 아니라 `본문 미추출 99.7%` 문제와 연결해서 읽어야 한다. +- OCR: 미구현. 정책은 설계 단계, 실제 운영은 텍스트 추출 + PDF 바이너리 직접 임베딩 수준. +- MD 파생본 48,906개 중 본문 text_length: 0이 48,744건(99.7% 미추출) — OCR이 본문 채움의 핵심 수단. +- NAS 원본: /mnt/nas/workspace/6.Company X — 53,249파일. ## Unresolved - OCR 대상을 고른 뒤 어떤 배치 단위와 실패 재시도로 돌릴지 운영 기준이 없다. - OCR 보강이 실제 검색 품질을 얼마나 올리는지 측정 지표가 아직 고정되지 않았다. + +## 10. 관련 문서 + +- [Front Matter 메타데이터 설계 리서치](./260320_FrontMatter_메타데이터_설계_리서치.md) +- [PGVector·JSONB RAG 스키마 설계 리서치](./260320_PGVector_JSONB_RAG_스키마_설계_리서치.md) +- [OCR 모델 벤치마크 리서치](./260320_OCR_모델_벤치마크_리서치.md) diff --git a/journey/research/rag/260320_PGVector_JSONB_RAG_스키마_설계_리서치.md b/journey/research/rag/260320_PGVector_JSONB_RAG_스키마_설계_리서치.md index f42bbf4..209f165 100644 --- a/journey/research/rag/260320_PGVector_JSONB_RAG_스키마_설계_리서치.md +++ b/journey/research/rag/260320_PGVector_JSONB_RAG_스키마_설계_리서치.md @@ -130,11 +130,14 @@ create index if not exists idx_document_chunks_embedding_hnsw - `status`와 `metadata_jsonb` 안의 `sync_status`, `ocr_status`, `embedding_status`를 함께 관리한다. - soft delete를 우선 사용해 감사 추적과 복구 가능성을 남긴다. -## 9-1. 현재 구현 반영 (2026-03-22) +## 현재 상태 보정 (2026-03-22) -- 운영 실제 테이블은 `document_files`, `document_chunks`가 아니라 `team_document`, `team_document_chunk`다. -- `tsvector + GIN`, `PGVector HNSW`, `JSONB`, `hybrid 검색`은 이미 구현됐다. -- 관계 저장은 권장 `document_relations` 테이블이 아니라 Apache AGE 그래프 쪽으로 이동했다. +- 설계 별칭 → 운영 실체: document_files = team_document, document_chunks = team_document_chunk, document_relations = Apache AGE 그래프. +- team_document: 1,174건 / team_document_chunk: 3,474건. +- tsvector + GIN 인덱스: 구현 완료 (team_document_chunk.tsv, 트리거 자동 생성). +- 하이브리드 검색 (vector + keyword + graph RRF): 구현 완료. +- 임베딩: Gemini Embedding 2, 768d. +- Apache AGE: companyx_docs, document_graph 그래프 2개 운용 중. ## Unresolved diff --git a/journey/research/rag/260320_PostgreSQL_그래프확장_설계_리서치.md b/journey/research/rag/260320_PostgreSQL_그래프확장_설계_리서치.md index 2c7ae03..303ee40 100644 --- a/journey/research/rag/260320_PostgreSQL_그래프확장_설계_리서치.md +++ b/journey/research/rag/260320_PostgreSQL_그래프확장_설계_리서치.md @@ -154,11 +154,12 @@ RETURN r.title - `document_relations` 테이블 대신 AGE 그래프로 관계 관리. - PGVector(의미검색) + AGE(관계탐색)를 하나의 DB에서 하이브리드 운용. -## 8-1. 현재 구현 반영 (2026-03-22) +## 현재 상태 보정 (2026-03-22) -- Apache AGE는 더 이상 예정이 아니라 운영 중이다. -- 검색 경로에서도 `graph_score`가 합산되고, `companyx_docs`, `document_graph` 그래프가 실제로 존재한다. -- 따라서 이 문서의 남은 역할은 `왜 AGE를 쓰는가`보다 `운영 그래프를 어떤 규칙으로 유지할 것인가`에 가깝다. +- Apache AGE: 운영 중. companyx_docs, document_graph 그래프 2개 운용. +- 하이브리드 검색 (vector + keyword + graph RRF): 구현 완료. graph_score가 검색 경로에 합산됨. +- 설계 별칭 document_relations = 운영 실체 Apache AGE 그래프. +- team_document: 1,174건 / team_document_chunk: 3,474건. ## Unresolved diff --git a/journey/research/rag/260320_다형식문서_RAG_자동수집_정규화_전략_리서치.md b/journey/research/rag/260320_다형식문서_RAG_자동수집_정규화_전략_리서치.md index 1f9387a..ba249a9 100644 --- a/journey/research/rag/260320_다형식문서_RAG_자동수집_정규화_전략_리서치.md +++ b/journey/research/rag/260320_다형식문서_RAG_자동수집_정규화_전략_리서치.md @@ -103,15 +103,18 @@ research_target: 다형식 원본의 자동 수집·정규화 전략 정리 5. 100~500개 파일로 샘플 검증 6. 이후 배치 자동화와 증분 동기화로 확대 -## 9-1. 현재 구현 반영 (2026-03-22) +## 현재 상태 보정 (2026-03-22) -- 1~4번은 개념 정리 수준을 넘어서 일부 구현까지 들어갔다. -- 특히 샘플 200개 인덱싱과 하이브리드 검색, AGE 기반 연결은 이미 운영 코드에 반영돼 있다. -- 남은 핵심은 `배치 자동화와 증분 동기화로 확대` 부분이다. +- NAS 원본: /mnt/nas/workspace/6.Company X — 53,249파일. MD 파생본: 48,906개. +- DB: team_document 1,174건 / team_document_chunk 3,474건. 임베딩: Gemini Embedding 2, 768d. +- tsvector + GIN: 구현 완료. 하이브리드 검색 (vector + keyword + graph RRF): 구현 완료. +- Apache AGE: companyx_docs, document_graph 그래프 2개 운용 중. +- 증분 동기화 자동화: 미구현 (수동 스크립트만). OCR: 미구현. +- MD 본문 text_length: 0이 48,744건(99.7% 미추출). ## Unresolved -- 재색인 트리거, 실패 격리/재시도, 원본-MD-DB-그래프 우선순위가 아직 문서 한 곳에 고정되지 않았다. +- 증분 동기화 자동화 정책(트리거·스케줄·실패 재시도)이 문서 한 곳에 고정되지 않았다. - 2천/5천/1만 건 단계에서 어떤 품질 게이트로 확장 여부를 판단할지 미정이다. ## 10. 관련 문서