Projects

BizKit AI 모델 선택과 벤치마크

명함 배경 생성·자기소개·임베딩 검색에 사용할 모델을 비교한 조건과 결과, 모델 선택과 구현 설정의 차이를 정리한다.

기능별 모델 선택

BizKit에는 명함 배경 생성, 자기소개와 GitHub 활동 분석, 임베딩 검색처럼 서로 다른 모델이 필요했다. 나는 이미지 생성·LLM·임베딩 모델을 비교했다. VLM OCR 모델 비교는 내 담당이 아니었다.

모델을 고를 때는 서비스에서 맡길 역할을 먼저 나눴다. 명함의 글자는 별도 렌더러로 배치하고, 점수 계산은 정형화할 수 있는 지표에 한정했다. 다만 이 구분이 처음부터 완성돼 있었던 것은 아니다. GitHub 활동을 6각 차트로 보여주는 HEX에서는 LLM의 점수 보정도 계획했다. 근거 부족을 인정하고 방향을 바꾼 과정은 개발 회고에 정리했다.

이미지 생성, LLM, 임베딩은 서로 다른 환경과 평가셋에서 비교했다. 기능별 비교 조건은 다음과 같다.

영역실행 환경평가셋비교 내용
이미지 생성Colab A100 중심, Qwen-Image는 H100, Gemini는 외부 API프롬프트 3종서로 다른 실행 조건에서의 배경 생성 비교
LLMRunPod Serverless L40HEX 10개·Job 10개출력 품질과 응답 시간
임베딩오프라인 비교와 Milvus 통합corpus 100개, 과제별 평가셋검색·분류 지표와 Milvus 통합 후 응답 시간

이미지 생성 모델 비교

명함에서는 이름이나 연락처를 모델이 잘못 그리면 결과물을 사용할 수 없다. 그래서 배경 생성과 텍스트 렌더링을 분리하고, 배경 모델에서는 글자를 올릴 여백과 질감·조명이 적절한지 살폈다.

모델별 추론 시간과 Peak VRAM을 비교했다. 상세 결과는 이미지 생성 모델 비교 기록에 정리했다.

후보추론 시간 범위Peak VRAM배경 안정성(주관 평가)
SDXL Base2.86~2.88s9.21GB높음
SD3.5 Large Turbo9.20~12.74s6.09GB중
Z-Image Turbo2.80~4.70s20.85GB중~높음
Korean SD v1.51.76~3.85s4.15GB낮음
Qwen-Image8.59~10.36s59.71GB높음
Gemini 3 Pro Image 계열12.45~16.76s클라우드 API로 비교 불가높음

SDXL Base를 선택했다. 해상도 1104×624, 25 steps, guidance scale 7.5에서 프롬프트 3종으로 비교한 결과는 다음과 같다.

프롬프트시드추론 시간Peak VRAM
p11012.88s9.21GB
p21022.86s9.21GB
p31032.86s9.21GB

공통 프롬프트를 사용했지만 GPU·해상도·steps는 모델마다 달랐다. 따라서 이 결과는 각 설정에서의 비교이며, 모델 자체의 속도 순위나 운영 단가를 뜻하지 않는다. 비교 기록의 설명 문단과 수치가 다른 항목은 프롬프트별 실험 표를 기준으로 정리했다.

LLM 비교

RunPod Serverless L40에서 HEX와 자기소개 생성인 Job을 각각 10개 입력으로 평가하고, 웜업 후 요청 지연과 cold start를 별도로 기록했다. 상세 결과는 2026-02-03자 LLM 비교 기록에 정리했다.

응답 시간과 생성 속도

모델Cold Start평균 LatencyTokens/sec
Qwen2.5 7B Instruct33149ms15386ms36.8
EXAONE 3.5 7.8B Instruct39944ms15121ms31.4
Llama 3.1 8B Instruct39041ms18034ms26.6
Qwen3 8B90573ms25793ms24.5

Tokens/sec는 토큰 생성 속도 지표이며 API가 초당 처리한 요청 수와 같지 않다. 평가 결과의 성공률은 100.0%, JSON 파싱 실패율은 0.00%였다. 이 값을 운영 전체나 재시도 전 첫 요청의 성공률로 일반화할 수는 없다.

품질 평가 기준

HEX와 자기소개 생성의 평가 항목은 같지만, 작업별로 가중치를 다르게 두었다.

항목HEX 가중치Job 가중치
JSON 스키마 준수25%20%
점수·내용 정확도25%25%
한국어 품질20%25%
일관성·검색 컨텍스트15%15%
환각 탐지15%15%

EXAONE HEX의 세부 평균에 각 가중치를 곱해 합산하면 0.96640인데, 종합 표의 가중 평균은 0.870이다. 두 값의 계산 조건을 대조하기 전에는 이 가중 평균으로 모델 간 품질 차이를 판단하기 어렵다.

비교 당시 권장 모델은 Qwen2.5 7B Instruct로 정했다.

또한 HEX 점수의 참조값 대비 편차를 평가하는 것은 개발자의 실제 협업 역량을 측정하는 것과 다르다. 모델이 정해진 출력 규칙을 따르는지와 점수 체계 자체의 타당성을 구분해야 한다.

임베딩 모델 비교

임베딩 모델은 오프라인 평가와 Milvus 통합 평가로 나눠 비교했다. 상세 결과는 2026-02-11자 임베딩 비교 기록에 정리했다.

평가셋규모
검색 대상 corpus100개
IT 직무 검색38개 질의
시맨틱 캐싱18개 쌍
자연어 검색16개 질의
IT 분류136개 입력

Recall@5는 일반적으로 정답 항목이 상위 5개 검색 결과에 얼마나 포함되는지를 나타낸다. 정답이 질의마다 하나인 평가에서는 상위 5개 안에 정답이 들어간 질의 비율과 같다. MRR은 첫 정답 순위의 역수를 평균한 값이다. F1은 분류의 precision과 recall을 함께 보는 지표이며, 단순 정확도와 같지 않다.

오프라인 비교 결과

모델Recall@5MRR자연어 검색 MRR분류 F1
BGE-m3-ko1.00000.95510.90620.9846
BGE-m31.00000.95510.87500.9846
KURE-v11.00000.93590.87710.9846
gte-base-korean1.00000.92950.87920.9846
Qwen3-0.6b1.00000.85900.74790.9846
KoELECTRA0.46150.34490.18880.3810

오프라인 비교에서는 BGE-m3-ko를 선택했다. 이 평가셋에서 얻은 MRR 차이를 모든 검색에서 첫 번째 결과가 더 정확하다는 뜻으로 일반화할 수는 없다.

분류 임계값 0.81은 이 실험에서 선택한 값이다. 다른 데이터에서도 같은 성능이 나온다는 뜻은 아니므로, 적용할 데이터에서 다시 검증해야 한다.

Milvus 통합 비교 결과

구성Recall@5MRR단일 쿼리배치 쿼리E2E latency
BGE-m3-ko + IVF_FLAT1.00000.95511.7ms8.0ms147.5ms
BGE-m3-ko + HNSW1.00000.95512.0ms11.8ms153.3ms
KURE-v1 + IVF_FLAT1.00000.93592.9ms11.4ms164.4ms
KURE-v1 + HNSW1.00000.93592.5ms12.5ms171.5ms

Milvus 통합 비교의 corpus는 100개였다. 1.7ms와 2.0ms는 이 구성에서 얻은 단일 쿼리 지연으로, 데이터 규모와 인덱스 설정이 달라지면 결과도 달라질 수 있다.

실험에서는 IVF_FLAT을 선택했지만, 임베딩 서비스의 컬렉션 생성 코드에는 AUTOINDEX를 사용한다. 실험 인덱스와 서비스의 기본 생성 설정은 다르다.

비교 당시 선택과 구현 설정

비교 당시에는 이미지 배경 생성에 SDXL Base, LLM에 Qwen2.5 7B Instruct, 임베딩에 BGE-m3-ko와 IVF_FLAT을 선택했다. 후속 README의 LLM 설정은 Qwen3-8B-AWQ이며, 임베딩 서비스의 컬렉션 생성 설정도 실험과 다르다.

정리

기능별로 모델을 비교하고 텍스트 렌더링, 정형 점수 계산, 벡터 검색처럼 모델 밖에서 책임질 부분을 나눴다.