"AI を組み込むなら Python " ――そんな常識はもう古い。
.NET 9 と最新 SDK 群のおかげで C# だけ でクラウド LLM からローカル推論、RAG、NativeAOT まで一気通貫に扱えます。
今回は、「何を選べば "今" の AI 開発を最速で回せるか」 を整理してメモしたものです。C#がますます面白くなってきました!!
1. .NET 9 が用意した "AI Building Blocks"
.NET 9 では Microsoft.Extensions.AI
と Microsoft.Extensions.VectorData
が標準化され、クラウド LLM・ローカル推論・ベクトル検索を 同じインターフェース で呼び分けられるようになりました。さらに Tensor<T>
/ TensorPrimitives
が加わり、SIMD 最適化済みの行列演算を "ほぼ素の C#" で高速に扱えます。ML.NET 4.0 も同梱され、Llama / Phi 系 Causal LM を CPU/GPU で手軽に回せるプレビュー API まで利用可能です。
新 API | 公式の立ち位置 | まず覚えると便利なこと |
---|---|---|
Microsoft.Extensions.AI | 推論・埋め込みの共通抽象レイヤー | OpenAI でもローカル Llama でも 同じコード で呼び出せる |
Microsoft.Extensions.VectorData | ベクトルストア操作の統一 | Azure AI Search → Qdrant → Weaviate を 設定 1 行 で差し替え |
Tensor / TensorPrimitives | 多次元配列の高速計算を標準で提供 |
for ループ無しで画像フィルタや行列積が 10× 以上速く なる |
具体的には…
GPU がなくても CPU だけで小さなニューラルネットを動かしたり、Excel では数分かかる巨大表の集計を一瞬で終わらせることができます。
2. 推論エンジン ― ONNX Runtime 1.22 と Olive
ONNX Runtime (ORT) は "書きだしたら即動く" 万能ランタイムへ進化しました。CUDA / DirectML / WebGPU / CPU AVX-512… デプロイ先に合わせた最適化バイナリを自動選択 するため、同じモデルを PC、スマホ、ブラウザで再利用できます。モデル圧縮ツール Olive と組み合わせれば、量子化・グラフ最適化・レイヤー融合が ワンコマンド。サイズ削減と速度向上をまとめて達成できます。
ツール | 役割 | あとで効いてくるポイント |
---|---|---|
ONNX Runtime (ORT) | AI モデル実行エンジン | CUDA / DirectML / CPU など ハード毎に自動最適化 バイナリを選択 |
Olive | モデル圧縮パイプライン | 量子化 + グラフ最適化 → サイズ 1/4・推論 2〜3× 速 をワンコマンド |
具体的には…
GitHub で拾った 1 GB 超の学習済みモデルを Olive で圧縮し、スマホアプリに組み込んでも数十 MB/サクサク動作、ということが可能になります。
3. TorchSharp 0.105 + ML.NET 4.0
C# だけでディープラーニングを完結させたい場合の二本柱です。TorchSharp は PyTorch とほぼ同じ API を .NET に移植した低レベルフレームワーク。対して ML.NET は AutoML や GUI ライクなパイプラインが売りで、CSV を放り込むと最適モデル+C# コードを自動生成してくれます。用途に合わせて "直書き" と "AutoML" を使い分けるのが定番です。
ライブラリ | コア用途 | 何が楽になるか |
---|---|---|
TorchSharp | PyTorch 相当の低レベル制御を C# で | 画像分類や Llama 系の微調整を Python なし で完結 |
ML.NET | GUI 感覚の AutoML & 推論 API | CSV を食わせるだけ で売上予測モデル生成 → C# コードも自動生成 |
具体的には…
開発 PC の GPU で自社データを使ってモデル微調整 → そのまま DLL として業務アプリに組み込む、という流れがスムーズになります。
4. Azure OpenAI SDK v1.4(Function Calling)+ Semantic Kernel 1.x
OpenAI API が 2025 Q1 に v1 世代へ統合され、Azure と OpenAI 本家を同じ SDK で使い分けられるようになりました。注目は Function Calling――GPT に「自分専用コマンド」を教える仕組みです。さらに Semantic Kernel がワークフロー定義 DSL を提供し、RAG・ツール呼び出し・メモリ管理を 数行の宣言 で構築可能になりました。
コンポーネント | ひと言 | 出来ること |
---|---|---|
Function Calling | GPT に "社内専用コマンド" を教える仕組み | 「今年の売上グラフ」と聞かれたら自動で GetSalesReport() を実行 → PowerPoint を返す |
Semantic Kernel | AI・外部 API・ツールをワークフロー化 | 要約 → 英訳 → PDF 生成 …などを レシピ定義 だけで実行 |
具体的には…
チャットボットから「田中さんの座席を教えて」と入力すると、Kernel が
- GPT に意図理解させ
- 座席検索関数を実行
- 結果を自然言語+画像で整形
──を自動的に繋いでくれます。
5. ベクトル検索 & RAG(Retrieval-Augmented Generation)
社内文書や PDF は Embedding → ベクトルストア に格納すれば GPT の "知識" として扱えます。.NET 9
では VectorData
API がこの部分を統一し、Azure AI Search / Qdrant / Weaviate などをコード変更ゼロで差し替え可能。RAG パイプラインを Semantic Kernel と組み合わせることで、引用付きの安全回答を短納期で実装できます。
技術 | 役割 | 活用例 |
---|---|---|
VectorData API | ベクトル DB 操作の共通化 | マニュアル PDF を Embedding → Azure AI Search / Weaviate / Qdrant どれでも検索 |
RAG パイプライン | GPT + 社内文書を合体 | 「このエラーコードの対処法は?」に対し 該当段落を引用付き で回答 |
具体的には…
チャットボットがマニュアル 500 ページを瞬時に検索し、該当段落を引用しながら答えてくれるようになります。
6. NativeAOT とハードウェア最適化
生成 AI でも Cold-Start は UI 体験を左右します。.NET 9 の NativeAOT と I/O Uring + HTTP/3 スタックを組み合わせると、自己完結 exe が数十 ms で起動し、ネットワーク IO 待ちもカーネルバイパスで最小化できます。推論サーバやエッジデバイスでとくに効果大です。
機能 | 何が嬉しい? |
---|---|
NativeAOT | 依存 DLL ゼロの単体 exe、Cold-Start を 数百 ms → 数十 ms |
I/O Uring + HTTP/3 | Linux 上でカーネルバイパス、推論サーバのレイテンシ削減 |
具体的には…
工場ライン PC にデプロイする座席検知 exe が 起動 0.1 秒・サイズ 5 MB で済み、余分な .NET ランタイムを入れずに配布できます。
7. 実戦サンプル:Datask(座席検索チャットボット)
ステップ | 処理内容 |
---|---|
1. ユーザー入力 | 「田中さんはどこ?」 |
2. LLM 解釈 | Function Calling が FindSeat(emp="田中") を呼び出す |
3. データ取得 | ベクトル検索で類似名前を補完 → SeatLog ビューから現在座標を取得 |
4. 応答生成 | Semantic Kernel がマップ画像を添付し 「北エリア B-12 です」 と返答 |
→ GPT は座席座標を知らなくても、"ツール" を通じて答えられる。
8. まとめ
2025 年の .NET は "AI を後付けする言語" から "AI ファーストで設計されたプラットフォーム" へ進化しました。小さな PoC でも良いので、まずは ひとつの既存アプリに LLM を差し込む ところからスタートしてみると面白いかもです。
まず試すなら | 理由 |
---|---|
Azure OpenAI SDK(Function Calling) | 既存 C# コードに GPT を 安全に差し込みやすい |
Olive → ORT | 性能と配布サイズを 後から チューニングできる |
TensorPrimitives | "素の C#" で行列演算が 10× 速い → 小規模推論/画像処理が楽 |
学び方のコツ: 名前が難しい技術ほど「何が楽になる?」をセットで覚えると定着が早い。まずは dotnet new console -n AIDemo
→ SDK サンプルを動かしてみましょう。
追記:次の一手を迷わないために
1. 段階的統合が鉄則
すべてを一度に導入するより、まず Function Calling だけ実装 → 効果を確認 → RAG → NativeAOT… と 1 レイヤーずつ足す 方が失敗コストを抑えられます。
2. 測定せずに最適化しない
ORT 量子化や TensorPrimitives で「どれくらい速くなったか」を BenchmarkDotNet で計測し、数字に基づいて次の施策を選ぶのが 2025 年流。
3. コミュニティを活用する
.NET AI Stack は急速に進化中。Semantic Kernel Discord や ONNX Runtime GitHub Discussions で事例を集めると、公式ドキュメントにないベストプラクティスに出会えます。
参考リンク
.NET AI 基盤
ベクトル検索
- Microsoft.Extensions.VectorData Namespace – Microsoft Learn
- Introducing Microsoft.Extensions.VectorData Preview – .NET Blog