1. 연구 배경
영업 담당자는 고객사를 새로 맡을 때 계정 플랜을 작성합니다. 해당 기업이 속한 산업의 동향, 적용받는 규제, 현재 직면한 현안을 정리한 문서입니다. 공시와 뉴스와 조달 데이터를 조사해 수작업으로 작성하면 하루가 소요됩니다.
이 작업을 LLM으로 자동화하는 도구를 구축했습니다. 네 개의 페이지 에이전트가 병렬로 실행되며 각각 한 페이지를 담당합니다.
제약은 대상 규모에 있었습니다. 고객사가 1만 2천 곳이므로, 회사 한 곳에 100원이 소요되면 전체로는 120만 원이 됩니다. 시범 단계에서는 드러나지 않다가 대상을 확대하는 시점에 표면화되는 유형의 비용입니다.
2. 문제 정의
최초로 계측한 항목은 근거 원문의 크기입니다.
| 원천 | 한 건 크기 | 성격 |
|---|---|---|
| 사업보고서 (대형 제조사 A) | 7,611,831자 | 연 1회 · 서술 정보의 유일한 출처 |
| 사업보고서 (대형 제조사 B) | 623,804자 | 동일 서식이나 12배 편차 |
| 기사 본문 | 평균 1,300자 | 건당 소량이나 회사당 수십 건 |
| 조달 계약 원장 | 45~53개 열 × 71만 행 | 전 기관 공용 파일 |
사업보고서 한 건이 760만 자입니다. 컨텍스트 한도를 논의할 수준이 아니라 투입 자체가 불가능한 규모입니다.
동시에 이 문서를 배제할 수도 없습니다. 사업의 내용·시장 여건·투자 계획과 같은 서술 정보는 다른 어떤 API도 제공하지 않기 때문입니다. 정형 API가 반환하는 것은 수치뿐이며, 기업이 자사 사업을 직접 기술한 문장은 이 문서에만 존재합니다.
3. 기술적 난점
원문 크기의 편차
동일한 사업보고서 서식임에도 623,804자와 7,611,831자로 12배의 차이가 발생합니다. 고정 길이로 절단하면 한쪽은 여유가 남고 다른 쪽은 핵심이 유실됩니다. 선두 N자를 취하는 방식은 목차와 연혁만 포함하고 종료됩니다.
선별 기준의 부재
정형 API라면 필요한 필드만 선택하면 됩니다. 그러나 공시 본문은 비정형 텍스트이며, 어느 문단이 중요한지 표시하는 구조가 존재하지 않습니다.
축약 규칙의 오작동 가능성
축약 규칙은 그 자체로 예외를 생성합니다. 규칙이 의도하지 않은 입력에 적용될 때 정보가 왜곡되거나 소실될 수 있으며, 이는 출력 단계에서 검증하기 어렵습니다.
4. 대안 검토
1안. 장문 컨텍스트 모델로 교체
- 장점: 코드 수정 없이 적용 가능합니다.
- 단점: 비용이 감소하지 않으며 오히려 증가합니다. 또한 760만 자는 현존하는 어떤 모델의 한도로도 수용되지 않습니다. 규모의 문제가 아니라 종류의 문제입니다.
2안. 벡터 검색 기반 문단 회수
- 장점: 질의에 부합하는 부분만 선택할 수 있습니다.
- 단점: 임베딩 생성을 위해 760만 자 전체를 선행 처리해야 합니다. 1만 2천 곳에 대한 인덱스 구축과 갱신 비용이 절감분을 상회합니다. 더욱이 본 시스템이 요구하는 것은 가변 질의에 대한 응답이 아니라 매 회차 동일한 종류의 정보입니다. 질의가 고정된 조건에서는 검색이 아니라 규칙으로 충분합니다.
3안. 요약 단계 추가
- 장점: 압축률이 높습니다.
- 단점: 절감 대상인 비용을 절감을 위해 지출하는 구조입니다. 회사당 호출이 추가되며, 요약 과정에서 수치가 손실되면 후속 단계에서 검증할 수단이 없습니다.
4안. 구조 기반 선별 (채택)
문서가 비정형 텍스트일지라도 문서의 형식은 규정되어 있습니다. 공시 서식은 법정 양식이므로 목차 구조가 고정입니다. 기사 역시 문장 단위로 분할할 수 있습니다. 즉 검색이 아니라 규칙으로 필요 구간을 지목하는 것이 가능합니다.
5. 설계 결정 및 근거
절감을 단일 지점에서 수행하지 않고 네 개 층으로 분리했습니다. 각 층이 제거하는 대상의 성격이 상이하기 때문입니다.
1층. 섹션 선별 — 목차 기반 구간 지목
공시 서식은 법정 양식이므로 장·절 제목이 고정입니다. 사업의 내용·시장 여건·설비 투자와 같이 초안에 실제로 사용되는 절만 명칭으로 탐색해 추출합니다. 절별 상한을 설정해 특정 절이 전체를 점유하지 않도록 제한했습니다.
원문 7,611,831자 → 섹션 8개 13,017자 (0.2%)
이 단계에서 절감의 대부분이 결정됩니다. 후속 단계가 아무리 정교하더라도 이 지점에서 100배 규모의 축소를 달성하지 못하면 의미가 없습니다.
2층. 문장 선별 — 사실 문장 우선 배치
기사 본문은 절 구분이 없으므로 문장 단위로 처리합니다. 수치·날짜·기관명을 포함한 문장에 가중치를 부여하고, 한도 내에서 점수가 높은 문장부터 선택합니다.
선택 이후에는 원래 순서로 복원합니다. 점수순으로 배열하면 문장 간 연결이 끊겨 가독성이 훼손됩니다.
본문 26,399자 → 11,233자 (-57.4%, 20건 실측)
선별을 적용하지 않는 조건도 함께 정의했습니다. 사실 문장의 비율이 임계값에 미달하면 선별을 중단하고 선두부터 절단합니다. 규칙이 적합하지 않은 입력에서는 규칙을 비활성화하는 것이 안전합니다.
점수 사전의 범위가 선별 적용률을 결정함
초기 구현의 점수 사전은 금액과 재무 용어에 편중되어 있었습니다. 수량 단위는 억·조·원·%·건·명으로 한정했고, 사업 어휘는 계약·수주·투자 계열을 중심으로 구성했습니다.
이 구성에서 33건을 계측한 결과 절반 이상이 선별 없이 절단되고 있었습니다.
원인은 사업 활동 기사의 어휘가 사전에 부재한 데 있었습니다. 공모전 출품 수량인 1,116편과 83개국, 경력 연수인 16년은 어느 단위 목록에도 포함되지 않았고, 개최·출품·영입과 같은 활동 동사 역시 사업 어휘에 없었습니다. 결과적으로 해당 기사의 모든 문장이 0점으로 산정되어 선별이 무력화되었습니다.
수량 단위에 편·개국·주년·년·톤·kW 계열을 추가하고, 사업 어휘에 개최·시행·출시·체결·선정·영입·공모 계열을 보강했으며, 연도·날짜 표기에 별도 가중치를 부여했습니다.
| 항목 | 개선 전 | 개선 후 |
|---|---|---|
| 선별 적용 | 14건 | 26건 |
| 선두 절단 폴백 | 15건 | 3건 |
| 적용률 | 48.3% | 89.7% |
인물 일화 배제 규칙은 그대로 유지됩니다. 회사 실적 문장은 +10, 사업 활동 문장은 +13으로 산정되는 반면, 개인 자산 서술은 -8, 감정 서술은 -12로 산정되어 선별에서 제외됩니다.
점수 기반 선별에서 사전의 범위는 정확도가 아니라 적용률을 좌우합니다. 사전이 좁으면 오분류가 발생하는 것이 아니라, 규칙 자체가 발동하지 않고 폴백으로 이관됩니다. 폴백은 오류가 아니므로 로그에도 남지 않으며, 결과적으로 선별 로직이 절반의 입력에서 작동하지 않는 상태가 장기간 유지될 수 있습니다.
3층. 어미 압축 — 서술형의 명사형 전환
…결정했다.를 …결정함.으로 변환합니다. 근거로 활용할 때는 사실만 전달되면 되므로 의미가 보존됩니다.
-1.2%
절감폭은 크지 않으나 이 층에서 도출한 제약이 다른 층보다 중요합니다.
어간을 절단해서는 안 됩니다. 다.를 .로 치환하면 결정했.이 됩니다. 종결어미 단위로 전체를 치환해야 합니다.
인용은 전언 구조를 유지해야 합니다. "…추진하겠다"고 밝혔다.에서 서술어를 제거하면 "…추진하겠다".가 되어 발화 주체와 사실 여부가 소실됩니다. 인용·전언은 어미만 명사형으로 축약하고 전언 동사를 보존하는 규칙을 별도로 정의했습니다.
원문은 변경하지 않습니다. 저장·조회에는 원문을 사용하고 프롬프트 투입 시점에만 변환을 적용합니다. 원문을 사전에 축약하면 이후 인용 시 부자연스러운 문장이 그대로 노출됩니다.
1.2%의 절감을 위해 이러한 위험을 감수할 가치가 있는지는 판단이 필요한 사안입니다. 본 프로젝트에서는 유지하기로 결정했습니다. 회사당 수 퍼센트가 1만 2천 배로 확대되며, 위 세 가지 제약으로 오작동 경로를 차단했기 때문입니다.
4층. 프롬프트 계층화 — 공통 규칙의 단일 적재
네 에이전트가 각각 프롬프트를 보유한 구조였는데, 검토 결과 동일한 내용이 네 차례 기술되어 있었습니다. 사실 처리 방식, 문장 작성 규칙, 출력 형식은 페이지가 달라도 동일합니다.
공통 규칙을 시스템 프롬프트에 단일하게 배치하고, 각 페이지에는 해당 페이지에만 적용되는 내용만 유지했습니다.
| 개선 전 | 개선 후 | |
|---|---|---|
| 페이지 지침 합계 | 5,010자 | 2,775자 |
| 회사당 총입력 | 5,558자 | 4,499자 (-19.1%) |
공통 규칙을 단일 지점으로 통합하면 지시 간 정합성을 한 화면에서 검증할 수 있습니다. 동일한 내용이 네 곳에 분산되어 있으면 상호 불일치가 발생해도 인지하기 어렵습니다. 이 구조 변경이 출력 품질에 미친 영향은 별도의 글로 정리했습니다.
6. 실험 결과
| 층 | 대상 | 개선 전 | 개선 후 | 절감 |
|---|---|---|---|---|
| 섹션 선별 | 공시 원문 | 7,611,831자 | 13,017자 | -99.8% |
| 문장 선별 | 기사 본문 29건 | 37,466자 | 16,774자 | -55.2% |
| 어미 압축 | 기사 본문 20건 | 26,726자 | 26,399자 | -1.2% |
| 프롬프트 계층화 | 회사당 입력 | 5,558자 | 4,499자 | -19.1% |
점수 사전 보강 이후 문장 선별의 적용률은 48.3%에서 89.7%로 상승했습니다. 절감률 자체는 -57.4%에서 -55.2%로 소폭 낮아졌는데, 이는 이전에 선별 없이 절단되던 기사가 선별 대상으로 편입되면서 표본의 성격이 변경되었기 때문입니다. 동일 한도에서 더 많은 기사가 앞부분 절단이 아니라 사실 문장 선별을 거치게 되었다는 점이 실질적 개선입니다.
품질은 3개사 재생성으로 검증했습니다. 페이지 4종이 오류 없이 생성되었으며 요구된 구조가 전부 충족되었습니다. 가치사슬 단계명은 업종 표준 표기와 일치했고, 분류어는 의도한 2~4글자 범위를 준수했으며, 지표 가중치 합은 100으로 산출되었습니다.
7. 결론 및 시사점
컨텍스트 확장은 대안이 아닙니다. 760만 자는 한도의 문제가 아니라 종류의 문제입니다. 투입 가능 여부가 아니라 무엇을 투입하지 않을 것인지를 결정해야 합니다.
질의가 고정된 조건에서는 검색보다 규칙이 효율적입니다. 벡터 검색을 기각한 근거가 여기에 있습니다. 매 회차 동일한 종류의 정보를 추출한다면 인덱스 구축과 유지 비용을 지출할 이유가 없습니다. 문서의 형식이 규정되어 있다면 그 형식을 직접 활용하는 것이 타당합니다.
축약 규칙은 자신이 적용되지 않아야 할 입력을 식별해야 합니다. 문장 선별이 본문 대부분을 제거하는 조건이 이에 해당합니다. 규칙에 예외가 존재하는 것이 아니라, 예외에서 규칙을 비활성화하는 판단이 규칙의 일부여야 합니다.
폴백은 안전장치인 동시에 은폐 장치입니다. 선별이 작동하지 않을 때 선두 절단으로 이관하는 설계는 최악의 출력을 방지하지만, 동시에 규칙이 발동하지 않는 상태를 오류 없이 통과시킵니다. 폴백 비율을 별도로 계측하기 전까지는 선별 로직이 입력의 절반에서 무력화되어 있다는 사실이 관측되지 않았습니다. 폴백을 설계했다면 폴백 진입률도 함께 계측해야 합니다.
절감은 단일 지점에서 발생하지 않습니다. 99.8%를 절감한 층과 1.2%를 절감한 층이 동일 파이프라인에 공존합니다. 큰 항목부터 처리하되, 규모가 확대되는 조건에서는 작은 항목도 유지할 가치가 있습니다. 다만 절감폭이 작을수록 오작동 위험 대비 이득을 엄격히 평가해야 합니다.
중복 제거는 품질 개선을 수반합니다. 동일한 지시가 여러 지점에 분산되어 있으면 정합성을 검증할 수 없습니다. 단일 지점으로 통합하는 작업은 토큰을 절감하는 동시에 지시 체계를 검토 가능한 상태로 전환합니다.
