Ollamaを使用して、InterSystems IRISとローカルモデルでAIエージェントを実行する
前の記事では、smolagentsとInterSystems IRISを使用して、SQL、ベクトル検索を使用したRAG、interoperabilityを組み合わせたカスタマーサービスAIエージェントをビルドしました。
その際、LLMと埋め込み表現のためにクラウドモデル(OpenAI)を使用しました。
今回はさらに一歩進めます。Ollamaを利用して、同じエージェントをローカルモデルで実行します。
なぜモデルをローカルで実行するのか?
とりあえず始めるなら、クラウドのLLMを使うのが最も簡単なオプションです。
- ✅ すでに最適化・保守されたモデル
- ✅ シンプルなAPIで簡単にアクセス可能
- ✅ サーバーレスサービス。ハードウェアやメンテナンスについて心配する必要なし
- ❌ 使用量に応じたコスト
- ❌ 外部サービスへの依存
- ❌ データ送信時のプライバシー制限
対照的に、モデルをローカルで動かすことにより得られる利点は以下の通りです。
- ✅ データと環境を完全に制御できる
- ✅ 使用量に応じた追加料金なし ✅ **LoRA (Low-Rank Adaptation)**などの技術を使用して、モデルを微調整または適応させることができる。これにより、モデルの特定のレイヤーをモデル全体を再トレーニングせずに特定のドメインに適応させることができます。
- ❌ サーバー上のリソース消費量が多くなる
- ❌ ハードウェアによってモデルサイズに制限あり
そこで役立つのがOllamaです。
Ollamaとは?
Ollamaは、**言語モデルと埋め込み表現をローカル環境で非常に簡単に実行できるツールです。
ollama pullを使ってモデルをダウンロードする- ローカルで実行し、HTTP APIとして公開する
- OpenAIと同じように、アプリケーションに直接統合できる
つまり、クラウドで使用するのと同じAPIをノートパソコンやサーバーで実行できます。
基本的なOllamaの設定
まずは、OllamaのWebサイトからOllamaをインストールし、動作することを確認します。
ollama --version
次に、モデルをいくつかダウンロードします。
# Download an embeddings model
ollama pull nomic-embed-text:latest
# Download a language model
ollama pull llama3.1:8b
# See all available models
ollama list
curl を使って埋め込み表現を直接テストできます。
curl http://localhost:11434/api/embeddings -d '{
"model": "nomic-embed-text:latest",
"prompt": "Ollama makes it easy to run LLMs locally."
}'
IRISエージェントでのOllamaの使用
カスタマーサポートエージェントのデモリポジトリには、Ollamaの構成がすでに含まれています。 次を行う必要があるだけです。
Ollamaで実行するために必要なモデルをダウンロードする ベクトル検索の埋め込み表現のためにnomic-embed-text、LLMとしてdevstralを使用しました。
ローカルモデルを使って、Ollamaの埋め込み表現を使用するためにIRISを構成する
INSERT INTO %Embedding.Config (Name, Configuration, EmbeddingClass, VectorLength, Description)
VALUES ('ollama-nomic-config',
'{"apiBase":"http://host.docker.internal:11434/api/embeddings",
"modelName": "nomic-embed-text:latest"}',
'Embedding.Ollama',
768,
'embedding model in Ollama');
- サンプルのテーブルにベクトルを保存するために列サイズを調整する(ローカルモデルのベクトルサイズは、オリジナルのOpenAIのものと異なります)。
ALTER TABLE Agent_Data.Products DROP COLUMN Embedding;
ALTER TABLE Agent_Data.Products ADD COLUMN Embedding VECTOR(FLOAT, 768);
ALTER TABLE Agent_Data.DocChunks DROP COLUMN Embedding;
ALTER TABLE Agent_Data.DocChunks ADD COLUMN Embedding VECTOR(FLOAT, 768);
.env環境ファイルを構成して使いたいモデルを指定する。
OPENAI_MODEL=devstral:24b-small-2505-q4_K_M
OPENAI_API_BASE=http://localhost:11434/v1
EMBEDDING_CONFIG_NAME=ollama-nomic-config
- 埋め込み表現を更新する
オリジナルとは異なる埋め込み表現モデルを使用しているため、ローカルのnomic-embed-textを使用して埋め込み表現を更新する必要があります。
python scripts/embed_sql.py
- 新しい構成を使ってエージェントを実行する
コードは、ローカルエンドポイントから埋め込み表現とLLMを提供するよう構成された設定を使用するようになります。
この構成を使用して、次のような質問ができます。
- 「注文番号1001はどこ?」
- 「返品期間は?」
エージェントは以下を使用します。
- IRIS SQL(構造化データ用)
- ベクトル検索(ローカルでOllamaの埋め込み表現を使用)
- Interoperability(外部API呼び出しをシミュレート)
- ローカルのLLM(回答を取得するために必要なツールを呼び出すコードを計画して生成)
まとめ
Ollamaのおかげで、クラウドに依存せずにIRISでカスタマーサポートエージェントを実行できます。
- データのプライバシーと制御
- トークンごとのコストはゼロ
- モデルをテストして適応させる高い柔軟性(LoRA)
課題ですか? 大規模モデルを実行するために、十分なメモリおよびCPU/GPUリソースを持つマシンが必要になる点です。 しかし、プロトタイプとテスト向けには、非常にパワフルで実用的なオプションです。
役立つ参照
- 📖 公式なOllamaドキュメント:https://ollama.com
- 📦 利用可能なOllamaモデルのリスト:https://ollama.com/library
- 🧩 大規模モデルを効率的に適応させるためのLoRA入門: