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와 같은 벡터 데이터베이스를 사용하여 다음과 같은 세 가지 주요 단계로 구현됩니다:

  1. 임베딩 생성: mxbai-embed-large와 같은 모델을 사용하여 텍스트 문서를 벡터 임베딩으로 변환하고 컬렉션에 저장합니다.
  2. 검색: 입력 프롬프트가 임베딩으로 변환된 후, 이를 사용하여 벡터 데이터베이스를 쿼리하여 의미론적으로 가장 관련성이 높은 문서를 검색합니다.
  3. 생성: 검색된 문서를 llama2와 같은 생성 모델(context)로 전달하여 사실에 기반한 답변을 생성합니다.

향후 로드맵

Ollama는 임베딩 워크플로우를 강화하기 위해 다음과 같은 여러 업데이트를 계획하고 있습니다:

  • Batch embeddings: 여러 입력 프롬프트를 동시에 처리할 수 있는 기능.
  • OpenAI API Compatibility: /v1/embeddings OpenAI 호환 엔드포인트 지원.
  • Expanded Architectures: ColBERT 및 RoBERTa를 포함한 추가적인 임베딩 모델 아키텍처 지원.

Sources

관련

  • Dispatch
  • Dispatch
  • Dispatch
  • Dispatch
  • Dispatch