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 を利用する場合の要点は以下。
- Ollama を公式スクリプトで導入する
/usr/localと/usr/local/bin/ollamaの実行権限を確認するOLLAMA_HOST=0.0.0.0:11434を systemd override で設定する- コンテナからは
172.17.0.1:11434またはhost.docker.internal:11434で接続する - AWS セキュリティグループなどのネットワーク設定で
11434の公開範囲を制限する