世界一やさしいRAG構築入門
── Azure OpenAI Serviceで実現する賢いAIチャットボット
── Azure OpenAI Service
2025年3月19日紙版発売
武井宜行 著
B5変形判/336ページ
定価3,300円(本体3,000円+税10%)
ISBN 978-4-297-14732-7
書籍の概要
この本の概要
本書では,RAGの基本概念から構築・活用までを徹底的にわかりやすく解説しています。初心者でも理解しやすいよう,図解をふんだんに用いて,従来技術との違いを明確にし,さらに実際にRAGを動かせるコードも掲載しています。具体的な内容は以下のとおりです。
生成AIの基礎知識:
生成AIの仕組みや活用方法を学び,ChatGPTをはじめとする大規模言語モデル(LLM)の特徴や制約を理解します
Azureの基礎知識:
Azureの基本的な概念や主要なサービスについて理解し,RAGを構築する際に必要なクラウド環境の知識を身につけます
RAGの概念:
RAGの基本原理を学び,従来のチャットボットとの違いや,どのようにしてより正確な回答を導き出せるのかを把握します
RAGの構築方法:
Azure OpenAI ServiceやAzure AI Searchを活用し,実際に動作するRAGを構築する手順を学びます
RAGの評価と改善手法:
RAGの回答精度を評価するための方法や,回答精度を高めるためのチューニング手法を学びます
本書ではクラウド基盤としてMicrosoft Azureを使用していますが,解説の中心はRAGの基本概念にあります。そのため,他のクラウド環境でも応用できる内容になっています。
こんな方におすすめ
本書は以下のような読者を対象としています。
- 生成AIやRAGに初めて触れるが,RAGの仕組みを理解したい方
- すぐに動作するRAGの構築方法を知りたい方
- RAGの構築プロジェクトをリードする立場の方
- Azure OpenAI ServiceやAzure AI Searchなど,Azureのサービスを活用したRAGの構築方法を学びたい方
- RAGのテストや改善手法について知りたい方
この書籍に関連する記事があります!
本書のサンプル
本書の紙面イメージは次のとおりです。画像をクリックすることで拡大して確認することができます。
目次
第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つのステップ
- 基礎知識の習得
- 最新技術のキャッチアップ
- 情報発信
9.3 まとめ
この本に関連する書籍
-
生成AIアプリ開発大全――Difyの探求と実践活用
Chat GPTをはじめとした生成AIサービスが躍進しています。Gemini,ClaudeやAzure OpenAI,Llamaなど生成AIのサービスは日々能力が向上し,さまざまなビジネスシーンです...
-
LangChainとLangGraphによるRAG・AIエージェント[実践]入門
本書では,OpenAIによるAIサービスを利用するためのOpenAI API,オープンソースのLLMアプリ開発ライブラリLangChain を使って,LLM(大規模言語モデル)を活用したRAG(...
-
60分でわかる! 生成AI ビジネス活用最前線
ChatGPTの公開で熱狂的ブームとなった生成AIも,ビジネスの現場やサービスへの実装フェーズに入りました。生成AIの活用が広がる分野はどこなのか? 業務の効率化や価値...