世界一やさしいRAG構築入門
── Azure OpenAI Serviceで実現する賢いAIチャットボット

[表紙]世界一やさしいRAG構築入門 ── Azure OpenAI Serviceで実現する賢いAIチャットボット

紙版発売

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

サンプル画像2

サンプル画像3

サンプル画像4

サンプル画像5

サンプル画像6

サンプル画像7

目次

第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 まとめ

著者プロフィール

武井宜行 (たけいのりゆき)

サイオステクノロジー株式会社 シニアアーキテクト
Microsoft MVP

「最新の技術を楽しくわかりやすく」をモットーに情報を発信し続け,2020年にMicrosoft MVPを受賞。コミュニティやMicrosoftの公式イベントに登壇して,今もなお最新技術の探求と情報発信を続けながら,技術コミュニティの発展に貢献している。

得意分野はAzureによるクラウドネイティブな開発やAI関連のテクノロジー。

Facebook: noriyukitakei.f
X: @noriyukitakei
GitHub: noriyukitakei