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 など) のほうがよさそうである。 コツ?とりあえず、「なんでも突っ込んでなんでもいい感じで回答してもらおう」という考えは捨てた方がよい。データや目的は厳選したほうがよい。 | |
| PENGUINITIS | |