쿨러가 아주 그냥.. 내 M3 Max MBP 가 열기를 내뿜는다. 이런 열기는 인텔시절 이후 오랜만이군..ㅎㅎ
해서 7.8b 로 Ollama에 얹혀서 임베딩과 답변을 진행해봤다.
langchain4j:
provider: ollama #openai
open-ai:
embedding-model:
api-key: ""
model-name: "text-embedding-3-small"
chat-model:
api-key: ""
model-name: "gpt-4o-2024-11-20"
log-requests: true
log-responses: true
max-retries: 1
store: false
ollama:
embedding-model:
base-url: http://localhost:11434
model-name: "mxbai-embed-large" #ollama pull mxbai-embed-large 1024
timeout: 60s
chat-model:
model-name: "exaone3.5:7.8b"
log-requests: true
log-responses: true
max-retries: 1
timeout: 60s
temperature: 0.7
top-p: 1.0
base-url: http://localhost:11434
진행하면서 나왔던 예외 목록
Embedding dimension 수치 오류
- OpenAI의 Embedding 모델은 dimension : 1536, Ollama의 dimension 의 1024
- 참고
임베딩(embedding)에서 차원(dimension)은 텍스트, 이미지, 또는 다른 데이터를 숫자 벡터로 표현할 때 사용되는 벡터의 크기를 의미합니다.
간단히 말해, 벡터의 요소 수를 나타내는 것입니다.
* 임베딩 차원의 의미
- 정보의 압축과 표현: 차원은 얼마나 많은 정보를 벡터에 담을 수 있는지를 결정합니다. 높은 차원은 더 많은 정보와 뉘앙스를 표현할 수 있지만, 계산 비용이 더 높습니다.
- 의미적 공간: 임베딩 공간에서 각 차원은 잠재적으로 의미의 한 측면을 나타낼 수 있습니다. 예를 들어, 단어의 임베딩에서 일부 차원은 "남성 vs 여성", "긍정적 vs 부정적" 같은 의미적 축을 나타낼 수 있습니다.
- 유사성 측정: 임베딩의 주요 목적 중 하나는 데이터 간의 유사성을 측정하는 것입니다. 차원은 이러한 유사성을 계산하는 데 사용되는 공간의 크기를 정의합니다.
* 차원 선택의 영향
- 특정 차원 수를 선택하는 것은 몇 가지 트레이드오프를 수반합니다:
384 차원 (예: all-MiniLM): 상대적으로 작고 효율적이며, 리소스 제약이 있는 환경에 적합합니다.
768 차원 (예: BERT-base): 중간 크기로, 적당한 성능과 효율성의 균형을 제공합니다.
1536 차원 (예: text-embedding-3-large): 더 큰 차원은 더 많은 정보를 담을 수 있어 더 정확한 의미 표현과 검색이 가능합니다.
Json 밴틱(```json)을 포함하며 결과 Response 를 제공하는 것에 따른 변환 오류.
-- OpenAI : 프롬프트에 'Json 밴틱 제거'
==> 제거해줌.
-- Exaone : 프롬프트에 'Json 밴틱 제거'
==> 뭔데? 포함해서 내려줌.
- 사용량 단위 오류.
-- OpenAI : 프롬프트에 '한달 사용량에 대한 설명(description)은 GB 로 하고 실제 사용량(perMonth)을 알려줍니다. '
==> 이경우 OpenAI 는 모든 단위를 GB로 맞춰줌.
-- Exaone : 프롬프트에 '한달 사용량에 대한 설명(description)은 GB 로 하고 실제 사용량(perMonth)을 알려줍니다.'
==> 이경우 Exaone 는 설명에만 GB로 하고, 실제 사용량은 MB로 알려줌. ( 두부있으면 사오고, 계란도 한 판..같은 건가? ㅎㅎ )
==> 프롬프트 문장 구조를 보면 좀 잘 못됨을 알 수 있는데.. OpenAI는 알아서 맞춰주고, Exaone은 명확하게 프롬프트를 짜야 한다.
- 요금제 결과 실패.
-- OpenAI : 임베딩 결과에서 나온 요금제 목록에서 나름 최적의 요금제 결과를 뽑아냄.
-- Exaone : 음..
보듯이 한달동안 15GB의 사용량이 예상된다고 되어 있는데 무려 76GB의 사용량 제공의 42요금제를 추천한다.
프롬프트와 또 싸움을 해야 하는 군... 32b는 괜찮을까?
결과적으로 보면 exaone은 사용자가 정교한 프롬프트를 넣어야 원하는 답변이 나오고, openai는 대충 프롬프트 넣든, 정교하게 넣든 얼추 원하는 답변을 잘 내논다.
[ 결론 : 기본적으로 엑사원은 7.2b라서 답변 퀄리티가 떨어질 수 있으며, 프롬프트도 더 정확하게 짜야 할 수 도 있다. ]
그래서.... 나중에 M5 Max MBP로 가면 Exaone3.5:32b로 테스트 해보도록 하겠다. 꼬옥!! ㅎㅎ