Install‐Ollama‐Embedding‐for‐Biblio - krugle-jp/Krugle-Library GitHub Wiki

Krugle Biblioの埋め込みモデルとしてOllama を 利用する

1. 目的

Krugle Biblioが稼働するUbuntuサーバ上 に Ollama を導入し、同一サーバ内で動作する Docker コンテナから Ollama API にアクセスできるようにする。

本書では例としてAWS EC2環境を想定する。

また、本手順ではollamaサービスの外部向け公開は想定しない。


2. 構成

EC2 Ubuntu
├─ Ollama
│   └─ 0.0.0.0:11434 で待ち受け
│
└─ Docker Container
    └─ http://172.17.0.1:11434 または host.docker.internal 経由で接続

Ollama の Linux 版は公式インストールスクリプトで導入でき、systemd サービスとして起動確認する手順が公式ドキュメントに記載されている。([Ollama](https://ollama.com/download/linux?utm_source=chatgpt.com)⁠)


3. Ollama をインストールする

Ubuntu 上で以下を実行する。

curl -fsSL https://ollama.com/install.sh | sh

インストール後、バージョンを確認する。

ollama --version

4. Ollama サービスを起動する

sudo systemctl start ollama
sudo systemctl enable ollama
sudo systemctl status ollama

ログを確認する場合は以下を使う。

journalctl -u ollama --no-pager --follow --pager-end

注意:/user/local配下の権限を確認する

過去の事象として、以下のように ollama ユーザーでバイナリを実行できないケースがあった。

sudo -u ollama /usr/local/bin/ollama --version

エラー例:

sudo: unable to execute /usr/local/bin/ollama: Permission denied

この場合、/usr/local または /usr/local/bin の実行権限が不足していることから以降の手順に支障をきたす可能性があるため、確認する。

namei -l /usr/local/bin/ollama

期待する権限例:

drwxr-xr-x root root /
drwxr-xr-x root root usr
drwxr-xr-x root root local
drwxr-xr-x root root bin
-rwxr-xr-x root root ollama

もし不足している場合、以下のコマンドで修正する。

sudo chmod 755 /usr/local
sudo chmod 755 /usr/local/bin
sudo chmod 755 /usr/local/bin/ollama

5. Embedding Modelを導入する

この例では4096次元(dimentions)をサポートし、RAG用途での精度にも定評のあるqwen3-embeddingモデルを採用する。

ollama pull qwen3-embedding:latest

正常に導入されていることを確認する。

ollama ls

6. Ollama の待ち受けアドレスを変更する

Docker コンテナからホスト側 Ollama に接続するには、Ollama が 127.0.0.1 ではなく、コンテナから到達可能なアドレスで待ち受ける必要がある。

現在の待ち受け状態を確認する。

sudo ss -lntp | grep 11434

以下の場合、ホスト自身からしか接続できない。

127.0.0.1:11434

systemd の override を作成する。

sudo systemctl edit ollama

以下を記載する。

[Service]
Environment="OLLAMA_HOST=0.0.0.0:11434"

反映する。

sudo systemctl daemon-reload
sudo systemctl restart ollama

再確認する。

sudo ss -lntp | grep 11434

以下になっていればよい。

0.0.0.0:11434

7. ホスト上で Ollama API を確認する

curl http://localhost:11434/api/tags

モデルが未登録なら、例えば以下のように取得する。

ollama pull qwen3-embedding:8b

再確認する。

curl http://localhost:11434/api/tags

8. Docker コンテナから接続する

docker0 の IP を使う

Linux Docker では、ホスト側の docker0 アドレスが 172.17.0.1 になることが多い。

ホスト側で確認する。

ip addr show docker0

コンテナ内から疎通確認する。

docker exec -it flow-api /bin/bash
curl http://172.17.0.1:11434/api/tags
curl http://host.docker.internal/api/tags

この例ではKrugle Biblioが既に稼働中であることを想定してcontainer名にflow-apiを使用した。


9. 環境変数の設定

Krugle Biblioの埋め込み(Embedding)モデルとして、以下の通り登録する。

vi /opt/biblio/.env

設定例:

### Embedding Configuration
EMBEDDING_BINDING=ollama
EMBEDDING_MODEL=qwen3-embedding:latest
EMBEDDING_DIM=4096
EMBEDDING_BINDING_HOST=http://host.docker.internal:11434
EMBEDDING_BATCH_NUM=1
EMBEDDING_FUNC_MAX_ASYNC=10
MAX_EMBED_TOKENS=4096


10. まとめ

Docker コンテナから EC2 ホスト上の Ollama を利用する場合の要点は以下。

  1. Ollama を公式スクリプトで導入する
  2. /usr/local と /usr/local/bin/ollama の実行権限を確認する
  3. OLLAMA_HOST=0.0.0.0:11434 を systemd override で設定する
  4. コンテナからは 172.17.0.1:11434 または host.docker.internal:11434 で接続する
  5. AWS セキュリティグループなどのネットワーク設定で 11434 の公開範囲を制限する