diff --git a/journey/research/260312_companyx_내부문서_rag_근거응답_현황_리서치.md b/journey/research/260312_companyx_내부문서_rag_근거응답_현황_리서치.md index ef2c7da..9921063 100644 --- a/journey/research/260312_companyx_내부문서_rag_근거응답_현황_리서치.md +++ b/journey/research/260312_companyx_내부문서_rag_근거응답_현황_리서치.md @@ -120,6 +120,84 @@ tags: [robeing, companyx, rag, research, internal-documents, grounding] - 또한 관련 원본 문서가 `skill-rag-file` 인덱스에 들어가 있지 않다. - 즉 현재 실패 원인은 `Company X 문서가 실제로 없어서`가 아니라, `있지만 로빙 답변 경로와 연결되지 않아서`다. +### 9. 현재 로빙 임베딩 경로 기준 실제 문서 인덱싱 시간은 수초~수십초가 아니라 수초 단위다 + +- `skill-rag-file` 실제 `/api/upload` 경로로 Company X 문서 2개를 직접 인덱싱해 시간을 확인했다. +- 유효한 기존 team_id를 사용해 `업로드 -> 텍스트 추출 -> 청킹 -> 임베딩 -> Chroma 저장`까지 포함한 전체 시간을 측정했다. +- 측정 결과: + - `옐로펀치X컴퍼니엑스 MOU` PDF `130,944B`: `0.608초`, `5 chunks` + - `오늘전통 사업계획서_컴퍼니엑스` PDF `12,937,755B`: `8.371초`, `104 chunks` +- 인덱싱 후 검색 시간도 확인했다. + - 질의 `공동 컨소시엄 협력` + - 검색 응답 시간: `0.059초` + - 결과: MOU 문서 청크 1건 반환 + +### 10. 현재 로빙 임베딩 모델은 384차원이고, StarsAndI가 쓰는 OpenAI 임베딩은 1536차원이다 + +- 현재 로빙 `skill-embedding` 런타임 설정은 아래와 같다. + - 모델: `multilingual-MiniLM-L12-v2` + - 차원: `384` +- 확인 근거: + - `skill-embedding/.env` + - `rb8001` 런타임 로그의 `Collection expecting embedding with dimension of 768, got 384` +- 비교 대상으로 본 StarsAndI 코드의 OpenAI 임베딩 경로는 아래와 같다. + - 모델: `text-embedding-3-small` + - 차원: `1536` +- 확인 근거: + - `starsandi/apps/apps/api-py/app/services/recommend.py` + - 실제 OpenAI 임베딩 API 호출 결과 `dim=1536` + +### 11. OpenAI 임베딩 단건 호출 시간은 현재 환경에서 대략 0.2초~3초, 평균 1.8초 수준이다 + +- StarsAndI가 쓰는 실제 모델 `text-embedding-3-small`로 대표 질문 1건을 3회 호출해 시간을 측정했다. +- 측정 결과: + - 1회: `2966.1ms` + - 2회: `2226.3ms` + - 3회: `234.3ms` + - 평균: `1808.9ms` +- 따라서 OpenAI 임베딩은 현재 환경에서 단건 기준 대략 `0.2초 ~ 3초`, 보통 `약 2초` 안팎으로 보는 것이 맞다. + +### 12. 2,000개 쉬운 문서 기준 인덱싱 시간은 로컬 모델이 더 짧고, OpenAI 모델도 절대 시간이 과도하지는 않다 + +- 현재 로빙 로컬 임베딩 경로(`384d`) 기준 현실 추정: + - 쉬운 문서 평균 `0.6초 ~ 2초/문서` + - `2,000개` 문서: 약 `20분 ~ 67분` +- OpenAI 임베딩 경로(`1536d`) 기준 현실 추정: + - 네트워크 왕복 포함 평균 `2.5초 ~ 4초/문서` + - `2,000개` 문서: 약 `83분 ~ 133분` +- 따라서 `2,000개 쉬운 문서` 범위는 두 경로 모두 `몇 시간 이내`에 검증 가능하다. + +### 13. OpenAI 임베딩 비용은 2,000개 문서 규모에서는 병목이 아니다 + +- `text-embedding-3-small`의 현재 공식 가격은 `1M tokens당 $0.02`다. +- 문서당 평균 토큰 수를 가정한 대략 비용: + - `1,000 tokens x 2,000문서 = 2M tokens` -> 약 `$0.04` + - `2,000 tokens x 2,000문서 = 4M tokens` -> 약 `$0.08` + - `5,000 tokens x 2,000문서 = 10M tokens` -> 약 `$0.20` +- 따라서 이번 주제에서 OpenAI 임베딩 선택의 핵심 기준은 비용보다 `품질`, `속도`, `운영 단순성`이다. + +### 14. 품질 비교 테스트는 지금 바로 설계 가능한 상태다 + +- 현재 단계에서 가능한 최소 품질 테스트는 아래 구조다. + - Company X 질문 `20~50개`를 고정한다. + - 각 질문에 대해 사람이 `정답 근거 문서`를 1차 지정한다. + - 같은 문서셋을 `384d 로컬 모델`과 `1536d OpenAI 모델`로 각각 인덱싱한다. + - 같은 질문셋을 돌려 `정답 문서가 상위 결과에 들어오는지`를 비교한다. +- 이 비교는 아직 답변 생성 LLM 품질이 아니라, `검색 근거 품질`을 먼저 비교하는 테스트다. +- 현재 문제의 본질이 `근거 연결`인 점을 고려하면, 이 단계에서는 생성 답변보다 `retrieval quality`를 먼저 보는 것이 맞다. + +### 15. 품질 비교에서 바로 쓸 수 있는 지표는 이미 정리할 수 있다 + +- `Recall@5` + - 정답 근거 문서가 상위 5개 안에 들어오는지 +- `MRR` + - 정답 근거 문서가 평균 몇 위에 오는지 +- `근거 문단 사용 가능성` + - 사람이 봤을 때 바로 답변 근거로 쓸 수 있는 청크인지 +- `응답 시간` + - 인덱싱 시간, 검색 시간 +- 현재 단계에서 가장 중요한 지표는 `정답률`보다 `근거 일관성`과 `상위 검색 적중률`이다 + ## Interpretation ### 1. 아이디어 문서는 유효한 가설이다 @@ -151,6 +229,20 @@ tags: [robeing, companyx, rag, research, internal-documents, grounding] - `문서 표현은 공동 운영/협력 운영/협력기관으로 조금씩 다르다` 를 함께 답하는 편이 더 정확하다. +### 5. 현재 단계에서 전체 5만여 개를 먼저 넣는 것보다 2천 개 샘플 품질 비교가 더 맞다 + +- 전체 `52,833개` 경로를 한 번에 인덱싱하는 것은 가능하더라도, 지금 필요한 질문은 `될 수 있는가`보다 `어떤 모델/경로가 더 낫고 실제 근거 검색이 맞는가`다. +- 이미 시간 측정상 `2,000개 쉬운 문서` 범위는 현실적으로 `1~2시간대` 안에서 비교 가능하다. +- 따라서 다음 `plans`는 먼저 `대표 문서군 2,000개 내외 샘플 인덱싱 + 20~50개 질문셋 품질 비교`를 우선 고정하는 것이 맞다. + +### 6. 임베딩 모델 선택 기준은 비용보다 검색 품질과 운영 복잡도다 + +- 비용 차이는 `2,000개` 규모에서는 매우 작다. +- 실제 선택 기준은 아래가 된다. + - `384d 로컬`: 빠름, 외부 의존 적음, 운영 단순 + - `1536d OpenAI`: 네트워크 의존, 약간 느림, 그러나 품질 우위 가능성 존재 +- 즉 다음 계획 단계에서 해야 할 것은 `이론 비교`가 아니라 `같은 질문셋으로 실제 retrieval quality를 비교하는 실험`이다. + ## Unresolved 1. Company X 소속 사용자 판별 기준 @@ -169,12 +261,20 @@ tags: [robeing, companyx, rag, research, internal-documents, grounding] 5. 질문 해석 규칙 - `근거 있어?`, `자료 기준으로`, `내부 문서 기준으로` 같은 표현을 별도 의도로 볼지, 일반 질문에 Company X 컨텍스트를 자동 적용할지 아직 미정이다. +6. 샘플 문서셋 구성 +- `2,000개 쉬운 문서`를 어떤 기준으로 뽑을지 아직 정해지지 않았다. +- 오늘전통, MOU, 프로그램 소개, 운영안, 보도자료 초안 같은 문서군 우선순위를 먼저 고정해야 한다. + +7. OpenAI 1536d와 로컬 384d의 실제 검색 품질 비교 결과 +- 현재는 시간/비용/구조 확인만 끝났고, retrieval quality 비교 실험 결과는 아직 없다. + ## 현재 결론 - 대표 질문에 대한 현재 실제 로빙 답변은 기대 시나리오를 만족하지 못한다. - 그러나 내부 NAS 원본에는 관련 근거 문서가 실제로 존재한다. - 현재 실패 원인은 `Company X 근거 없음`이 아니라 `Company X 근거 문서가 런타임 RAG 경로와 연결되지 않음`이다. -- 따라서 다음 단계 `plans`는 `문서 색인`, `권한 경계`, `질문 해석`, `근거답변 형식`을 한 번에 고정하는 계획 문서여야 한다. +- 시간과 비용 조사 결과, `2,000개 쉬운 문서` 규모는 실험 가능한 범위이며 비용도 병목이 아니다. +- 따라서 다음 단계 `plans`는 `2,000개 샘플 문서셋`, `20~50개 질문셋`, `384d vs 1536d retrieval quality 비교`, `문서 색인`, `권한 경계`, `질문 해석`, `근거답변 형식`을 한 번에 고정하는 계획 문서여야 한다. ## 관련 문서 - [Company X 내부 문서 RAG 응답 아이디어](../ideas/260312_companyx_내부문서_rag_응답_아이디어.md)