Ollama API
1. /api/generate - 단건 텍스트 응답.
2. /api/chat - 대화형 응답.
/api/generate와 /api/chat 엔드포인트의 주요 차이점.
- 대화 맥락 관리:
/api/generate: 단일 프롬프트에 대한 단일 응답만 생성.
/api/chat: 대화 이력을 관리하며, 이전 메시지들의 맥락을 고려한 응답을 생성.
- 입력 형식:
/api/generate: 단순한 텍스트 프롬프트를 받아서 응답.
/api/chat: 메시지 배열을 받으며, 각 메시지는 역할(user, assistant 등)과 내용을 포함.
- 사용 사례:
/api/generate: 텍스트 완성, 코드 생성, 단일 질문에 대한 응답과 같은 독립적인 작업에 적합.
/api/chat: 챗봇, 대화형 어시스턴트처럼 맥락이 중요한 대화형 애플리케이션에 적합.
3. /api/tags
curl http://localhost:11434/api/tags | jq
{
"models": [
{
"name": "all-minilm:latest",
"model": "all-minilm:latest",
"modified_at": "2025-03-09T16:55:49.686387073+09:00",
"size": 45960996,
"digest": "1b226e2802dbb772b5fc32a58f103ca1804ef7501331012de126ab22f67475ef",
"details": {
"parent_model": "",
"format": "gguf",
"family": "bert",
"families": [
"bert"
],
"parameter_size": "23M",
"quantization_level": "F16"
}
},
{
"name": "qwq:32b",
"model": "qwq:32b",
"modified_at": "2025-03-07T19:54:32.260524589+09:00",
"size": 19851349390,
"digest": "cc1091b0e276012ba4c1662ea103be2c87a1543d2ee435eb5715b37b9b680d27",
"details": {
"parent_model": "",
"format": "gguf",
"family": "qwen2",
"families": [
"qwen2"
],
"parameter_size": "32.8B",
"quantization_level": "Q4_K_M"
}
},
{
"name": "exaone3.5:32b",
"model": "exaone3.5:32b",
"modified_at": "2025-02-17T21:09:47.849556557+09:00",
"size": 19343762650,
"digest": "f2f69abac3dadd89fb740b06e78a529baf0295d70b7a96b48c6bb9061a7e247b",
"details": {
"parent_model": "",
"format": "gguf",
"family": "exaone",
"families": [
"exaone"
],
"parameter_size": "32.0B",
"quantization_level": "Q4_K_M"
}
},
{
"name": "exaone3.5:7.8b",
"model": "exaone3.5:7.8b",
"modified_at": "2025-02-17T20:53:58.670142413+09:00",
"size": 4770664857,
"digest": "c7c4e3d1ca22fe9225f18b35eb719f67e2ca96a42e7fd17294a45b83ba8fbf03",
"details": {
"parent_model": "",
"format": "gguf",
"family": "exaone",
"families": [
"exaone"
],
"parameter_size": "7.8B",
"quantization_level": "Q4_K_M"
}
}
]
}
임베딩(Embedding) 방식과 파인튜닝(Fine-tuning) 방식은 각각 다른 목적과 특성을 가짐.
임베딩(Embedding) 방식
장점
- 리소스 효율성: 기존 모델을 그대로 사용하므로 계산 리소스가 적게 필요
- 빠른 구현: 별도의 훈련 과정이 필요 없어 즉시 구현 가능
- 유연성: 동일한 모델로 다양한 임베딩 기반 애플리케이션 구축 가능
- 데이터 효율성: 적은 양의 데이터로도 효과적인 시스템 구축 가능
- 검색 최적화: 벡터 검색에 최적화되어 RAG(Retrieval-Augmented Generation) 구현에 적합
단점
- 제한된 도메인 적응: 특정 도메인의 뉘앙스 완전히 파악하기 어려움
- 언어 이해 제한: 모델의 기본 이해력 이상으로 향상되지 않음
- 맥락 제한: 주로 정보 검색에 활용되며 복잡한 추론 능력 개선은 어려움
- 외부 시스템 의존: 검색 시스템과 결합해야 실용적 사용 가능
파인튜닝(Fine-tuning) 방식
장점
- 도메인 특화: 특정 도메인이나 작업에 최적화된 성능
- 내재적 지식: 도메인 지식을 모델 내부에 통합
- 응답 품질: 특정 스타일, 톤, 형식에 맞는 응답 생성 가능
- 일관성 향상: 특정 맥락에서 더 일관된 응답 제공
- 입출력 형식 조정: 특정 입출력 패턴에 맞게 모델 훈련 가능
단점
- 높은 계산 비용: 상당한 계산 리소스와 GPU 필요
- 많은 데이터 요구: 양질의 훈련 데이터가 필요
- 과적합 위험: 훈련 데이터에 과도하게 적응될 수 있음
- 시간 소요: 모델 훈련에 상당한 시간 필요
- 유지보수 복잡성: 새로운 정보 반영을 위해 주기적 재훈련 필요
실제 선택 기준
- 임베딩 방식이 적합한 경우:
- 최신 정보 접근이 필요할 때
- 정보 검색과 결합된 시스템이 필요할 때
- 빠른 구현과 유연성이 중요할 때
- 계산 리소스가 제한적일 때
- 파인튜닝이 적합한 경우:
- 매우 특화된 도메인 지식이 필요할 때
- 특정 응답 스타일이나 형식이 중요할 때
- 반복적인 특정 패턴의 작업을 자동화할 때
- 충분한 학습 데이터와 계산 리소스가 있을 때
많은 현대적인 솔루션은 두 방식을 결합하여 사용하고 있음. 적절하게 사용 필요.