Open WebUI で OpenFOAM アドバイザーを作る

2025年7月7日

はじめに

Open WebUI で OpenFOAM アドバイザーを作れないかなと試みた。

環境

Ubuntu 22.04 LTS、Ollama、Open WebUI、uv などのセットアップ済み。

とりあえずやってみる

Open WebUI には RAG の機能があるので、とりあえず、公式ドキュメントとチュートリアルを突っ込んでみる。

ここでは言語モデルとして mistral-small3.2:24b を利用している。このヒトはもともと OpenFOAM の知識をある程度もっているので、プロンプトでそれを忘れるように指示している。高度なパラメータでコンテキスト長さ (num_ctx) に 8192 を指定している。この状態で「2次精度TVDスキームをリストアップして」とお願いすると「そんなものはドキュメントにない」と言う。

試しに手動で文書を追加した。

もっとドキュメントが必要と判断した。あと、チュートリアルデータはほとんど役に立っていないようである。

PENGUINITIS の記事の取り込み

PENGUINITIS の記事を取り込もうとした。とりあえずミラーリング。

$ wget --mirror --convert-links --adjust-extension --page-requisites --no-parent --accept "*.html,*.png,*.css" https://ss1.xrea.com/penguinitis.g1.xrea.com/study/OpenFOAM/index.html

PDF のほうがよいかと思ったので、xhtml2pdf で PDF に変換した。

xhtml2pdf のセットアップ

$ uv venv xhtml2pdf
$ . xhtml2pdf/bin/activate
(xhtml2pdf) $ uv pip install xhtml2pdf
(xhtml2pdf) $ uv pip install BeautifulSoup4

変換スクリプトを実行してできるフォルダをナレッジベースに取り込む。

記事増強版

PENGUINITIS の記事を入れてみたが、HTML でも PDF でもたいして変わらず、上の質問だと「ドキュメントにない」と返ってくる。該当の記事にたどり着けていないようである。

試しに、該当記事のみのナレッジベースを作ると、ちゃんと返す。

[管理パネル]-[設定]-[ドキュメント] の [Full Context Mode] を有効にすると、全データを見てくれるので、フルセットのデータでも該当記事を見つけてくれる。ただ、すべてのデータを見ると時間がかかるし、質問によっては回答がとっ散らかることがある。

言語モデルの違い

実際は、OpenFOAM の公式ドキュメントの中にもスキームの記述はある。言語モデルを変えると、これを見つけたりする。ただ、それでももっと適切な PENGUINITIS の記事は見つけてくれない。

埋め込みモデル

埋め込みモデルを変える方法もある。[管理パネル]-[設定]-[ドキュメント] の埋め込みモデルは、デフォルトでは sentence-transformers/all-MiniLM-L6-v2 というものになっているが、これを cl-nagoya/ruri-v3-310m に変えてみる。また、[ブリッジ検索] を有効にしてリランクモデルに cl-nagoya/ruri-v3-reranker-310m を設定する (ブリッジ検索というのは、セマンティック検索とキーワード検索を両方用いたハイブリッド検索のことらしい)。ナレッジベースを読み込みなおす。念の為、モデルのナレッジベースも設定しなおす。

この設定でやると、見つけて欲しいデータを見つけてくれるようになった。試しにブリッジ検索を無効にしても結果は変わらなかったので、埋め込みモデルの効果のようである。

参考

改めて、言語モデルを検討してみると、高度なモデル (qwen3 など) のほうがかっこいい出力をしてくれるが、余計なものを入れたりする。ナレッジを活かすという目的であれば、素直なモデル (mistral-small3.2 など) のほうがよさそうである。

コツ?

とりあえず、「なんでも突っ込んでなんでもいい感じで回答してもらおう」という考えは捨てた方がよい。データや目的は厳選したほうがよい。