AI Systems / Education

기존 구조로 지원할 수 없던 요구사항을 위해 운영 파이프라인을 다시 설계하다

고객은 문제 생성 도구를 자사 서비스에 내장하려 했습니다. 고객 서비스에서는 하나의 지문으로 서로 연결된 문제 두 개를 만들어야 했지만, 기존 프로세스는 한 번에 독립적인 문제 하나만 생성했고 여러 문제가 공유하는 지문 컨텍스트가 없었습니다. 즉시 개선할 수 있는 범위와 구조 변경이 필요한 범위를 나누어 설명하고 3주 안에 재설계하겠다고 약속했습니다. 2인 팀으로 생성 흐름을 다시 만들었고, 아키텍처 계획·프롬프트 엔지니어링·검색 개선·GPT API 테스트를 직접 담당했습니다.

실서비스 배포 · 연간 계약 체결 2인 팀2024년 2–12월LangChain · RAG · GPT
15초8초

생성 속도

5%1.5%

실패율

3

약속하고 지킨 재설계 기간

약 800

의사결정의 근거가 된 GPT API 테스트

이 페이지의 목차
  1. 01프로젝트 개요
  2. 02내가 담당한 범위
  3. 03변경 전 시스템
  4. 04새로운 고객 요구사항
  5. 05고객과 요구사항 범위 나누기
  6. 06핵심 의사결정
  7. 07변경 전후 아키텍처
  8. 083주
  9. 09테스트와 성능
  10. 10결과
  11. 11배운 점
01

프로젝트 개요

고객B2B 영어 교육 콘텐츠 기업 (익명화)
제품RAG 기반 영어 문제 생성 서비스
기간2024년 2–12월
팀 구성2인 팀. 아키텍처 변경은 공동 구현
담당 역할기획 및 엔지니어링: 고객 요구사항 조율, 아키텍처 계획, 검색·프롬프트 개선, GPT API 테스트
기술 환경LangChain · RAG · GPT API · 벡터 검색
현재 상태배포 완료. 고객 요구사항 납품, 연간 계약 체결
02

내가 담당한 범위

새로운 요구사항을 프롬프트 수정으로만 처리하지 않고, 고객과 엔지니어링 사이에서 구조적 문제를 해결했습니다.

직접 구현검색과 생성 과정에서 반복되던 품질 문제 진단.
직접 구현고객 요구사항을 즉시 가능한 개선과 아키텍처 변경이 필요한 작업으로 분리하고, 그 차이를 고객에게 직접 설명.
직접 구현프롬프트 엔지니어링과 약 800회의 GPT API 테스트.
직접 구현검색 샘플 선택, 문제 구조, 검증, 토큰 관리, 캐싱 개선.
공동 구현재설계: 계획을 세우고 동료 한 명과 함께 구현했습니다.
03

변경 전 시스템

서비스는 LangChain, RAG, GPT를 활용해 지문에서 영어 문제를 생성하고 있었습니다. 이미 사용 중이었지만 생성 품질이 점차 흔들리고 있었습니다.

  • 같은 문제가 중복 생성됐습니다.
  • 오답 선택지가 지문과 관련 없는 내용으로 생성되기도 했습니다.
  • Few-shot 검색이 의도한 문제 유형이나 학생 수준과 맞지 않는 예시를 선택했습니다.
  • 생성 실패가 최종 결과 전에 일관되게 걸러지지 않았습니다.

개별 프롬프트만의 문제가 아니었습니다. 검색, 출력 구조, 검증 과정이 모두 최종 품질에 영향을 주고 있었습니다.

04

새로운 고객 요구사항

고객은 생성 도구를 자사 서비스에 내장할 계획이었고, 1지문 2문항은 고객 제품에서 반드시 지원해야 하는 형식이었습니다.

“하나의 지문에서 서로 연결된 문제 두 개를 생성해주세요.”

고객 요구사항

겉으로는 출력 개수를 하나 늘리는 요청처럼 보였습니다. 하지만 기존 시스템은 한 번의 생성 과정에서 독립적인 문제 하나를 만드는 구조였고, 각 문제가 개별적으로 컨텍스트를 관리해 두 문제가 함께 참조할 수 있는 지문 단위 구조가 없었습니다.

프롬프트 호출을 한 번 더 하면 문제 두 개를 만들 수는 있지만, 같은 지문 맥락을 공유하거나 유효한 연계 문제로 구성된다는 보장은 없었습니다.

표면적인 요청문제를 한 개가 아니라 두 개 생성한다.
아키텍처의 빈틈여러 생성 문제가 공유하는 지문 단위 컨텍스트가 없다.
엔지니어링 문제개별 문제 대신 지문을 중심으로 생성·토큰 관리·캐싱·검증 구조를 다시 설계한다.
05

고객과 요구사항 범위 나누기

요청을 두 가지 범위로 나누고 차이를 고객에게 직접 설명했습니다.

즉시 개선할 수 있는 범위

  • 검색 샘플과 Few-shot 품질
  • 프롬프트와 출력 일관성
  • 문제 형식과 검증 규칙
  • 기존 단일 문제 생성의 품질 오류

아키텍처 변경이 필요한 범위

  • 여러 문제가 공유하는 지문 컨텍스트
  • 생성 단계 분리
  • 지문 단위 토큰 관리
  • 연계 결과를 위한 캐시 동작 변경

한계에는 날짜를 함께 붙였습니다

현재 아키텍처로는 전체 요구사항을 안정적으로 지원할 수 없다고 설명하고, 구조 변경을 3주 안에 납품하겠다고 약속했습니다. "불가능하다"로 끝내지 않고 경계를 분명히 한 대화였습니다.

06

핵심 의사결정

01즉시 가능한 품질 개선과 구조 변경을 분리한다

모든 문제를 하나의 대규모 재개발로 묶으면 진행 상황을 설명하고 검증하기 어려웠습니다. 검색·프롬프트·검증 개선과 연계 문제를 위한 아키텍처 변경을 분리했습니다.

고객은 지금 개선할 수 있는 것과 재설계 이후 가능한 것을 명확히 이해할 수 있었습니다.

trade-off관리해야 할 작업 흐름이 둘로 늘었습니다. 대신 재설계 완료 전에도 고객이 진전을 확인할 수 있었습니다.
02문제 하나가 아니라 지문을 파이프라인의 중심 단위로 만든다

기존 시스템은 한 번의 생성 과정을 문제 하나 중심으로 구성했습니다. 새 아키텍처에서는 여러 문제를 조율할 수 있는 공유 지문 컨텍스트를 중심으로 흐름을 다시 만들었습니다.

연계 문제들이 동일한 원문 맥락을 사용하면서도 각각의 생성과 검증 단계를 유지할 수 있게 되었습니다.

trade-off토큰 관리와 캐시 키를 새 단위 기준으로 다시 만들어야 했습니다. 연계 세트를 검증 가능하게 만드는 유일한 구조였습니다.
03학생 수준과 유사도를 함께 고려해 Few-shot 예시를 선택한다

기존 검색은 의미적으로는 비슷하지만 교육 수준에는 맞지 않는 예시를 선택할 수 있었습니다. 학교급에 따라 벡터 값을 다시 조정하고, 콘텐츠와 학습자 수준을 함께 반영하도록 유사도 선택 방식을 수정했습니다.

생성 이후에 잘못된 예시를 고치는 대신 프롬프트 이전 단계에서 실패 원인을 줄였습니다.

trade-off요청당 후보군이 좁아집니다. 수준이 맞지 않는 많은 예시보다 적고 정확한 예시가 낫다고 판단했습니다.
04문제 구조를 표준화하고 다단계 검증을 추가한다

생성 결과의 구조를 표준화하고 여러 단계의 검증을 추가했습니다. 중복, 관련성, 구조 오류를 최종 응답 전에 더 쉽게 발견할 수 있게 했습니다.

검증을 최종 수작업이 아니라 생성 시스템의 일부로 만들었습니다.

trade-off파이프라인 내부 지연이 늘어납니다. 그럼에도 전체 생성 시간은 15초에서 8초로 줄었습니다.
05반복적인 GPT 테스트로 동작을 측정한다

개별 예시는 변동성이 커서 아키텍처 의사결정의 근거로 충분하지 않았습니다. 변경된 파이프라인에서 약 800회의 GPT API 테스트를 수행하고, 반복 결과를 바탕으로 프롬프트·검색·검증을 조정했습니다.

trade-off테스트 비용과 시간이 듭니다. 대안은 확률적 시스템을 몇 개의 사례로 조정하는 것이었습니다.
07

변경 전후 아키텍처

독립적인 단일 생성 → 지문 중심 단계별 생성
독립적인 단일 생성 → 지문 중심 단계별 생성 — 변경 전입력 지문벡터 검색단일 생성 과정독립적인 문제 1개최종 출력공유 지문 상태 없음
독립적인 단일 생성 → 지문 중심 단계별 생성 — 변경 후학교급 · 유사도 검색입력 지문공유 지문 컨텍스트지문 단위 토큰 관리생성 단계 1생성 단계 2연계 문제 1연계 문제 2다단계 검증개선된 캐시최종 연계 세트
변경 전에는 지문 단위 공유 상태가 없어, 두 번째 문제를 만들려면 별도의 독립 생성 과정을 다시 실행해야 했습니다. 변경 후에는 지문 단위로 컨텍스트와 토큰을 관리하고, 생성 단계를 분리하며, 각 문제를 연계 세트의 일부로 검증하고 동일한 구조로 캐싱합니다.

단계 이름은 일반화해 표기했습니다. 실제 파이프라인 컴포넌트와 캐시 이름은 고객 확인 전까지 공개하지 않습니다.

08

3주

착수 전

실패를 재현

중복 문제, 지문과 무관한 오답, 수준이 맞지 않는 Few-shot 선택을 보고가 아니라 재현으로 확인했습니다.

착수 전

요구사항 분류

즉시 가능한 수정과 아키텍처에 의존하는 요구사항을 분리해 고객에게 설명하고 3주를 약속했습니다.

1주차

검색 재구축

학교급에 따라 벡터 값을 조정하고, 콘텐츠와 학습자 수준을 함께 반영하도록 유사도 선택을 다시 작성했습니다.

1–2주차

구조와 검증

생성 결과 구조를 표준화하고 파이프라인 내부에 다단계 검증을 추가했습니다.

2주차

지문 중심 재설계

공유 지문 컨텍스트, 생성 단계 분리, 지문 단위 토큰 관리와 캐시 동작 재작성.

2–3주차

약 800회 GPT API 테스트

변경된 파이프라인에서 반복 실행하고, 개별 출력이 아닌 누적 결과로 프롬프트·검색·검증을 조정했습니다.

3주차

배포

연계 문제 요구사항을 약속한 일정 안에 완료하고 실서비스에 배포했습니다.

09

테스트와 성능

재설계 전후 측정값
생성 속도요청당 전체 소요−47%
변경 전15초
변경 후8초
실패율거부되거나 사용할 수 없는 생성−70%
변경 전5%
변경 후1.5%

수치는 변경 이후 테스트한 생성 파이프라인 기준입니다. 정확한 측정 조건과 약 800회 테스트의 문제 유형별 구성은 게시 전 고객 확인이 필요합니다.

10

결과

측정된 결과

  • 생성 속도를 15초에서 8초로 단축했습니다.
  • 실패율을 5%에서 1.5%로 낮췄습니다.
  • 기존 구조로 지원할 수 없던 연계 문제 요구사항을 3주 안에 납품했습니다.
  • 완성된 작업은 연 USD 40K 규모의 B2B 계약에 기여했습니다.

납품 상태

  • 재설계한 파이프라인을 실서비스에 배포했습니다.
  • 고객 요구사항을 약속한 일정 안에 완료했습니다.

주장의 범위

  • 성능 수치는 변경 이후 파이프라인을 내부에서 측정한 값입니다.
  • 재설계는 2인이 함께 구현했으며, 계획·프롬프트·검색 개선·테스트는 제가 담당했습니다.
11

배운 점

기술적 한계는 실행 가능한 경로와 함께 설명할 때 가장 유용했습니다. 요구사항을 "지금 가능한 것"과 "아키텍처 변경 후 가능한 것"으로 나누어, 제약을 숨기지 않으면서도 고객과 방향을 합의할 수 있었습니다.

LLM 출력의 실패가 프롬프트에서 시작되는 것만은 아니라는 점도 확인했습니다. 검색 품질, 공유 컨텍스트, 데이터 구조, 검증, 캐싱이 모두 최종 결과에 영향을 주었습니다.

다시 진행한다면 검색 품질 검사를 더 이른 단계에 추가할 것입니다. Few-shot 불일치가 생성 이후의 품질 문제로 이어지기 전에 발견할 수 있습니다.

모든 다이어그램은 실제 구조를 바탕으로 다시 그렸으며, 고객사명·데이터·식별자는 제거했습니다.