Ollama 임베딩 모델 지원
Ollama는 임베딩 모델 지원을 도입하여, 개발자가 텍스트 프롬프트와 로컬 문서 또는 외부 데이터를 결합하는 검색 증강 생성(RAG) 애플리케이션을 구축할 수 있도록 합니다. 이번 업데이트를 통해 Ollama 환경 내에서 의미론적 의미의 수치적 표현인 벡터 임베딩을 직접 생성할 수 있습니다.
임베딩 모델 이해하기
임베딩 모델은 텍스트 시퀀스를 벡터 임베딩으로 변환합니다. 벡터 임베딩은 입력값의 의미론적 의미를 나타내는 긴 숫자 배열입니다. 이러한 배열은 벡터 데이터베이스에 저장될 수 있으며, 단순한 키워드 매칭에 의존하는 대신 의미가 유사한 데이터를 검색하기 위해 비교됩니다.
지원되는 임베딩 모델
Ollama는 성능과 리소스 사용량 사이의 균형을 맞추기 위해 다양한 크기의 여러 임베딩 모델에 대한 액세스를 제공합니다:
| Model | Parameter Size |
|---|---|
mxbai-embed-large |
334M |
nomic-embed-text |
137M |
all-minilm |
23M |
구현 및 사용법
Ollama에서 벡터 임베딩을 생성하는 작업은 모델을 pull한 후 사용 가능한 인터페이스 중 하나를 활용하여 수행됩니다. ollama pull mxbai-embed-large를 실행한 후, 사용자는 다음 방법들을 통해 임베딩을 생성할 수 있습니다:
REST API
사용자는 /api/embed 엔드포인트를 사용하여 임베딩을 생성할 수 있습니다:
curl http://localhost:11434/api/embed -d '{ "model": "mxbai-embed-large", "input": "Llamas are members of the camelid family" }'
클라이언트 라이브러리
Ollama는 임베딩 프로세스를 간소화하기 위해 Python과 JavaScript용 공식 라이브러리를 제공합니다:
Python:
ollama.embed(
model='mxbai-embed-large',
input='Llamas are members of the camelid family',
)
ollama.embed({
model: 'mxbai-embed-large',
input: 'Llamas are members of the camelid family',
})
Ollama는 LangChain 및 LlamaIndex를 포함한 인기 있는 오케스트레이션 프레임워크와도 통합됩니다.
RAG 애플리케이션 구축하기
검색 증강 생성(RAG)은 Ollama와 ChromaDB와 같은 벡터 데이터베이스를 사용하여 다음과 같은 세 가지 주요 단계로 구현됩니다:
- 임베딩 생성:
mxbai-embed-large와 같은 모델을 사용하여 텍스트 문서를 벡터 임베딩으로 변환하고 컬렉션에 저장합니다. - 검색: 입력 프롬프트가 임베딩으로 변환된 후, 이를 사용하여 벡터 데이터베이스를 쿼리하여 의미론적으로 가장 관련성이 높은 문서를 검색합니다.
- 생성: 검색된 문서를
llama2와 같은 생성 모델(context)로 전달하여 사실에 기반한 답변을 생성합니다.
향후 로드맵
Ollama는 임베딩 워크플로우를 강화하기 위해 다음과 같은 여러 업데이트를 계획하고 있습니다:
- Batch embeddings: 여러 입력 프롬프트를 동시에 처리할 수 있는 기능.
- OpenAI API Compatibility:
/v1/embeddingsOpenAI 호환 엔드포인트 지원. - Expanded Architectures: ColBERT 및 RoBERTa를 포함한 추가적인 임베딩 모델 아키텍처 지원.
Sources
- OriginalEmbedding models
관련
- Dispatch
- Dispatch
- Dispatch
- Dispatch
- Dispatch