Update Company X RAG research and plan

This commit is contained in:
happybell80 2026-03-17 11:57:51 +09:00
parent 0593dae69b
commit 45f6ddf79e
2 changed files with 63 additions and 12 deletions

View File

@ -7,7 +7,7 @@ tags: [plans, companyx, rag, answer-composition, scenario, troubleshooting]
**작성일**: 2026-03-15
**상태**: 구현완료_미검증
**검토일**: 2026-03-17
**목표**: Company X 내부문서 근거응답 경로를 `대표 질문 특례 처리`에서 `공통 계약 기반 답변합성` 구조로 바꿔, 대응 troubleshooting 문서와 scenario 문서를 함께 닫습니다.
**목표**: Company X 내부문서 근거응답 경로를 `대표 질문 특례 처리`에서 `공통 계약 기반 답변합성` 구조로 바꾸되, 구현 전에 `현재 NAS 문서 운영 상태 + 현재 임베딩 전제`를 다시 닫고 대응 troubleshooting 문서와 scenario 문서를 함께 닫습니다.
> **2026-03-17 코드 검토 결과**: 이 계획의 핵심 구현(Phase 1~4)은 이미 코드에 반영되어 있음.
> Phase 5(테스트 고정 및 Slack 실응답 검증)가 미완료 상태.
@ -20,6 +20,8 @@ tags: [plans, companyx, rag, answer-composition, scenario, troubleshooting]
- [Company X RAG 스킬 문서](../../skills/companyx-rag/SKILL.md)
## 1. 이번 계획의 결정
- 현재 코드 기준으로 Phase 1~4 핵심 구현은 반영된 상태로 봅니다.
- 남은 핵심은 `테스트/실응답 검증``현재 NAS 문서 동기화 상태 + 현재 Company X 컬렉션 차원 + 현재 Gemini Embedding 2 전환 상태` 재검증입니다.
- 이 문제는 `검색 인프라 확장`보다 `답변 합성 계약 부재` 문제로 다룹니다.
- 질문별 `if` 분기, 질문별 direct answer, 질문별 프롬프트 추가로 닫지 않습니다.
- `Company X grounding` 경로에 공통 계약 3개를 먼저 고정합니다.
@ -30,6 +32,8 @@ tags: [plans, companyx, rag, answer-composition, scenario, troubleshooting]
## 2. 범위
- 포함:
- Company X RAG의 현재 임베딩 경로/차원 재검증
- NAS 최신 문서 동기화본과 검색 컬렉션 반영 상태 확인
- `rb8001/app/services/companyx_grounding_service.py`
- Company X 재오픈 기준 질문 3개의 응답 계약
- `SKILL.md`와 코드 계약 정합화
@ -78,6 +82,18 @@ tags: [plans, companyx, rag, answer-composition, scenario, troubleshooting]
## 5. 구현 단계
### Phase 0. 운영 전제 재검증
- 아래 4가지를 먼저 확인합니다.
- Company X RAG가 현재 참조하는 실제 컬렉션과 임베딩 차원
- `companyx-rag/SKILL.md``384d` 전제가 아직 유효한지
- NAS 최신 동기화 문서가 현재 검색 컬렉션에 반영되는 경로와 시점
- 재오픈 기준 질문 3개의 현행 재현 결과
- 목표:
- `답변합성 회귀``임베딩/인덱싱 전제 충돌`을 한 문제로 섞지 않도록 현재 기준값을 먼저 고정합니다.
- 현재 상태:
- 이 단계는 문서상 미완료입니다.
- 코드 구현 완료 여부와 별개로, 종결 전 최신 운영 기준을 다시 닫아야 합니다.
### Phase 1. 구조 분리
- `companyx_grounding_service`에서 아래 책임을 분리합니다.
- 질문 유형 판정
@ -112,6 +128,7 @@ tags: [plans, companyx, rag, answer-composition, scenario, troubleshooting]
### Phase 5. 테스트 고정
- 최소 테스트:
- 현재 임베딩/컬렉션 전제가 바뀌어도 계약 테스트가 같은 의미를 유지
- 대표 성공 질문은 계속 성공
- 투자사 질문은 generic 문장 금지
- 휴가 질문은 무관한 청크 반환 금지
@ -120,6 +137,10 @@ tags: [plans, companyx, rag, answer-composition, scenario, troubleshooting]
- 테스트는 질문별 예외 성공이 아니라 공통 계약 준수 여부를 검증해야 합니다.
## 6. 검증 기준
- Phase 0에서 아래가 먼저 확인돼야 합니다.
1. Company X RAG의 실제 임베딩 경로와 차원이 문서/런타임 기준으로 식별된다.
2. NAS 최신 문서 동기화본과 검색 컬렉션 반영 경로가 설명 가능해진다.
3. 재오픈 기준 질문 3개의 현재 실패 양상이 다시 재현된다.
- 재오픈 기준 질문 3개에서 아래가 확인돼야 합니다.
1. 직접 답이 먼저 나온다.
2. 질문과 맞는 근거만 붙는다.
@ -131,13 +152,14 @@ tags: [plans, companyx, rag, answer-composition, scenario, troubleshooting]
## 7. 완료 판정 기준
1. [260312_companyx_rag_answer_composition_regression.md](../troubleshooting/260312_companyx_rag_answer_composition_regression.md)에서 정의한 재현 질문셋이 더 이상 회귀하지 않습니다.
2. [260312_companyx_내부문서_근거응답_사용자시나리오.md](../scenarios/260312_companyx_내부문서_근거응답_사용자시나리오.md)의 재오픈 기준 질문 3개가 기대 결과를 만족합니다.
3. `companyx_grounding_service`에 질문별 direct answer 특례를 추가하지 않고 공통 계약 구조로 바뀝니다.
4. 테스트가 추가되고 통과합니다.
5. 실행 결과는 `worklog 1건`으로 마감하고, 시나리오/트러블 문서와 양방향 링크를 연결합니다.
3. Company X RAG의 현재 임베딩 경로/차원과 NAS 문서 반영 경로가 `research`에 최신 기준으로 반영됩니다.
4. `companyx_grounding_service`에 질문별 direct answer 특례를 추가하지 않고 공통 계약 구조로 바뀝니다.
5. 테스트가 추가되고 통과합니다.
6. 실행 결과는 `worklog 1건`으로 마감하고, 시나리오/트러블 문서와 양방향 링크를 연결합니다.
## 8. 후속 경계
- 이 계획이 닫혀도 Company X 전체 문서군 확대나 범용 RAG 정책 공통화는 별도 계획으로 다룹니다.
- `Prompt DB`나 전역 오케스트레이션 구조 변경은 이번 계획 범위 밖입니다.
## 한 줄 결론
- 이번 계획은 `대표 질문 특례 처리 제거` 자체가 아니라, Company X 근거응답을 `질문 유형 계약 + 근거 채택 계약 + 실패 계약`으로 재구성해 시나리오와 트러블을 함께 닫는 작업입니다.
- 이번 계획은 `대표 질문 특례 처리 제거` 자체가 아니라, 현재 NAS 문서 운영 상태와 임베딩 전제를 다시 닫은 뒤 Company X 근거응답을 `질문 유형 계약 + 근거 채택 계약 + 실패 계약`으로 재구성해 시나리오와 트러블을 함께 닫는 작업입니다.

View File

@ -134,6 +134,25 @@ tags: [research, companyx, rag, answer-composition, scenario, troubleshooting]
- 이번 이슈의 직접 레이어는 `answer composition`입니다.
- 그러나 더 깊게 보면 `질문 유형 계약이 없는 규칙 하드코딩 구조`가 상위 원인입니다.
### 11. 현재 Company X RAG는 `NAS 대량 문서셋 + 임베딩 전환 이슈` 위에 놓여 있다
- `51123` 기준 점검에서 `/mnt/nas/workspace/6.Company X` 아래 실파일은 `53,249`개였고, fullscan 최신 summary는 `2026-03-17 01:23:10+09:00`, hierarchical 최신 summary는 `2026-03-17 11:00:06+09:00`까지 누적돼 있습니다.
- 의미:
- 지금 Company X RAG는 적은 대표 문서 몇 개만의 문제가 아니라, NAS에서 계속 동기화되는 대량 문서셋 위에서 동작해야 합니다.
- 따라서 대표 질문 2~3개만 통과하는 특례 구조로는 운영 상태를 닫을 수 없습니다.
### 12. Company X RAG의 임베딩 전제가 문서끼리 일치하지 않는다
- `DOCS/skills/companyx-rag/SKILL.md``Default embedding path: local 384d`로 적고 있습니다.
- 반면 `260316_임베딩_전체프로젝트_현황_및_SSOT_리서치.md``260316_임베딩_Gemini_Embedding_2_전환_문제오픈.md`는 로빙 전체 기준을 `Gemini Embedding 2`, `768d`, 전수 교체 대상으로 둡니다.
- 의미:
- 지금 Company X 답변합성 문제는 순수한 응답 문구 문제만이 아닙니다.
- 어떤 임베딩 모델/차원/컬렉션 상태를 SSOT로 볼지부터 다시 닫아야 합니다.
### 13. 그래서 2026-03-15 기준 리서치만으로 바로 구현에 들어가면 전제 충돌을 안고 시작한다
- 2026-03-15 리서치는 답변합성 구조 문제를 정확히 짚었지만, 그 이후 열린 `Gemini Embedding 2` 전환 문제와 NAS 대량 문서 운영 상태까지는 반영하지 못했습니다.
- 의미:
- 지금 필요한 다음 단계는 `새 리서치 전체 재작성`이 아니라,
- `현재 NAS 문서량`, `현재 컬렉션 차원`, `현재 재임베딩 여부`, `현재 대표 질문 재현 상태`를 다시 확인하는 짧은 갱신 리서치입니다.
## 해석(Interpretation)
### 1. 이 문제는 검색 인프라 장애가 아니라 응답 정책 부재 문제다
@ -155,7 +174,12 @@ tags: [research, companyx, rag, answer-composition, scenario, troubleshooting]
- 문제는 그 계약이 코드에서 재현 가능한 판정 규칙으로 변환되지 않은 것입니다.
- 따라서 다음 plan은 새 문구를 더 쓰는 게 아니라, 스킬 계약을 코드가 판정 가능한 구조로 바꾸는 데 집중해야 합니다.
### 5. 하드코딩 프롬프트/문장 증식은 이 문제의 해법이 아니다
### 5. 다만 지금은 응답 계약 구현 전에 운영 전제를 다시 닫아야 한다
- Company X RAG는 이미 NAS 실문서 대량 적재 상태 위에서 동작하고 있습니다.
- 동시에 임베딩 SSOT는 `384d local``Gemini 2 / 768d` 문서가 공존합니다.
- 따라서 다음 plan의 첫 단계는 `답변합성 코드 수정`이 아니라 `운영 전제 재검증`이어야 합니다.
### 6. 하드코딩 프롬프트/문장 증식은 이 문제의 해법이 아니다
- 현재도 대표 질문 성공은 이미 하드코딩 특례에 기대고 있습니다.
- 이 상태에서 `투자사`, `휴가`, `투자 건수`, `규정`, `복지` 식으로 질문별 문장을 더 추가하면,
- 시나리오는 겉보기로만 닫히고
@ -167,21 +191,26 @@ tags: [research, companyx, rag, answer-composition, scenario, troubleshooting]
2. 수치형 질문의 `단정 가능 / 단정 불가`를 문서 메타데이터만으로 먼저 판정할지, 후속 요약 계층을 둘지는 아직 미확정입니다.
3. `재정리형 질문`을 이전 응답 재사용으로 처리할지, 다시 검색해도 되는지는 아직 미확정입니다.
4. Company X 전용 규칙을 독립 계약 모듈로 둘지, 범용 grounding 정책으로 올릴지는 아직 미확정입니다.
5. 현재 Company X 컬렉션이 실제로 `384d`인지, `Gemini 2 / 768d` 재임베딩이 일부라도 반영됐는지는 아직 미확정입니다.
6. NAS 최신 문서 동기화본이 Company X RAG 검색 컬렉션에 언제, 어떤 방식으로 반영되는지도 아직 미확정입니다.
## 결론
- 이 이슈의 직접 원인은 `Company X 검색 실패`가 아니라 `질문 적합 근거 선별 없는 답변 합성`입니다.
- 더 근본 원인은 `질문 유형 계약 없이 일부 질문만 하드코딩 특례 처리하는 구조`입니다.
- 따라서 다음 plan은 `프롬프트 문장 추가`가 아니라 아래 3가지를 고정해야 합니다.
- 다만 현재는 `NAS 대량 문서 운영 상태``Gemini Embedding 2 전환 상태`가 겹쳐 있으므로, 다음 plan은 구현 전에 운영 전제 재검증부터 고정해야 합니다.
- 그 전제가 닫힌 뒤 구현 단계에서 아래 3가지를 고정해야 합니다.
1. 질문 유형별 판정 계약
2. 검색 결과의 질문 적합도 판정 계약
3. 근거 부족 시 명시적 실패 계약
## 다음 plan이 반드시 고정해야 할 항목
1. 재오픈 기준 질문 3개를 공통 검증셋으로 고정할 것
2. `success`의 정의를 `검색 hit 존재`가 아니라 `직접 답 + 질문 적합 근거 또는 명시적 부족 안내`로 바꿀 것
3. 질문별 direct answer 하드코딩 추가를 금지하고, 질문 유형별 공통 계약으로 대체할 것
4. `무관한 청크 반환``실패`로 판정하는 경계를 추가할 것
5. 스킬 문서 계약과 코드 계약을 1:1로 맞출 것
1. 현재 Company X RAG의 실제 임베딩 경로와 컬렉션 차원(`384d`/`768d`)을 먼저 재검증할 것
2. NAS 최신 문서 동기화본이 현재 검색 컬렉션에 언제 반영되는지 확인할 것
3. 재오픈 기준 질문 3개를 현재 운영 상태에서 다시 재현해 `검색 실패 / 무관한 hit / 답변 합성 실패`를 분리할 것
4. `success`의 정의를 `검색 hit 존재`가 아니라 `직접 답 + 질문 적합 근거 또는 명시적 부족 안내`로 바꿀 것
5. 질문별 direct answer 하드코딩 추가를 금지하고, 질문 유형별 공통 계약으로 대체할 것
6. `무관한 청크 반환``실패`로 판정하는 경계를 추가할 것
7. 스킬 문서 계약과 코드 계약을 1:1로 맞출 것
## 관련 문서
- [Company X RAG 답변 합성 회귀](../troubleshooting/260312_companyx_rag_answer_composition_regression.md)