은행 서비스의 의도 이해 과제
디지털 뱅킹 환경에서 고객 문의의 진의를 정확히 파악하는 것은 핵심 과제입니다. 기존 방식은 대량의 레이블 데이터와 전용 모델 학습이 필요해 비용이 높고 신규 업무 적용이 느렸습니다.
RexUniNLU의 기술 구조
Siamese-UIE 아키텍처 기반의 RexUniNLU는 대조학습과 프롬프트 학습을 결합합니다. 이중탑 구조가 레이블 설명과 입력 텍스트의 의미적 유사성을 계산하는 방식으로, 세 가지 장점을 제공합니다:
- 레이블 데이터 없이 미확인 의도 인식 가능
- 대형 언어 모델 대비 90% 이상 경량화, 5-10배 빠른 추론
- 은행·증권 등 금융 도메인 별도 학습 없이 적용
은행 업무 적용 사례
스키마 설계 예시:
# 은행 의도 정의
bank_actions = [
'계좌조회',
'송금이체',
'대출신청',
'카드분할결제'
]
# 금융 개체 정의
finance_terms = [
'거래금액',
'계좌번호',
'적용이율',
'상품명'
]
의도 분석 실행 코드:
from rex_uninlu import NLUProcessor
nlu_engine = NLUProcessor(model_path='rex_model')
def detect_intent(text_input):
# 의도와 개체 태그 결합
action_tags = bank_actions + finance_terms
return nlu_engine.analyze(text_input, action_tags)
user_questions = [
"어제 이체한 내역 확인 부탁드립니다",
"카드 대금 50만원 분할납부 방법 알려주세요"
]
for question in user_questions:
result = detect_intent(question)
print(f"질의: {question}")
print(f"결과: {result['intents']}")
상용 환경 배포
FastAPI 기반 REST 서비스 구현:
# API 서비스 실행
uvicorn.run(app, host="0.0.0.0", port=8080)
Docker 배포 설정:
FROM python:3.9
WORKDIR /app
COPY ./requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
EXPOSE 8080
CMD ["uvicorn", "nlu_api:app", "--host", "0.0.0.0"]
성능 최적화 가이드:
| 환경 규모 | CPU | 메모리 | 초당 처리량 |
|---|---|---|---|
| 테스트 | 4코어 | 8GB | 20QPS |
| 상용 | 8코어 | 16GB | 100QPS |
성능 비교 데이터
| 의도 유형 | 키워드 매칭 | 지도학습 | RexUniNLU |
|---|---|---|---|
| 계좌조회 | 78.2% | 92.5% | 89.7% |
| 자금이체 | 75.6% | 94.1% | 91.3% |
스키마 설계 원칙
- 비즈니스 용어 사용: "거래액" 대신 "이체금액"
- 동사 포함: "대출" → "대출신청"
- 계층적 구조 적용:
finance_schema = {
"업무동작": ["잔액조회", "송금처리"],
"금융개체": ["은행계좌", "거래일자"]
}
보안 및 규정 준수
- 온프레미스 배포로 데이터 사생활 보호
- 모든 분석 요청에 대한 감사 로깅
- 스키마 버전 관리 체계 구축