本日は、おうちDCネタです。
2024年6月現在、LLM系のサービスを作るうえで無敵(だと勝手に思っている)なアーキテクチャをご紹介します。
※microAIでは、コストを抑えるためにおうちDCで構築していますが、おうちDCではなくクラウドでも使用可能な構成です。
なにはともあれKubernetes
サービスを安定化させるために必須といっても過言ではない Kubernetes を採用しましょう。なれるまで多少勉強が必要ですが、一度マスターしてしまえば、これほど便利なものはありません。
LLM関係に限らず、Webサービスに関わる全エンジニアにおすすめです。
フロントエンドは、Next.js 一択でもういい気がする
ずっとPHPのLaravelなどで開発を行っていた中、勉強しようと Next.js に手を出したら、「もう、これでいいじゃん」となり、その後、ほぼPHPを触らなくなりました。それくらい便利です。
Tailwindcss が CSSフレームワークとして組み込まれているので、デザインセンスのない私でもそれなりのUIでアプリを作ることができます。
また、当然ですが、
Vercel との相性は抜群、作ったアプリを簡単にインターネット上で公開することができます。
まだ触れたことのないエンジニアの方にぜひ触れていただきたいと思っています。
Difyと相性のよいfastAPI
Swagger UIとReDocによる自動生成ドキュメントがデフォルトで組み込まれているのがポイントで、Difyとの相性がすごく良いです。
Difyでは、fastAPIが出力する openapi の json を読み込みますことで、独自のAPIをカスタムツールとして利用できるようになります。
Djangoでももちろん出力できますが、標準で組み込まれているのと、microAIのようなマイクロサービスの集合体や、リソースが限られている場合は、fastAPIに軍配があがると思っています。
fastAPI vs Django
- Djangoは、完全なフルスタックフレームワークを求める場合や、管理画面や認証機能が必要な場合に最適。
- FastAPIは、高パフォーマンスなAPIやマイクロサービスの開発を目指す場合に最適。
LLM系サービスつくならDifyをベースに
複雑なLLM系のワークフローをビジュアルエディタで簡単に構築することができます。
もう、これがないと生きていけないほど必須なアプリになりました。メンテナンスも頻繁に行われており、今後の機能追加にもかなり期待しています。
DifyのRAGに必須。ベクトルデータベース Milvus
RAG(LLM用カンニングペーパー)は、ベクトルデータとして保存されます。このベクトルデータを保存しておいてくれるデータベースが Milvusです。
オープンソースで無料で利用することができます。Difyの標準のベクトルデータベース(?)ですので、相性もバッチリです。
オンメモリなので、大量のRAGデータを取り扱う場合には、少し大きめのメモリを搭載したノードを用意すると良いと思います。
オープンソースのLLMを運用するならollama
openAI の GPT4oは、そこそこ高額です(とはいえ、コスパは最高に高い)。 Google の Gemini 1.5 Flash は、GPT4oに比べると1/10程度のコストですが、それでもコストがかかってしまいます。
比較的能力の低いLLMでも処理できるような内容は、オープンソースのLLMに任せることで外部に支払うコストを0にすることができます。
そんなオープンソースのLLMの運用を用意にしてくれるのが ollama です。こちらも、必須レベルで採用をおすすめします。