記事
· 19 hr 前 5m read

Ollamaを使用して、InterSystems IRISとローカルモデルでAIエージェントを実行する

前の記事では、smolagentsとInterSystems IRISを使用して、SQL、ベクトル検索を使用したRAGinteroperabilityを組み合わせたカスタマーサービス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の構成がすでに含まれています。 次を行う必要があるだけです。

  1. Ollamaで実行するために必要なモデルをダウンロードする
    ベクトル検索の埋め込み表現のためにnomic-embed-text、LLMとしてdevstralを使用しました。

  2. ローカルモデルを使って、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');
  1. サンプルのテーブルにベクトルを保存するために列サイズを調整する(ローカルモデルのベクトルサイズは、オリジナルの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);
  1. .env 環境ファイルを構成して使いたいモデルを指定する。
OPENAI_MODEL=devstral:24b-small-2505-q4_K_M
OPENAI_API_BASE=http://localhost:11434/v1
EMBEDDING_CONFIG_NAME=ollama-nomic-config
  1. 埋め込み表現を更新する

オリジナルとは異なる埋め込み表現モデルを使用しているため、ローカルのnomic-embed-textを使用して埋め込み表現を更新する必要があります。

python scripts/embed_sql.py
  1. 新しい構成を使ってエージェントを実行する

コードは、ローカルエンドポイントから埋め込み表現とLLMを提供するよう構成された設定を使用するようになります。

この構成を使用して、次のような質問ができます。

  • 「注文番号1001はどこ?」
  • 「返品期間は?」

エージェントは以下を使用します。

  • IRIS SQL(構造化データ用)
  • ベクトル検索(ローカルでOllamaの埋め込み表現を使用)
  • Interoperability(外部API呼び出しをシミュレート)
  • ローカルのLLM(回答を取得するために必要なツールを呼び出すコードを計画して生成)

まとめ

Ollamaのおかげで、クラウドに依存せずにIRISでカスタマーサポートエージェントを実行できます。

  • データのプライバシーと制御
  • トークンごとのコストはゼロ
  • モデルをテストして適応させる高い柔軟性(LoRA)

課題ですか? 大規模モデルを実行するために、十分なメモリおよびCPU/GPUリソースを持つマシンが必要になる点です。 しかし、プロトタイプとテスト向けには、非常にパワフルで実用的なオプションです。


役立つ参照

ディスカッション (0)0
続けるにはログインするか新規登録を行ってください