[이미지기반 카페추천 프로젝트] SigLip으로 텍스트 임베딩
SigLip으로 텍스트 임베딩
SigLip으로 텍스트 임베딩
문제
- SigLip은 64토큰만 임베딩할 수 있음 -> Captioning과 HyDE를 뽑아낼때 최대한 간결하게 뽑아내야됨 -> 따라서 기존의 캡셔닝과 HyDE의 프롬프트를 바꿔서 50자 미만의 단어위주로 출력하도록 바꾸기
- 50자도 토큰이 130토큰 이상이므로 슬라이딩 윈도우 방식으로
services/loadmodel.py파일 변경 -> 기존에는 64토큰만 임베딩해서, 사실상 HyDE가 의미가 없는 수준이었음.
배경
아파치 라이센스에, 한국어를 잘 이해하는 모델인 siglip을 임베딩 모델로 선정했었는데, mvp를 뽑고나서 치명적인 문제가 발생했다. siglip은 64토큰으로 pretrain된 모델이라, 인풋을 64토큰으로만 사용할 수 있다는것을 모두 놓쳤다는것이다. 이 상황에서 기존의 임베딩으로 들어가던 텍스트는 64토큰으로 truncation되어 들어가고있음을 확인하고, 문제해결에 착수했다.
- 해결안 1. 모델을 교체한다.
- 해결안 2. 다른방법을 모색한다..
모델을 교체하기에는 코드로 구현까지 모두 끝난상황이었기 때문에, 모델을 교체하기에는 부담이 컸다. 따라서, 64토큰이라는 한계에 맞추어서 HyDE를 생성할때, 기존에 문장형식으로 길게 출력되던것을, 명사구 형식으로 간결하게 50자 이내로 출력하도록 바꾸었다.
50자로 바꾸어도 130토큰정도이므로, 다른방법이 추가로 필요했다. 따라서 인풋을 그대로 임베딩해서 넣는것이 아니라, stride를 32씩 갖고, 64토큰씩 임베딩을하고, 평균을 내는 sliding Window방식을 사용하기로 결정했다.
해결방안
- HyDE에서 간결하게 분위기 정보 뽑아내도록 프롬프트 수정하기
config={
"system_instruction": (
"""이 이미지를 보고 아래 지시에 따라 세부적으로 묘사해줘:
너는 카페 인테리어 및 공간 디자인 전문가야.
카페의 '공간 분위기'를 묘사해야 해.\n\n
[작성 가이드]
1. 문장 형식이 아닌, 콤마(,)로 구분된 '명사구' 나열식으로 작성할 것.
2. 구체적인 사물 자체가 아니라 감성적인 분위기를 묘사할 것.
3. '카페', '인테리어'처럼 당연한 단어는 생략하고 구체적인 분위기로 묘사할 것.
4. 공백 포함 한국어 50자 이내로 작성할 것.
아래 예시출력을 참고해서 출력해
예시출력: 창가자리, 자연광, 바다전망, 대형 유리창, 소박한 인테리어, 편안한 의자, 야외 테라스, 감성조명, 일몰뷰
"""
)
50자 이내로 간결하게 HyDE를 생성하도록 수정했다. 이전에는 문장형식으로 길게 생성했지만, 간결하게 분위기만 나타내도록 문장구형식으로 생성하도록 프롬프트를 수정했다.
service/loadmodel.py를 슬라이딩 윈도우 방식으로 벡터를 64토큰씩 구하고 stride를 32로 줘서 나온 HyDE의 벡터를 평균내서 임베딩 구하도록 코드구현

결과: 프롬프트 최적화 + 슬라이딩 윈도우 조합으로, 긴 텍스트도 전체 맥락이 검색에 반영됨
Continue exploring
더 읽어보기
CTR을 예측할 수 있을리가 없잖아 무리무리!(무리가아니었다!?): nemotron persona
어떤 광고 배너가 잘될지는 결국 집행 비용을 써봐야 알 수 있었다. 배너를 많이 만들 수 있어도, 그중 무엇을 내보낼지 고르는 데는 여전히 돈이 들었다. 집행 전에 후보를 걸러낼 수 있을지 확인하려고 NVIDIA Nemotron Persona-Korea 데이터셋으...
카피 A/B 테스트와 밈으로 광고 성과를 끌어올리기
광고 배너를 자동으로 만들 수 있게 된 뒤에는 어떤 카피를 얹을지가 다음 과제였다. 성과가 높은 카피, 재밌는 카피에는 정해진 Ground Truth가 없었다. 여러 톤앤매너와 밈 RAG로 후보를 만들고 실제 광고 성과를 비교했다.
성과가 난 광고에서 다음 스토리를 찾는 위닝앵글 검색
초기 AX 제작은 좋아요 랭킹 순으로 스토리를 넓게 탐색하는 방식이었다. 이후에는 이미 성과가 난 광고에서 다음 후보를 찾는 경로를 만들었다. 다른 팀원이 만든 에이전트의 광고 성과 분석과 인사이트를 받아, 비슷한 소구점이나 이미지를 가진 새로운 스토리를 발굴하는...