오전에 리서치만 1시간 넘게 했는데요.
잘 아는 사람은 필요 없는 과정이지만, 모르는 사람은 뭐가 좋은지 알면 좋겠죠?
임베딩 모델은 쉽게 말해 챗지피티와 같은 프런티어 모델과는 달리
코딩의 코드베이스를 이해하거나 대량의 문서를 백터DB에[ 저장하여 관리 하는 역할을 합니다.
자세한 것은 생략하고... 조금이라도 아는 분들이라 가정하고 이야기를 이어갑니다.
좋은 모델이 참 많아지고 있지만 한국인이 쓰기에 좋은 3대장을 추천해 보겠습니다.
1. 성능 최고 : 구글 임베딩 001.
나온지 얼마 안 된 최고 성능 모델입니다. 로컬 설치가 아닌 구글 서비스를 이용해야 합니다.
최고 성능인데 가격이 그리 비싸지 않아서 이용할 만 합니다.
예를 들어 옵시디언의 AI 플러그인을 사용한다면 문서를 AI가 이해하는 방식으로 쪼개서 저장한다고 보면 되겠습니다.
이렇게 저장 된 정보를 여러가지로 편리하게 이용할 수 있게 해 주는 플러그인도 있으니...유용합니다.
2. Qwen3 임베딩 8B
API가 아니기에 무료입니다. 다만 컴 성능이 좀 좋은 편이어야 합니다.
임베딩은 억지로 쓰는 것이 아니라 쾌적하고 원활하게 돌아가야 하는 것이 중요해서요.
여튼, 오픈소스임에도 상당히 강력합니다.
3. 노트북용으로느 bga-m3가 범용적으로 많이 쓰입니다.
한국어 능력도 좋고, 입력 토큰수도 많고... 어지간한 분이면 올라마에 이걸 올리면...됩니다.
중저사양에 .. 최고의 선택이 될 수 있겠네요.
* 참고로 한국어 파인튜닝한 버전도 있습니다.
* 예전부터 오픈AI 임베딩 쓰시던 분들은 로컬로 이걸 쓰거나 클라우드는 구글 임베딩으로...
정리.
최고성능. 클라우드도 상관 없는 분. 구글임베딩001
무료가 더 좋고 컴 사양이 괜찮은 편이면, Qwen3 임베딩 8B
무료인데 강력하고 하드웨어 성능을 상대적으로 영향을 덜 받을 수 있으면서,
한국어를 잘하고 여러 장점이 있는 세팅은 bga-m3이 최적입니다.
어차피 임베딩 모델로 벡터DB 에 저장하는건 벡터DB 쿼리해서 가져올때만 쓰게되고
이후 가져온 내용은 추론 모델에 컨텍스트로 전달될 뿐이니..
예를 들어 봅니다.
님이 옵시디언을 비롯해 어떤 문서 관리 프로그램을 이용하거나
다량의 PDF 문서를 가지고 있습니다.
다량의 정보를 AI가 이해하기 좋은 백터DB에 저장해두면,
AI챗봇에게 이렇게 요청을 합니다.
'홍길동'의 행적을 종합해서, 분석하고 정리해줘. 라고 하면,
임베딩 모들은 이 요청에 맞는 문서들에게서 유사성을 파악한 후 한데 모아 프런티어 모델에 그 정보를 전달하고,
프런티어 모델이 그 자료들을 분석해서 사용자에게 보여줍니다.
따라서 말씀하신대로 서로 다른 것이 좋습니다.
며칠된 게시글인데.. 요즘 한창 LLM 공부하는 중에 의문이 생겨서 질문 남겨봅니다.
임베딩모델과 추론모델이 다르면 (정확히는 추론모델이 아니라 추론모델의 학습에 사용된 임베딩모델을 의미하는 거겠죠?)
추론모델이 인식하는 문자의 의미가 달라지게 되는데, 말씀하신 다량의 PDF 문서를 추론 모델이 의미를 파악하려면 추론모델에서 학습에 사용한 임베딩모델을 사용해야하는 것 아닌가요?
만약 임베딩모델이 변경되면 모델의 학습과정이 필요할텐데, 입력 자체가 달라지니 추론 모델의 파인 튜닝도 되지 않을 것이고 최소한 사전학습에 사용된 데이터를 구하지 않는 이상 재학습하는 방향도 효율이지 못할 것 같은데.. 전제를 제가 잘못 이해한 것인지요?
아니면 단순하게 임베딩모델의 결과값인 벡터 간의 유사성(예를 들자면 내적 계산)만을 추론 모델이 판단하도록 한다는 것인지요? 이것도 아니라면 다른 방법론을 말씀하시는 것인지 궁금합니다.
음...
마지막 3번은 그렇게 고사양을 요구하지 않아요.
음...
어느 정도라고 비교하면 좋을까...생각해 보면,
갤럭시북3 프로...i5면 원활할 것이고...
데탑이면...5년 정도 되었어도 잘 돌아갈 것 같은데요.
그런 목적입니다.
제가 쓸 때는
어떤 사건을 구상할 때 만들어져 있는 캐릭터을 배치하고,
사건의 앞뒤 구성을 짤 때 쓸 생각입니다.
이전 사건과의 연결 같은 것을 놓치지 않기 위해서도 있고...
참고로 옵시디언의 플러그인 중에
이런 앞뒤 맥락을 자동으로 연결해주는 플러그인도 있습니다.
다양한 활용 방법이 있는데, 그건 써보면서 알아가야 하실 것 같습니다.
일단 민감한 정보가 없는 실험 데이터로 먼저 해보세요.
예를 들면 아마존 kiro를 깔아 보세요. 이것은 현재 무료라서 테스트 해보기 좋습니다.
옵시디언에 쓰려면 로컬 임베딩 세팅도 해야 하고, 상용 API도 과금해야 하니...
무료부터 써보면서 감을 익히면 되지 싶은데, 이런 것은 클라우드로 정보를 가져가니...
민감하지 않은 것으로 테스트 해보시라는 것입니다.
원리는 똑같고요.
자! 제가 세계관과 캐릭터 설정을 몇 페이지 해두고,
챕터 구성을 좀 해놓고,
글을 쓰기 시작합니다. 한 50편 썼네요.
그런데, 조연 중 A의 이름을 바꾸고 싶습니다.
일일이 찾아서 하기 보다
AI에게 이렇게 지식합니다.
A이름을 B 로 바꿔줘. 그럼 AI가 찾아서 바꿔 줍니다.
사실 AI가 없을 때도 이런 것은 되었던 것이니,
다음으로 가봅니다.
51번째 글을 쓰고 있는데, 뭔가 설정이 꼬인 것 같은 느낌은 있는데,
뭔지 잘 파악이 안 됩니다.
그럼 기존 50편의 내용 중 해당 에피소드와 관련 된 설정 또는 대화가 있었는지,
찾아봐 달라고 합니다.
그럼 ... 쭈욱 뽑아주고 그 맥락까지 말해줍니다.
B가 예전에 C라는 곳에서 A를 만나 00는 하지 말라고 만류 했었던 것 같은데,
확인해 줄 수 있냐고 물어 보면...
그 맥락을 이해하고 찾고 있던 장면과 그 장면의 배경을 설명해 줍니다.
1. 프롬프트 입력.
2. 해당하는 요청에 맞는 백터DB에서 찾아내고, 연관성을 계산해서 맥락이 닿은 부분들을 찾아 줍니다.
3. 이렇게 찾은 부분을 편집하거나 근거로 삼아 다음 이야기 설정을 짜게 둡니다.
또 다른 예입니다.
홍길동이란 악연을 새로 만들어 냅니다.
기존 이야기에서 출신을 따져 만들어 내려고 합니다.
'이번 사건의 악역 홍길동의 출신 배경과 연관된 인물 후보 3가지 찾아붜. 그 이유도..라고 하면,
홍길동과 관련 되 있는 인물 리스트를 뽑아줍니다.
그럼 새로 집필할 사건에 걸맞는 인물을 주르륵 풀어줍니다.'나가' 가장 그 사연으로 적절하고, 에피소드로 구성해도 될 것 같으면 이미 반은 성공!
관련 리더보드 봐도 그냥 Qwen3 0.6B 를 돌려도 별 차이 없지 않나 싶은데, 어떻게 생각하세요?
https://huggingface.co/spaces/mteb/leaderboard
쓰임새에 따라 다르리라고 보는데요.
제가 내린 결론은 ... 그냥 bge-m3 한국어 버전입니다.
모델 특징
bge-m3, bge-small-ko 한국어 최적화된 BGE 시리즈
intfloat/multilingual-e5-large 다국어 성능 우수한 e5
jhgan/ko-sbert-nli 한국어 SBERT
gte-small, e5-mistral 경량 고성능 다국어 임베딩 (한글 포함)
open-ko-embedding 한글 전용 embedding (오픈코리아팀)
전 챗지피티 에서 추천받아 써보았습니다
qwen3:4b는 임베딩 전용 모델이 아니며, 한글 임베딩 정확도는 보장되지 않음
한글이 잘 되는 임베딩 모델을 별도로 사용하는 것이 훨씬 낫습니다
가능하면 bge-ko, e5-multilingual, nomic-embed-text 등의 다국어 또는 한글 전용 임베딩 모델을 사용하세요
Qwen3의 임베딩 모델이 따로 있습니다. 임베딩 8B, 임베딩 4B 도 있습니다.
2번으로 가져온 이유는...임베딩이 오픈소스 중에서 꽤 큰 차이로 1등이어서 그러합니다.
대신 본문에 적은 것처럼 사양을 타서... 원활한 구동을 위해 고사양을 언급한 것이고요.
저도 처음엔 AI에게 물어보았고, 비슷한 답을 받았었습니다.
최신 리더보드의 경향과 사양에 따르는 성능 등을 잘 파악하지 못하더군요.
중저사양에 다른 것을 고민하기 보다는
bge-m3를 본문에 범용이라 쓴 것은...
자잘한 모델끼리 고민하지 마시라고...
특히 nomic 과 비교를 하는데 꽤 시간을 들였는데요.
저처럼 그런 비교를 하는 시간을 갖지 마시라고 쓴 글입니다.
개발에 말씀하신 임베딩 모델을 쓴다는건 커서같은걸로 바이브 코딩하는거랑 또 다른건가용
커서가 코드베이스를 이해하고,
A라는 변수명을 바꾸려고 할 때 종속 된 다른 여러 함수들이 있겠죠.
그럼 커서의 에이전트가 관련 파일을 찾아서 고쳐주는데요.
어떻게 그 자리에 그런 함수가 있는 것을 알까요.
임베딩 모델이 주기적으로 그런 것을 다 파악해 놓습니다.
그런데 커서는 그 임베딩을 클라우드로 하고 있습니다.
실 성능을 좋게 하기 위해서요.
그걸 나누어서,
임베딩은 로컬로 하고,
작업은 클로드로 하고... 이렇게 분배 하는 것이 필요한 분들이 있습니다.