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

View File

@ -134,6 +134,25 @@ tags: [research, companyx, rag, answer-composition, scenario, troubleshooting]
- 이번 이슈의 직접 레이어는 `answer composition`입니다. - 이번 이슈의 직접 레이어는 `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) ## 해석(Interpretation)
### 1. 이 문제는 검색 인프라 장애가 아니라 응답 정책 부재 문제다 ### 1. 이 문제는 검색 인프라 장애가 아니라 응답 정책 부재 문제다
@ -155,7 +174,12 @@ tags: [research, companyx, rag, answer-composition, scenario, troubleshooting]
- 문제는 그 계약이 코드에서 재현 가능한 판정 규칙으로 변환되지 않은 것입니다. - 문제는 그 계약이 코드에서 재현 가능한 판정 규칙으로 변환되지 않은 것입니다.
- 따라서 다음 plan은 새 문구를 더 쓰는 게 아니라, 스킬 계약을 코드가 판정 가능한 구조로 바꾸는 데 집중해야 합니다. - 따라서 다음 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. 수치형 질문의 `단정 가능 / 단정 불가`를 문서 메타데이터만으로 먼저 판정할지, 후속 요약 계층을 둘지는 아직 미확정입니다. 2. 수치형 질문의 `단정 가능 / 단정 불가`를 문서 메타데이터만으로 먼저 판정할지, 후속 요약 계층을 둘지는 아직 미확정입니다.
3. `재정리형 질문`을 이전 응답 재사용으로 처리할지, 다시 검색해도 되는지는 아직 미확정입니다. 3. `재정리형 질문`을 이전 응답 재사용으로 처리할지, 다시 검색해도 되는지는 아직 미확정입니다.
4. Company X 전용 규칙을 독립 계약 모듈로 둘지, 범용 grounding 정책으로 올릴지는 아직 미확정입니다. 4. Company X 전용 규칙을 독립 계약 모듈로 둘지, 범용 grounding 정책으로 올릴지는 아직 미확정입니다.
5. 현재 Company X 컬렉션이 실제로 `384d`인지, `Gemini 2 / 768d` 재임베딩이 일부라도 반영됐는지는 아직 미확정입니다.
6. NAS 최신 문서 동기화본이 Company X RAG 검색 컬렉션에 언제, 어떤 방식으로 반영되는지도 아직 미확정입니다.
## 결론 ## 결론
- 이 이슈의 직접 원인은 `Company X 검색 실패`가 아니라 `질문 적합 근거 선별 없는 답변 합성`입니다. - 이 이슈의 직접 원인은 `Company X 검색 실패`가 아니라 `질문 적합 근거 선별 없는 답변 합성`입니다.
- 더 근본 원인은 `질문 유형 계약 없이 일부 질문만 하드코딩 특례 처리하는 구조`입니다. - 더 근본 원인은 `질문 유형 계약 없이 일부 질문만 하드코딩 특례 처리하는 구조`입니다.
- 따라서 다음 plan은 `프롬프트 문장 추가`가 아니라 아래 3가지를 고정해야 합니다. - 다만 현재는 `NAS 대량 문서 운영 상태``Gemini Embedding 2 전환 상태`가 겹쳐 있으므로, 다음 plan은 구현 전에 운영 전제 재검증부터 고정해야 합니다.
- 그 전제가 닫힌 뒤 구현 단계에서 아래 3가지를 고정해야 합니다.
1. 질문 유형별 판정 계약 1. 질문 유형별 판정 계약
2. 검색 결과의 질문 적합도 판정 계약 2. 검색 결과의 질문 적합도 판정 계약
3. 근거 부족 시 명시적 실패 계약 3. 근거 부족 시 명시적 실패 계약
## 다음 plan이 반드시 고정해야 할 항목 ## 다음 plan이 반드시 고정해야 할 항목
1. 재오픈 기준 질문 3개를 공통 검증셋으로 고정할 것 1. 현재 Company X RAG의 실제 임베딩 경로와 컬렉션 차원(`384d`/`768d`)을 먼저 재검증할 것
2. `success`의 정의를 `검색 hit 존재`가 아니라 `직접 답 + 질문 적합 근거 또는 명시적 부족 안내`로 바꿀 것 2. NAS 최신 문서 동기화본이 현재 검색 컬렉션에 언제 반영되는지 확인할 것
3. 질문별 direct answer 하드코딩 추가를 금지하고, 질문 유형별 공통 계약으로 대체할 것 3. 재오픈 기준 질문 3개를 현재 운영 상태에서 다시 재현해 `검색 실패 / 무관한 hit / 답변 합성 실패`를 분리할 것
4. `무관한 청크 반환``실패`로 판정하는 경계를 추가할 것 4. `success`의 정의를 `검색 hit 존재`가 아니라 `직접 답 + 질문 적합 근거 또는 명시적 부족 안내`로 바꿀 것
5. 스킬 문서 계약과 코드 계약을 1:1로 맞출 것 5. 질문별 direct answer 하드코딩 추가를 금지하고, 질문 유형별 공통 계약으로 대체할 것
6. `무관한 청크 반환``실패`로 판정하는 경계를 추가할 것
7. 스킬 문서 계약과 코드 계약을 1:1로 맞출 것
## 관련 문서 ## 관련 문서
- [Company X RAG 답변 합성 회귀](../troubleshooting/260312_companyx_rag_answer_composition_regression.md) - [Company X RAG 답변 합성 회귀](../troubleshooting/260312_companyx_rag_answer_composition_regression.md)