Ollama 埋め込みモデルのサポート

Ollamaは、埋め込み(embedding)モデルのサポートを開始しました。これにより、開発者はテキストプロンプトとローカルドキュメントまたは外部データを組み合わせた検索拡張生成(RAG)アプリケーションを構築できるようになります。このアップデートにより、Ollama環境内で直接、ベクトル埋め込み(意味的な意味を表す数値表現)を生成することが可能になります。

Understanding Embedding Models

埋め込みモデルは、テキストのシーケンスをベクトル埋め込みに変換します。これは、入力の意味的な意味を表す長い数値配列です。これらの配列はベクトルデータベースに保存され、単純なキーワード一致に頼るのではなく、意味が類似しているデータを検索するために比較されます。

Supported Embedding Models

Ollamaは、パフォーマンスとリソース使用量のバランスをとるために、さまざまなサイズの複数の埋め込みモデルへのアクセスを提供します:

Model Parameter Size
mxbai-embed-large 334M
nomic-embed-text 137M
all-minilm 23M

Implementation and Usage

Ollamaでのベクトル埋め込みの生成は、モデルをプルし、利用可能なインターフェースのいずれかを使用することで行われます。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"
}'

Client Libraries

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を含む人気のオーケストレーションフレームワークとも統合されています。

Building a RAG Application

検索拡張生成(RAG)は、OllamaとChromaDBのようなベクトルデータベースを使用して、主に3つのステップで実装されます:

  1. Generate Embeddings: mxbai-embed-largeのようなモデルを使用してテキストドキュメントをベクトル埋め込みに変換し、コレクションに保存します。
  2. Retrieve: 入力プロンプトを埋め込みに変換し、それを使用してベクトルデータベースをクエリして、最も意味的に関連性の高いドキュメントを取得します。
  3. Generate: 取得したドキュメントを、事実に基づいた回答を生成するために生成モデル(llama2など)のコンテキストとして渡します。

Future Roadmap

Ollamaは、埋め込みワークフローを強化するために、いくつかのアップデートを計画しています:

  • Batch embeddings: 複数の入力プロンプトを同時に処理する機能。
  • OpenAI API Compatibility: OpenAI互換のエンドポイント/v1/embeddingsのサポート。
  • Expanded Architectures: ColBERTやRoBERTaを含む、追加の埋め込みモデルアーキテクチャのサポート。

Sources

関連

  • Dispatch
  • Dispatch
  • Dispatch
  • Dispatch
  • Dispatch