目次
第1章 生成AIに挑戦すべき理由
1.1 生成AIとは
- 生成AIの概要
- 生成AIの性能を左右する「モデル」
- 自然言語処理に特化したモデル「LLM」
- 生成AIの応用例
- 生成AIにとって大きな課題である「ハルシネーション」
- ハルシネーションの対策
1.2 生成AIによって仕事はどう変わるのか
- テキスト生成の自動化
- カスタマーサービスの変革
- ソフトウェア開発におけるコード自動生成
- [Column]GitHub Copilot
1.3 独自情報に基づいた生成AIによるチャットシステム「RAG」
- RAGのない世界
- RAGのある世界
- RAGのない世界とRAGのある世界の違い
1.4 まとめ
第2章 OpenAIとAzure OpenAI Service
2.1 OpenAIとは
- OpenAIの成り立ち
- OpenAIのサービス提供形態
- OpenAIが展開するさまざまなサービス
2.2 OpenAIとAzure OpenAI Serviceの関係
- 利用可能なモデル
- 価格
- プレイグラウンド
- セキュリティ
- コンテンツフィルター
- SLA
- サポート
2.3 本書でAzure OpenAI Serviceを利用する理由
- 実績のあるモデルの活用
- Microsoft製品とのシームレスな連携
- スケーラブルでメンテナンスフリーのクラウド基盤
2.4 まとめ
第3章 Azureを使ってみよう
3.1 Microsoft Azureとは
- オンプレミスとクラウド
- 自前で管理が必要なオンプレミス
- メンテナンス不要なインフラ基盤であるクラウド
- オンプレミスとクラウドの違い
- Azureの構成
3.2 Azureの主要サービス
- Azure Virtual Machines
- Azure App Service
- Azure Database for MySQL
- Azure AI Search
3.3 Azureの課金体系
- 時間ベースの課金
- リクエストベースの課金
3.4 コスト管理の重要性
- Azure料金計算ツールの利用
- 予算の作成
3.5 Azureのサブスクリプション契約
3.6 Azureの学習方法 ── Microsoft Learnの活用
- Microsoft Learnとは
- Microsoft Learnの構成
- すぐに試せるサンドボックス環境
- Microsoft Learnを使ってみる
3.7 まとめ
第4章 Azure OpenAI Serviceを使ってみよう
4.1 Azure OpenAI Serviceを利用するための土台作り
- [INFO]【リソース名を付けるときの注意点】
- [Column]リソースの命名規則
- リソースグループの作成
- Azure OpenAI Serviceのリソース作成
4.2 AIの実行環境 ── Azure AI Foundryでできること
- プレイグラウンド
- さまざまな機能の管理
4.3 AIとチャットをしてみる
- チャットを使うための準備
- 簡単なチャットをしてみる
- 生成AIにキャラ付けをする ── システムメッセージの使い方
- 試した機能のコードを表示する方法
- 試した機能のデプロイを変更する方法
- 試した機能のパラメーターを変更する方法
4.4 AIで画像を生成してみる
4.5 まとめ
第5章 Azure OpenAI Serviceのさまざまな機能
5.1 トークンとは
- なぜトークンが重要なのか
- トークンの数え方
- [Column]トークン計測ツール
- コストの計算
- コンテキストの上限
- [Column]コンテキストの誤差
5.2 モデルとデプロイ
- デプロイを使わないOpenAIの場合
- デプロイを使うAzure OpenAI Serviceの場合
5.3 コンテンツフィルター
- フィルタリングのカテゴリ
- コンテンツフィルターの適用イメージ
- 追加のオプション
- コンテンツフィルタリングを試してみる
5.4 クォータの制限と管理
5.5 認証
- APIキーによる認証
- OAuthベースのトークンによる認証
- 2つの認証方法の比較
5.6 APIの発行
- APIのインターフェース
- [Column]APIバージョン
- [Column]Chat Completions APIの詳細な仕様
- 一問一答の会話を実現するAPI
- [INFO]【Azure OpenAI Serviceのリソース名はAzure上で一意である必要がある】
- [Column]curlコマンドについて
- 会話履歴を考慮したAPI
- [Column]ステートレスとステートフルの違い
5.7 まとめ
第6章 簡単な生成AIアプリを作ってみよう
6.1 作成する生成AIアプリの概要
6.2 開発方法
- 開発プログラミング言語
- 開発エディター
6.3 開発環境構築
- Pythonのインストール
- Visual Studio Codeのインストール
- Visual Studio Codeの日本語化
- Python拡張機能のインストール
- Pythonライブラリのインストール
- [Column]Python ライブラリを使う理由
6.4 ソースコードの説明
- 必要なライブラリをインポートする
- Azure OpenAI Serviceを設定する
- Azure OpenAI Serviceのクライアントを作成する
- 小説の生成関数を定義する
- プロンプトを設定する
- 小説を生成する
- 生成された小説を表示する
6.5 小説生成アプリの実行
6.6 小説生成アプリのデバッグ
6.7 まとめ
第7章 社内ナレッジを活用する生成AIチャットボット(RAGアプリ)を作ってみよう
7.1 RAGの基本のおさらい
7.2 RAGアプリの情報検索を担うAzure AI Search
- Azure AI Searchの概要
- Azure AI Searchのデータ構成
- Azure AI Searchのインフラストラクチャー
7.3 Azure AI Searchの検索手法
- キーワード検索
- ベクトル検索
- [INFO]【ベクトル検索やコサイン類似度について】
- キーワード検索とベクトル検索の比較
7.4 作成する社内規程検索RAGアプリの概要
- [Column]Streamlitとは?
- システム構成
- 処理の流れ
7.5 開発方法
- [INFO]【Azureサービスのエミュレーターを利用した開発】
7.6 開発環境構築
7.7 Retriever・Generatorの作成
- リソースグループの作成
- Azure OpenAI Serviceのリソース作成
- Azure AI Searchのリソース作成
- インデックスの作成
- [Column]Azure AI Searchのデータ型と属性
- 認証情報の取得
- モデルのデプロイ
7.8 AIオーケストレーター・インデクサーの解説
- ソースコードの構成
- 依存関係ファイル ── requirements.txt
- [INFO]【フレームワークを使うメリットとその影響】
- 環境変数ファイル ── .env
- インデクサー ── indexer.py
- AIオーケストレーター ── orchestrator.py
- [INFO]【StreamlitのチャットUI】
7.9 動かしてみよう
- インデクサーの実行
- AIオーケストレーターの実行
7.10 社内規程検索RAGアプリのデバッグ
- インデクサーのデバッグ
- オーケストレーターのデバッグ
7.11 まとめ
7.12 ソースコード全体
第8章 RAGアプリをどうやって運用していくのか
8.1 RAGの運用
8.2 RAGの評価方法
- 人手による評価
- LLMによる評価
8.3 RAGの評価ツール ── Prompt Flow
- Prompt Flowのアーキテクチャ
8.4 簡単なフローを動かしてみよう
- これから動かすフローの概要
- フローを作成する
- フローにデプロイを適用する
- 入力(inputs)の説明
- LLMノード(joke)の説明
- [Column]テンプレートエンジンの役割
- Pythonノード(echo)の説明
- 出力(outputs)の説明
- フローを実行する
8.5 RAGの評価指標
- ユーザーの質問
- コンテキスト ── Retrieverによって取得された情報
- 回答 ── Generatorが生成した回答
- Ground Truth ── 本当の回答
- Prompt Flowによる評価指標
8.6 社内規程検索RAGアプリの評価方法
- 評価用データのフォーマット
8.7 評価用データ作成プログラムの解説
- 依存関係ファイル ── requirements.txt
- 環境変数ファイル ── .env
- 評価用データ作成プログラム ── generate_eval_data.py
8.8 社内規程検索RAGアプリを評価してみる
- Prompt Flowを使ったRAGの評価
8.9 RAGの改善の必要性
8.10 RAGの改善手法その1 ── セマンティックチャンキング
- 依存関係ファイル ── requirements.txt
- 環境変数ファイル ── .env
- プログラム本体 ── semantic_chunker.py
- セマンティックチャンキングの実行
8.11 RAGの改善手法その2 ── HyDE
- 依存関係ファイル ── requirements.txt
- 環境変数ファイル ── .env
- プログラム本体 ── hyde.py
- HyDEの効果を検証
8.12 RAGの改善手法その3 ── ハイブリッド検索
- 依存関係ファイル ── requirements.txt
- 環境変数ファイル ── .env
- Wikipediaからドキュメントを取得し,Azure AI Searchに登録する
- プログラム ── indexer.py
- キーワード検索,ベクトル検索,ハイブリッド検索を行うプログラム ── hybrid_search.py
- ハイブリッド検索の効果を検証
8.13 まとめ
8.14 ソースコード全体
第9章 進化のはやい生成AIアプリ開発についていくために
9.1 RAG実現のための最先端手法
- マルチモーダル
- GraphRAG
- AIエージェント
9.2 最新技術をキャッチアップするための3つのステップ
- 基礎知識の習得
- 最新技術のキャッチアップ
- 情報発信