DOCS/workflow/03_rag/companyx_grounding_pipeline.md
happybell80 9f8fa21830 RAG 워크플로우 정비: 3중 검색 반영 + 단계별 증분 인덱싱 워크플로우 추가
- companyx_grounding_pipeline: team_id 기반 라우팅, 멀티쿼리, hybrid RRF 반영
- rag_search_grounding_request: search_mode, threshold, 점수 필드 추가
- rag_upload_indexing_pipeline: 청킹/임베딩/tsvector 기준 명시
- companyx_incremental_indexing_workflow: 200→2000→5000 단계별 실행 흐름 (신규)
- README: 인덱스에 증분 인덱싱 워크플로우 추가

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-21 16:41:17 +09:00

68 lines
3.5 KiB
Markdown

tags: [workflow, rag, companyx, grounding, answer]
# Company X Grounding 파이프라인
## 목적
- Company X 소속 사용자의 내부 문서 질문에 대해 로빙이 근거를 붙여 답하게 한다.
- 직접 답과 근거 문서를 함께 반환하는 기준을 고정한다.
## 상위 원칙
- [RAG Workflow Index](./README.md)
- [global-principles.md](../../../../0_VALUE/00_Principles/global-principles.md)
- [writing-principles.md](../../../../0_VALUE/02_Governance/writing-principles.md)
## 입력
- 사용자 질문
- 사용자 ID
- 검색된 근거 문서 목록
- 근거 문서 메타데이터
## 출력
- 직접 답
- 근거 문서명
- 근거 문단 요약
- 필요 시 위치 정보
- 근거 부족 시 명시적 실패 응답
## 처리 순서
1. `team_id == COMPANYX_TEAM_ID`이면 grounding 경로로 진입한다. 마커 체크 없이 team_id 기반으로 판단한다.
2. 질문 유형을 분류한다 (설명형/사실확인형/수치확인형/재정리형).
3. 멀티쿼리를 생성한다 (`_build_query_candidates()`, 7~9개 변형).
4. 하이브리드 검색(벡터+키워드 RRF, search_mode=hybrid)으로 상위 결과를 수집한다.
5. 검색 결과를 LLM에 컨텍스트로 전달하고, LLM이 질문 적합도를 판단해 답변한다.
6. LLM 응답을 Pydantic(`CompanyXRAGOutput`)으로 검증한다.
7. 근거가 부족하면 LLM이 `failure_reason`을 명시하고, 추정 답변 대신 실패 응답으로 끝낸다.
## 검색 모드
- 기본 검색 모드는 `hybrid`이다 (벡터+키워드 RRF 합산).
- 벡터 검색: PGVector cosine similarity (Gemini Embedding 2, 768d).
- 키워드 검색: PostgreSQL tsvector + GIN 인덱스, prefix 매칭(`:*`).
- 점수 합산: RRF (Reciprocal Rank Fusion, k=60), 정규화하여 0~1 범위로 반환.
- Apache AGE 그래프 점수는 hook으로 가산 가능 (현재 보조적 위치).
## 근거 선별 원칙
- 키워드 기반 룰로 검색 결과를 필터링하지 않는다 (룰베이스 절제 원칙 — global-principles.md §B.6).
- 하이브리드 검색이 반환한 RRF 정규화 점수 순서를 신뢰하고, LLM이 컨텍스트를 보고 적합도를 재판단한다.
- 근거 선별 책임은 LLM에 있으며, 코드 레벨에서는 점수 상위 결과를 문서 다양성 기준으로 선택만 한다.
## 실패 분기
- 검색 결과가 0건이면 `문서 없음`으로 실패한다.
- LLM이 컨텍스트만으로 답변 불가로 판단하면 `failure_reason`을 채우고, 성공처럼 반환하지 않는다.
- 수치형 질문에서 값이 없으면 추정하지 않는다.
- 내부 규정이나 최신 집계가 없으면 `문서 없음`, `미확인`, `불일치` 중 하나로 명시한다.
- 메타 대화로 회피하지 않는다.
## 현재 기준
- 이 흐름은 `rb8001` 답변 합성 규칙과 연결된다.
- 검색 결과를 그대로 붙이는 방식은 허용하지 않는다.
- 질문 유형 분류는 LLM 프롬프트 톤 조절용으로만 사용한다.
## 검증 기준
- `오늘전통/옐로펀치` 같은 기준 질문에서 직접 답 + 근거 문서가 함께 나와야 한다.
- `투자사 수`, `휴가 규정` 같은 근거 부족 질문은 추정 없이 실패해야 한다.
- Slack 실응답과 테스트 응답이 같은 기준을 따라야 한다.
## 관련 문서
- [RAG 검색·Grounding 요청](./rag_search_grounding_request.md)
- [Company X 내부 문서 근거응답 사용자 시나리오](../../journey/scenarios/260312_companyx_내부문서_근거응답_사용자시나리오.md)