Slide 1

Slide 1 text

No content

Slide 2

Slide 2 text

Noriyuki TAKEI ෢Ҫ ٓߦ Information • サイオステクノロジー株式会社 • Microsoft MVP for Microsoft Azure Favorites • Azure • パデル • スキー • ライブ配信 • ⽢いもの • ⾛ること blog https://tech-lab.sios.jp/ core skill Azureによるクラウドネイティブな アプリ開発 Twitter @noriyukitakei

Slide 3

Slide 3 text

技術ブログ「SIOS Tech.Lab」 RAG構築のための Azure OpenAI Serviceリファレンスアーキテクチャ詳解 https://tech-lab.sios.jp/archives/38900

Slide 4

Slide 4 text

3"(ͱ͸ʁ

Slide 5

Slide 5 text

Retrieval Augmented Generation (RAG) 既存の情報を検索し、それを活⽤して 新たなテキストを⽣成する技術 例︓社内規程をもとに回答するチャットボット RAGとは︖

Slide 6

Slide 6 text

RAGのない世界とRAGのある世界 RAGを使わない場合 RAGを使う場合 Azure OpenAI Service 休暇規程 1.休暇 有給については … 外部データベース ② 有給は何⽇取得 できる︖ 有給は何⽇取得 できる︖ 休暇規程 1.休暇 有給については … + 有給 規定⽇数 休暇規程 1.休暇 有給については … 休暇規程 1.休暇 有給については … 休暇規程 1.休暇 有給については … 有給は20⽇です。 有給は20⽇です。 ③ ④ ⑤ ⑥ ⑦ Azure OpenAI Service ② 有給は何⽇取得 できる︖ ③ 有給は何⽇取得 できる︖ ・有給は10⽇です。 ・夏季休暇は… … ① モデルの トレーニング ① 外部データベースへの登録 有給は20⽇です。 ④ 有給は20⽇です。 ⑤ ユーザー ユーザー 管理者 管理者

Slide 7

Slide 7 text

RAGのメリット 1 トレーニングコストの削減 既存の外部情報源を活⽤することで、モデルをゼロからトレー ニングするよりもコストを抑えることができます。 2 知識の継続的な更新 外部情報源は常に更新されるため、RAGを使⽤すると、その更 新された情報を活⽤して、最新の知識でモデルを維持できます。

Slide 8

Slide 8 text

"[VSF0QFO"*4FSWJDF ϦϑΝϨϯεΞʔΩςΫνϟ ֓ཁ

Slide 9

Slide 9 text

このリファレンスアーキテクチャが提供してくれるもの 1 RAGアーキテクチャ RAGを実現するために必要なアーキテクチャを提供してくれます。 有給は何⽇取得で きる︖ 以下の質問の検索クエリを⽣成して 有給は何⽇取得できる︖ 有給取得⽇数 規定 モデル就業規則 第1章 総則 …総則には、⼀般的に就業規 則の作成の⽬的や適⽤範囲等 を規定します。… 第5章 休暇等 …所定労働⽇の8割以上出勤 した労働者に対しては、10⽇ の年次有給休暇を与える… 第1章 総則 …総則には、⼀般的に就業規則 の作成の⽬的や適⽤範囲等を… 第5章 休暇等 …所定労働⽇の8割以上出勤し た労働者に対しては、10⽇の年 次有給休暇を与える… 第1章 総則 …総則には、⼀般的に就業規則 の作成の⽬的や適⽤範囲等を… 第5章 休暇等 …所定労働⽇の8割以上出勤し た労働者に対しては、10⽇の年 次有給休暇を与える… 「有給は何⽇取得できる︖」という質問に、以下の内容をもとに回答して。 …最低5⽇間は労働者が⾃由に取得できる⽇数として残し、5⽇を超 える… 有給取得⽇数 規定 …最低5⽇間は労働者が⾃由に 取得できる⽇数として残し、5 ⽇を超 える… 年次有給休暇は、最低でも 10⽇与えられます。 年次有給休暇は、 最低でも10⽇与え られます。 モデル就業規則-1.txt モデル就業規則-2.txt インデックス1 インデックス2 ⑤ プロンプト⼊⼒ ⑥ 検索クエリ⽣成依頼 ① ドキュメント 読み込み ③ 分割してBlobに登録 ④ チャンク化してインデックス化 ⑦ 検索クエリ返却 ⑧ 検索クエリでインデックス検索 ⑨ ドキュメント取得 ⑩ ドキュメントをもとに回答⽣成依頼 ⑪ Webアプリケーションに回答返却 ⑬ ユーザーに回答返却 … Azure App Service 凡例 … Azure OpenAI Service … Azure AI Search … Azure Blob Storage … Pythonスクリプト ⑫ プロンプトと回答の記録 … Azure Cosmos DB ② テキスト抽出 … Document Intelligence

Slide 10

Slide 10 text

このリファレンスアーキテクチャが提供してくれるもの 2 ソースコード 先程のアーキテクチャを実現するためのソースコードを提供してくれます。

Slide 11

Slide 11 text

このリファレンスアーキテクチャが提供してくれるもの 3 デモアプリ 先程のアーキテクチャをベースに機能し、Infrastructure as Code(IaC)を利⽤してコマンド⼀つでデプ ロイ可能なインフラとデモアプリケーションを提供します。

Slide 12

Slide 12 text

Azure OpenAI Serviceリファレンスアーキテクチャのすごいところ 1 ソースコードが公開されている ソースコードが公開されているので、内部の動きを詳細に把握することが できる。 2 すぐ動く Azure Developer CLIとBicepによりインフラがコード化されているので、 コマンド⼀発ですぐ動く。 3 ⽇本語解説 ⽇本語対応による解説がついている︕︕

Slide 13

Slide 13 text

有給は何⽇取得で きる︖ 以下の質問の検索クエリを⽣成して 有給は何⽇取得できる︖ 有給取得⽇数 規定 モデル就業規則 第1章 総則 …総則には、⼀般的に就業規 則の作成の⽬的や適⽤範囲等 を規定します。… 第5章 休暇等 …所定労働⽇の8割以上出勤 した労働者に対しては、10⽇ の年次有給休暇を与える… 第1章 総則 …総則には、⼀般的に就業規則 の作成の⽬的や適⽤範囲等を… 第5章 休暇等 …所定労働⽇の8割以上出勤し た労働者に対しては、10⽇の年 次有給休暇を与える… 第1章 総則 …総則には、⼀般的に就業規則 の作成の⽬的や適⽤範囲等を… 第5章 休暇等 …所定労働⽇の8割以上出勤し た労働者に対しては、10⽇の年 次有給休暇を与える… 「有給は何⽇取得できる︖」という質問に、以下の内容をもとに回答して。 …最低5⽇間は労働者が⾃由に取得できる⽇数として残し、5⽇を超 える… 有給取得⽇数 規定 …最低5⽇間は労働者が⾃由に 取得できる⽇数として残し、5 ⽇を超 える… 年次有給休暇は、最低でも 10⽇与えられます。 年次有給休暇は、 最低でも10⽇与え られます。 モデル就業規則-1.txt モデル就業規則-2.txt インデックス1 インデックス2 ⑤ プロンプト⼊⼒ ⑥ 検索クエリ⽣成依頼 ① ドキュメント 読み込み ③ 分割してBlobに登録 ④ チャンク化してインデックス化 ⑦ 検索クエリ返却 ⑧ 検索クエリでインデックス検索 ⑨ ドキュメント取得 ⑩ ドキュメントをもとに回答⽣成依頼 ⑪ Webアプリケーションに回答返却 ⑬ ユーザーに回答返却 … Azure App Service 凡例 … Azure OpenAI Service … Azure AI Search … Azure Blob Storage … Pythonスクリプト ⑫ プロンプトと回答の記録 … Azure Cosmos DB ② テキスト抽出 … Document Intelligence みんな⼤好きAzure OpenAI Serivceです。コレがないと始ま りません。RAGのシステムにて、以下の⽤途に利⽤します。 • Azure AI Searchに対してドキュメント検索するための検 索クエリ⽣成 • Azure AI Searchから取得したドキュメントを元にした回 答⽂⽣成 Azure OpenAI Service

Slide 14

Slide 14 text

有給は何⽇取得で きる︖ 以下の質問の検索クエリを⽣成して 有給は何⽇取得できる︖ 有給取得⽇数 規定 モデル就業規則 第1章 総則 …総則には、⼀般的に就業規 則の作成の⽬的や適⽤範囲等 を規定します。… 第5章 休暇等 …所定労働⽇の8割以上出勤 した労働者に対しては、10⽇ の年次有給休暇を与える… 第1章 総則 …総則には、⼀般的に就業規則 の作成の⽬的や適⽤範囲等を… 第5章 休暇等 …所定労働⽇の8割以上出勤し た労働者に対しては、10⽇の年 次有給休暇を与える… 第1章 総則 …総則には、⼀般的に就業規則 の作成の⽬的や適⽤範囲等を… 第5章 休暇等 …所定労働⽇の8割以上出勤し た労働者に対しては、10⽇の年 次有給休暇を与える… 「有給は何⽇取得できる︖」という質問に、以下の内容をもとに回答して。 …最低5⽇間は労働者が⾃由に取得できる⽇数として残し、5⽇を超 える… 有給取得⽇数 規定 …最低5⽇間は労働者が⾃由に 取得できる⽇数として残し、5 ⽇を超 える… 年次有給休暇は、最低でも 10⽇与えられます。 年次有給休暇は、 最低でも10⽇与え られます。 モデル就業規則-1.txt モデル就業規則-2.txt インデックス1 インデックス2 ⑤ プロンプト⼊⼒ ⑥ 検索クエリ⽣成依頼 ① ドキュメント 読み込み ③ 分割してBlobに登録 ④ チャンク化してインデックス化 ⑦ 検索クエリ返却 ⑧ 検索クエリでインデックス検索 ⑨ ドキュメント取得 ⑩ ドキュメントをもとに回答⽣成依頼 ⑪ Webアプリケーションに回答返却 ⑬ ユーザーに回答返却 … Azure App Service 凡例 … Azure OpenAI Service … Azure AI Search … Azure Blob Storage … Pythonスクリプト ⑫ プロンプトと回答の記録 … Azure Cosmos DB ② テキスト抽出 … Document Intelligence Azureが提供するマネージドな全⽂検索サービスです。RAG に必要な外部の情報源、つまりモデル就業規則をAzure AI Searchに取り込みます。 Azure AI Search

Slide 15

Slide 15 text

有給は何⽇取得で きる︖ 以下の質問の検索クエリを⽣成して 有給は何⽇取得できる︖ 有給取得⽇数 規定 モデル就業規則 第1章 総則 …総則には、⼀般的に就業規 則の作成の⽬的や適⽤範囲等 を規定します。… 第5章 休暇等 …所定労働⽇の8割以上出勤 した労働者に対しては、10⽇ の年次有給休暇を与える… 第1章 総則 …総則には、⼀般的に就業規則 の作成の⽬的や適⽤範囲等を… 第5章 休暇等 …所定労働⽇の8割以上出勤し た労働者に対しては、10⽇の年 次有給休暇を与える… 第1章 総則 …総則には、⼀般的に就業規則 の作成の⽬的や適⽤範囲等を… 第5章 休暇等 …所定労働⽇の8割以上出勤し た労働者に対しては、10⽇の年 次有給休暇を与える… 「有給は何⽇取得できる︖」という質問に、以下の内容をもとに回答して。 …最低5⽇間は労働者が⾃由に取得できる⽇数として残し、5⽇を超 える… 有給取得⽇数 規定 …最低5⽇間は労働者が⾃由に 取得できる⽇数として残し、5 ⽇を超 える… 年次有給休暇は、最低でも 10⽇与えられます。 年次有給休暇は、 最低でも10⽇与え られます。 モデル就業規則-1.txt モデル就業規則-2.txt インデックス1 インデックス2 ⑤ プロンプト⼊⼒ ⑥ 検索クエリ⽣成依頼 ① ドキュメント 読み込み ③ 分割してBlobに登録 ④ チャンク化してインデックス化 ⑦ 検索クエリ返却 ⑧ 検索クエリでインデックス検索 ⑨ ドキュメント取得 ⑩ ドキュメントをもとに回答⽣成依頼 ⑪ Webアプリケーションに回答返却 ⑬ ユーザーに回答返却 … Azure App Service 凡例 … Azure OpenAI Service … Azure AI Search … Azure Blob Storage … Pythonスクリプト ⑫ プロンプトと回答の記録 … Azure Cosmos DB ② テキスト抽出 … Document Intelligence Azureが提供するマネージドなアプリケーション実⾏基盤です。 RAGのフロントエンド(UI)、バックエンドを動作させるため に使います。 Azure App Service

Slide 16

Slide 16 text

有給は何⽇取得で きる︖ 以下の質問の検索クエリを⽣成して 有給は何⽇取得できる︖ 有給取得⽇数 規定 モデル就業規則 第1章 総則 …総則には、⼀般的に就業規 則の作成の⽬的や適⽤範囲等 を規定します。… 第5章 休暇等 …所定労働⽇の8割以上出勤 した労働者に対しては、10⽇ の年次有給休暇を与える… 第1章 総則 …総則には、⼀般的に就業規則 の作成の⽬的や適⽤範囲等を… 第5章 休暇等 …所定労働⽇の8割以上出勤し た労働者に対しては、10⽇の年 次有給休暇を与える… 第1章 総則 …総則には、⼀般的に就業規則 の作成の⽬的や適⽤範囲等を… 第5章 休暇等 …所定労働⽇の8割以上出勤し た労働者に対しては、10⽇の年 次有給休暇を与える… 「有給は何⽇取得できる︖」という質問に、以下の内容をもとに回答して。 …最低5⽇間は労働者が⾃由に取得できる⽇数として残し、5⽇を超 える… 有給取得⽇数 規定 …最低5⽇間は労働者が⾃由に 取得できる⽇数として残し、5 ⽇を超 える… 年次有給休暇は、最低でも 10⽇与えられます。 年次有給休暇は、 最低でも10⽇与え られます。 モデル就業規則-1.txt モデル就業規則-2.txt インデックス1 インデックス2 ⑤ プロンプト⼊⼒ ⑥ 検索クエリ⽣成依頼 ① ドキュメント 読み込み ③ 分割してBlobに登録 ④ チャンク化してインデックス化 ⑦ 検索クエリ返却 ⑧ 検索クエリでインデックス検索 ⑨ ドキュメント取得 ⑩ ドキュメントをもとに回答⽣成依頼 ⑪ Webアプリケーションに回答返却 ⑬ ユーザーに回答返却 … Azure App Service 凡例 … Azure OpenAI Service … Azure AI Search … Azure Blob Storage … Pythonスクリプト ⑫ プロンプトと回答の記録 … Azure Cosmos DB ② テキスト抽出 … Document Intelligence Azureが提供するマネージドなNoSQLデータベースです。プ ロンプトと回答を記録します。 Azure Cosmos DB

Slide 17

Slide 17 text

有給は何⽇取得で きる︖ 以下の質問の検索クエリを⽣成して 有給は何⽇取得できる︖ 有給取得⽇数 規定 モデル就業規則 第1章 総則 …総則には、⼀般的に就業規 則の作成の⽬的や適⽤範囲等 を規定します。… 第5章 休暇等 …所定労働⽇の8割以上出勤 した労働者に対しては、10⽇ の年次有給休暇を与える… 第1章 総則 …総則には、⼀般的に就業規則 の作成の⽬的や適⽤範囲等を… 第5章 休暇等 …所定労働⽇の8割以上出勤し た労働者に対しては、10⽇の年 次有給休暇を与える… 第1章 総則 …総則には、⼀般的に就業規則 の作成の⽬的や適⽤範囲等を… 第5章 休暇等 …所定労働⽇の8割以上出勤し た労働者に対しては、10⽇の年 次有給休暇を与える… 「有給は何⽇取得できる︖」という質問に、以下の内容をもとに回答して。 …最低5⽇間は労働者が⾃由に取得できる⽇数として残し、5⽇を超 える… 有給取得⽇数 規定 …最低5⽇間は労働者が⾃由に 取得できる⽇数として残し、5 ⽇を超 える… 年次有給休暇は、最低でも 10⽇与えられます。 年次有給休暇は、 最低でも10⽇与え られます。 モデル就業規則-1.txt モデル就業規則-2.txt インデックス1 インデックス2 ⑤ プロンプト⼊⼒ ⑥ 検索クエリ⽣成依頼 ① ドキュメント 読み込み ③ 分割してBlobに登録 ④ チャンク化してインデックス化 ⑦ 検索クエリ返却 ⑧ 検索クエリでインデックス検索 ⑨ ドキュメント取得 ⑩ ドキュメントをもとに回答⽣成依頼 ⑪ Webアプリケーションに回答返却 ⑬ ユーザーに回答返却 … Azure App Service 凡例 … Azure OpenAI Service … Azure AI Search … Azure Blob Storage … Pythonスクリプト ⑫ プロンプトと回答の記録 … Azure Cosmos DB ② テキスト抽出 … Document Intelligence Pythonスクリプトです。このスクリプトは、RAGに必要な外 部情報源、具体的にはモデル就業規則をAzure AI Searchに 登録するために使⽤されます。後ほど説明しますが、PDFか らテキストをそのまま抽出して登録するのではなく、テキス トを分割して登録する必要があります。このような複雑な処 理をこのスクリプトが⾏います。 インデクサー

Slide 18

Slide 18 text

有給は何⽇取得で きる︖ 以下の質問の検索クエリを⽣成して 有給は何⽇取得できる︖ 有給取得⽇数 規定 モデル就業規則 第1章 総則 …総則には、⼀般的に就業規 則の作成の⽬的や適⽤範囲等 を規定します。… 第5章 休暇等 …所定労働⽇の8割以上出勤 した労働者に対しては、10⽇ の年次有給休暇を与える… 第1章 総則 …総則には、⼀般的に就業規則 の作成の⽬的や適⽤範囲等を… 第5章 休暇等 …所定労働⽇の8割以上出勤し た労働者に対しては、10⽇の年 次有給休暇を与える… 第1章 総則 …総則には、⼀般的に就業規則 の作成の⽬的や適⽤範囲等を… 第5章 休暇等 …所定労働⽇の8割以上出勤し た労働者に対しては、10⽇の年 次有給休暇を与える… 「有給は何⽇取得できる︖」という質問に、以下の内容をもとに回答して。 …最低5⽇間は労働者が⾃由に取得できる⽇数として残し、5⽇を超 える… 有給取得⽇数 規定 …最低5⽇間は労働者が⾃由に 取得できる⽇数として残し、5 ⽇を超 える… 年次有給休暇は、最低でも 10⽇与えられます。 年次有給休暇は、 最低でも10⽇与え られます。 モデル就業規則-1.txt モデル就業規則-2.txt インデックス1 インデックス2 ⑤ プロンプト⼊⼒ ⑥ 検索クエリ⽣成依頼 ① ドキュメント 読み込み ③ 分割してBlobに登録 ④ チャンク化してインデックス化 ⑦ 検索クエリ返却 ⑧ 検索クエリでインデックス検索 ⑨ ドキュメント取得 ⑩ ドキュメントをもとに回答⽣成依頼 ⑪ Webアプリケーションに回答返却 ⑬ ユーザーに回答返却 … Azure App Service 凡例 … Azure OpenAI Service … Azure AI Search … Azure Blob Storage … Pythonスクリプト ⑫ プロンプトと回答の記録 … Azure Cosmos DB ② テキスト抽出 … Document Intelligence 機械学習モデルを⽤いてドキュメントの解析を⾏い、テキス ト構造を抽出することができます。これを⽤いて、Pythonス クリプトがPDFファイルからテキストを抜き出します。 Document Intelligence

Slide 19

Slide 19 text

有給は何⽇取得で きる︖ 以下の質問の検索クエリを⽣成して 有給は何⽇取得できる︖ 有給取得⽇数 規定 モデル就業規則 第1章 総則 …総則には、⼀般的に就業規 則の作成の⽬的や適⽤範囲等 を規定します。… 第5章 休暇等 …所定労働⽇の8割以上出勤 した労働者に対しては、10⽇ の年次有給休暇を与える… 第1章 総則 …総則には、⼀般的に就業規則 の作成の⽬的や適⽤範囲等を… 第5章 休暇等 …所定労働⽇の8割以上出勤し た労働者に対しては、10⽇の年 次有給休暇を与える… 第1章 総則 …総則には、⼀般的に就業規則 の作成の⽬的や適⽤範囲等を… 第5章 休暇等 …所定労働⽇の8割以上出勤し た労働者に対しては、10⽇の年 次有給休暇を与える… 「有給は何⽇取得できる︖」という質問に、以下の内容をもとに回答して。 …最低5⽇間は労働者が⾃由に取得できる⽇数として残し、5⽇を超 える… 有給取得⽇数 規定 …最低5⽇間は労働者が⾃由に 取得できる⽇数として残し、5 ⽇を超 える… 年次有給休暇は、最低でも 10⽇与えられます。 年次有給休暇は、 最低でも10⽇与え られます。 モデル就業規則-1.txt モデル就業規則-2.txt インデックス1 インデックス2 ⑤ プロンプト⼊⼒ ⑥ 検索クエリ⽣成依頼 ① ドキュメント 読み込み ③ 分割してBlobに登録 ④ チャンク化してインデックス化 ⑦ 検索クエリ返却 ⑧ 検索クエリでインデックス検索 ⑨ ドキュメント取得 ⑩ ドキュメントをもとに回答⽣成依頼 ⑪ Webアプリケーションに回答返却 ⑬ ユーザーに回答返却 … Azure App Service 凡例 … Azure OpenAI Service … Azure AI Search … Azure Blob Storage … Pythonスクリプト ⑫ プロンプトと回答の記録 … Azure Cosmos DB ② テキスト抽出 … Document Intelligence Azureが提供するマネージドなオブジェクトストレージです。 Pythonスクリプトによって分割されたPDFをAzure Blob Storageにアップロードします。 Azure Blob Storage

Slide 20

Slide 20 text

有給は何⽇取得で きる︖ 以下の質問の検索クエリを⽣成して 有給は何⽇取得できる︖ 有給取得⽇数 規定 モデル就業規則 第1章 総則 …総則には、⼀般的に就業規 則の作成の⽬的や適⽤範囲等 を規定します。… 第5章 休暇等 …所定労働⽇の8割以上出勤 した労働者に対しては、10⽇ の年次有給休暇を与える… 第1章 総則 …総則には、⼀般的に就業規則 の作成の⽬的や適⽤範囲等を… 第5章 休暇等 …所定労働⽇の8割以上出勤し た労働者に対しては、10⽇の年 次有給休暇を与える… 第1章 総則 …総則には、⼀般的に就業規則 の作成の⽬的や適⽤範囲等を… 第5章 休暇等 …所定労働⽇の8割以上出勤し た労働者に対しては、10⽇の年 次有給休暇を与える… 「有給は何⽇取得できる︖」という質問に、以下の内容をもとに回答して。 …最低5⽇間は労働者が⾃由に取得できる⽇数として残し、5⽇を超 える… 有給取得⽇数 規定 …最低5⽇間は労働者が⾃由に 取得できる⽇数として残し、5 ⽇を超 える… 年次有給休暇は、最低でも 10⽇与えられます。 年次有給休暇は、 最低でも10⽇与え られます。 モデル就業規則-1.txt モデル就業規則-2.txt インデックス1 インデックス2 ⑤ プロンプト⼊⼒ ⑥ 検索クエリ⽣成依頼 ① ドキュメント 読み込み ③ 分割してBlobに登録 ④ チャンク化してインデックス化 ⑦ 検索クエリ返却 ⑧ 検索クエリでインデックス検索 ⑨ ドキュメント取得 ⑩ ドキュメントをもとに回答⽣成依頼 ⑪ Webアプリケーションに回答返却 ⑬ ユーザーに回答返却 … Azure App Service 凡例 … Azure OpenAI Service … Azure AI Search … Azure Blob Storage … Pythonスクリプト ⑫ プロンプトと回答の記録 … Azure Cosmos DB ② テキスト抽出 … Document Intelligence

Slide 21

Slide 21 text

チャンク化について ジェダイ時代のアナキン は、愛する者を守りたい という純粋な願望と若さ 故の激情から、ジェダイ の掟を何度となく破って しまう。特に、妻パド メ・アミダラが死の運命 にあるという予知夢を⾒ た後は[注 1]、妻を救う ⼒を得たいと願うあまり にシスの暗⿊卿ダース・ シディアス(後の銀河帝 国皇帝)の… ジェダイ時代のアナキンは、愛する 者を守りたいという純粋な願望と若 さ故の激情から、ジェダイの掟を何 度となく破ってしまう。… ダース・ベイダー-01.txt 危機を察して駆けつけたシディアス により救出され、サイボーグ化⼿術 を施されて⼀命は取り留めたものの シディアスが… ダース・ベイダー-02.txt 以降は帝国軍の指揮官として反乱同 盟軍によるレジスタンス活動の制圧 に従事することとなり、『反乱者た ち』ではその反乱軍として… ダース・ベイダー-03.txt Azure OpenAI Service チャンク化 ベクトル化 [0.014032107, -0.0075616054,…] [0.014032107, -0.0075616054,…] [0.014032107, -0.0075616054,…] Azure AI Search テキストをベクトル化するEmbeddings APIは、リクエストのトークン数に限度(text-embedding-ada-002で は8191トークン)があるのでテキストを細かく分割する(チャンク化)が必要になります。

Slide 22

Slide 22 text

ը໘ͷߏ੒

Slide 23

Slide 23 text

企業向けChatと社内⽂書検索 企業向けChat いわゆるChatGPTライクな機能を提供するものです。事前に トレーニングされたモデルの知識を利⽤しています。 社内⽂書検索 厚⽣労働省が提供するモデル就業規約に基づいて、問い合わせ に回答します。いわゆるRAGです。

Slide 24

Slide 24 text

こちらをクリックすると、企 業向けChatの機能が使える 会話履歴を消去できる 詳細な設定画⾯に遷移する ここにプロンプトを⼊⼒する 【企業向けChat】プロンプト⼊⼒画⾯

Slide 25

Slide 25 text

利⽤するモデルを選択 システムプロンプト(AIのキ ャラ)を設定 AIの回答のランダム性を制御 するパラメータを設定 【企業向けChat】設定画⾯

Slide 26

Slide 26 text

こちらをクリックすると、 社内⽂書検索(RAG)の機能が使える ここにプロンプトを⼊⼒する 会話履歴を消去できる 詳細な設定画⾯に遷移する 【社内⽂書検索】プロンプト⼊⼒画⾯

Slide 27

Slide 27 text

① ② 【社内⽂書検索】ドキュメント

Slide 28

Slide 28 text

① ② 【社内⽂書検索】思考プロセス

Slide 29

Slide 29 text

Searched for: 有給取得⽇数制度 Conversations: { ʻroleʼ: ʻsystemʼ, ʻcontentʼ: “Assistant helps the customer questions. Be brief in your answers…略 …, e.g. [info1.txt]. Donʻt combine sources, list each source separately, e.g. [info1.txt][info2.pdf].\n” } { ʼroleʻ: ʼuserʻ, ʼcontentʻ: ʼ有給は何⽇取得できる︖\n\nSources:\n001018385-39.pdf: - 40 - 11 本条第4項に定める年次有給休暇の計画的付与制度とは、労働者代表との間で労使 協定を 結んだ場合、最低5⽇間は労働者が⾃由に取得できる…略…\n001018385-30.pdf: 以上の 期間に区分する場合は、最初の期間については労働⽇及び労働⽇ごとの 所定労働ʼ } ① ② ③ 【社内⽂書検索】思考プロセス Azure AI Searchに投げた 検索クエリ システムのロールです。かなり⻑いのですが、 要はプロンプトの下に表⽰される情報をもと に回答を⽣成してくださいという指⽰をAIに しています。 ユーザーのロールです。「有給は何⽇取得できる︖」はユーザーが⼊⼒したプロンプトです。その下に 回答を作成するための情報が列挙されています。これは①のクエリでAzure AI Searchに検索をして返っ てきたドキュメントになります。システムのロールであったように、LLMはこれらのドキュメントに基 づいてプロンプトに対する回答を⽣成します。

Slide 30

Slide 30 text

① ② 【社内⽂書検索】補助資料 回答を⽣成するための情報の元となった ドキュメントを表⽰します。

Slide 31

Slide 31 text

① ② ③ ④ ⑤ ⑥ 【社内⽂書検索】設定画⾯ 「企業向けChat」と同様に、利⽤するモ デルを選択します。 AIの回答のランダム性を制御するパラ メータになります。 検索クエリで検索した際に取得するド キュメント数を指定します。つまり、こ こで10と指定すると、検索クエリで検索 して取得した10個のドキュメントをもと に回答を⽣成します。 セマンティック検索を使うかどうかを設 定します。 ここに⼊⼒した値と、Azure AI Search のcategoryというフィールドに⼀致する ドキュメントを検索対象から除外します。 セマンティック検索の機能であるセマン ティックキャプションを使うかどうかを 設定します。セマンティックキャプショ ンを使うと、リランクされたそれぞれの 検索結果に対して抽出的要約(検索結果か ら最も関連の⾼いと思われる⽂章の⼀部 を抽出)を作り出してくれて、回答の精度 が⾼くなります。

Slide 32

Slide 32 text

世界⼀わかりみの深いクラウドネイティブ on Azure 第28回 ⽣成AI時代の検索⼿法!!スターウォーズの登場⼈物で紐解く ベクトル/セマンティック/ハイブリッド検索 https://www.youtube.com/live/AkXsqimV3J0

Slide 33

Slide 33 text

ϑϩϯτΤϯυͱ όοΫΤϯυͷ࿈ܞ

Slide 34

Slide 34 text

バックエンド Python フロントエンド (ブラウザ) Java Script [ …, { “user”: “有給は何⽇取得できる?”, “response”: “年次有給休暇は…” } ] messages (ステート) 会話履歴 App Service Azure OpenAI Service Azure AI Search Azure Cosmos DB 画⾯ ① プロンプト 取得 休憩時間はどれくらい︖ 休憩時間に関する… ③ LLM呼び出し ④ LLMからの結果返却 ② API呼び出し ⑤ APIレスポンス返却

Slide 35

Slide 35 text

バックエンド Python フロントエンド (ブラウザ) Java Script [ …, { “user”: “有給は何⽇取得できる?”, “response”: “年次有給休暇は…” }, { “user”: “休憩時間はどれくらい︖”, “response”: “休憩時間に関する…” } ] messages (ステート) 会話履歴 新しい 質問と回答 App Service Azure OpenAI Service Azure AI Search Azure Cosmos DB 画⾯ ⑦ 再レンダリング ⑥ messageのステートに追加

Slide 36

Slide 36 text

3FBDUͷ ίϯϙʔωϯτߏ੒

Slide 37

Slide 37 text

Layout DocSearch UserChatMessage AnswerChatMessage QuestionInput

Slide 38

Slide 38 text

"[VSF"* 4FBSDIͷ ΠϯσοΫε

Slide 39

Slide 39 text

id レコードを⼀意に識別するIDで、その形式は [ファイル名]-[チャンクに⼀意に割り振られた連番].pdf となる。例えば、contosodoc.pdfの場合、contosodoc-1.pdfとなる。 category ドキュメントをチャンク化するときに、すべてのチャンクに指定できるカテ ゴリ。デモアプリではnullとなるが、指定も可能。 content チャンク化されたテキスト sourcepage チャンク化されたテキストが含まれるPDFファイル名。contosodoc-1.pdfや contosodoc-2.pdfとなる。 sourcefile ページごとに分割される前のPDFのファイル名。contosodoc.pdfとなる。 Azure AI Searchのインデックス

Slide 40

Slide 40 text

υΩϡϝϯτͷऔΓࠐΈ

Slide 41

Slide 41 text

チャンク1 チャンク2 チャンク3 チャンク4 ドキュメント全体 (contosodoc.pdf) ページごとに分割されたドキュメント contosodoc-1.pdf Azure AI Searchのレコードにて、 どのチャンクがどのドキュメントに含まれるかを 関連付ける contosodoc-2.pdf contosodoc-3.pdf contosodoc-4.pdf { “id”: “contosodoc-1.pdf”, “category”: null, “content”: “チャンク1の内容”, “sourcepage”: “contosodoc-1.pdf”, “sourcefile”: “contosodoc.pdf” }, オーバーラップ インデックス ドキュメント取り込みの概要

Slide 42

Slide 42 text

① ② 【社内⽂書検索】ドキュメント

Slide 43

Slide 43 text

…employment regulations must not be contrary to laws and regulations and collective agreements applicable to the workplace. The director of the labor standards office concerned may order changes to employment regulations that are in violation of laws, regulations, or collective agreements (Article 92 of the Labor Standards Law). \nThe Labor Standards Law applies to all workplaces employing at least one worker. However, in workplaces employing at least 10 workers on a regular basis, the preparation or amendment of employment regulations must be reported to the director of the labor standards office concerned (Article 89 of the Labor Standards Law). (Article 89 of the Labor Standards Law). In addition, employment regulations must be prepared and submitted at the workplace level, not at the company level. For example, if a company has two or more sales offices, stores, etc., the number of workers is not totaled for the entire company, but each sales office, store, etc. is considered as one workplace, and the company is obliged to prepare work rules for workplaces with 10 or more workers employed on a regular basis. For companies with multiple sales offices, stores, etc., it is possible to submit a collective notification via the… ① 1000⽂字を抽出する。 ② ①で取得した1000⽂字の末尾から1⽂字ずつ進み、⼀定の範囲内の⽂字を調査して、以下の⽂字がないかを調べる。 • 単語の区切り⽂字(スペース、セミコロン(;)、改⾏など) • ⽂の終わりを表す⽂字(ピリオド(.)、ハテナ(?)、ビックリマーク(!)) 「⽂の終わりを表す⽂字」が登場したら、そこをチャンクの最後尾とする。もし「⽂の終わりを表す⽂字」が登場しなかたったら、⼀番最後に 登場した「単語の区切り⽂字」をチャンクの最後尾とする。 ③ ①で取得した1000⽂字のはじめから1⽂字ずつ戻り、⼀定の範囲内の⽂字を調査して、以下の⽂字がないかを調べる。 • 単語の区切り⽂字(スペース、セミコロン(;)、改⾏など) • ⽂の終わりを表す⽂字(ピリオド(.)、ハテナ(?)、ビックリマーク(!)) 「⽂の終わりを表す⽂字」が登場したら、その前の⽂字をチャンクのスタートの⽂字とする。もし「⽂の終わりを表す⽂字」が登場しなかたっ たら、⼀番最後に登場した「単語の区切り⽂字」をチャンクのスタートの⽂字とする。

Slide 44

Slide 44 text

…employment regulations must not be contrary to laws and regulations and collective agreements applicable to the workplace. The director of the labor standards office concerned may order changes to employment regulations that are in violation of laws, regulations, or collective agreements (Article 92 of the Labor Standards Law). \nThe Labor Standards Law applies to all workplaces employing at least one worker. However, in workplaces employing at least 10 workers on a regular basis, the preparation or amendment of employment regulations must be reported to the director of the labor standards office concerned (Article 89 of the Labor Standards Law). (Article 89 of the Labor Standards Law). In addition, employment regulations must be prepared and submitted at the workplace level, not at the company level. For example, if a company has two or more sales offices, stores, etc., the number of workers is not totaled for the entire company, but each sales office, store, etc. is considered as one workplace, and the company is obliged to prepare work rules for workplaces with 10 or more workers employed on a regular basis. For companies with multiple sales offices, stores, etc., it is possible to submit a collective notification via the… 最終的なチャンクはこの様に なる。

Slide 45

Slide 45 text

前のチャンクの終了位置から 100⽂字戻った位置 …取得した1000⽂字 …obliged to prepare work rules for workplaces with 10 or more workers employed on a regular basis. For companies with multiple sales offices, stores, etc., it is possible to submit a collective notification via the director of the labor standards office with jurisdiction over the location of the head office, as long as the rules of employment of the sales offices, stores, etc. are the same as those of the head office, both before and after the change. \nWhen preparing or amending the employment regulations, a written opinion signed or stamped by a labor union organized by a majority of the workers (if there is one) or a person representing a majority of the workers (if there is no labor union organized by a majority) must be attached to the notification to the director of the labor standards office having jurisdiction over the location of the head office (the Labor Standards Law). The document must be signed or stamped by a person representing a majority of the workers (written opinion) and must be attached to the application (Article 90 of the Labor Standards Law). \nIn this case, the person representing a majority of the workers must: 1) not be a person in a supervisory or managerial position as stipulated in Article 41, Item 2 of the Labor Standards Law;… 前のチャンクの 終了位置 チャンク1 チャンク2 チャンク3 チャンク4 ドキュメント全体 (contosodoc.pdf)

Slide 46

Slide 46 text

"[VSF$PTNPT %#΁ͷ ϓϩϯϓτͷه࿥

Slide 47

Slide 47 text

approach ChatGPTライクな機能である「企業向けChat」を使ったときに は「chat」、いわゆるRAGの機能である「社内⽂書検索」を使 った場合には「docsearch」が⼊る user プロンプトを⼊⼒したユーザーのユーザー名が⼊る。デモアプ リでは認証の処理が⼊っていないので、固定値で 「anonymous」となる。 tokens プロンプトと回答のトークン数が⼊る。 input ユーザーが⼊⼒したプロンプトが⼊る。 response Azure OpenAI Serviceが⽣成した回答が⼊る。 JSONの構成

Slide 48

Slide 48 text

ϏϧυͱσϓϩΠ

Slide 49

Slide 49 text

src backend static frontend Reactのプロジェクト assets index-a90aab6e.js Azure Develoer CLI with Bicep クライントPC リポジトリ Azure backend配下の ファイル ② ビルド ③ コピー ① Azureリソース作成 ④ デプロイ ⑤ インデックス作成

Slide 50

Slide 50 text

ϦϙδτϦͷߏ੒

Slide 51

Slide 51 text

リポジトリTOP src data 001018385.pdf infra scripts prepdocs.py → RAGの外部情報源であるモデル就業規約のPDF → モデル就業規約のPDFをAzure AI Searchに取り込むスクリプト backend frontend → Azure Developre CLI関連のファイル → バックエンドのプロジェクト → フロントエンドのReactプロジェクト approaches chatreadretrieveread.py → Azure OpenAI ServiceやAzure AI Searchと連携して回答を⽣成する ⼀番⼤事なスクリプト

Slide 52

Slide 52 text

技術ブログ「SIOS Tech.Lab」 RAG構築のための Azure OpenAI Serviceリファレンスアーキテクチャ詳解 https://tech-lab.sios.jp/archives/38900

Slide 53

Slide 53 text

SIOS Tech.Lab https://tech-lab.sios.jp/ 世界⼀わかりみの深い クラウドネイティブ on Azure https://youtube.com/playlist?list=PLbTt_DSTMYgGLUtZ0ewuBwhTBSZnNE2-w 様々なメディアで情報発信しています︕︕ 是⾮みてね︕︕ 技術ブログ YouTube配信

Slide 54

Slide 54 text

エンジニア募集(プロフェッショナルサービスチーム) エンジニアファーストの環境で、技術⼒を⾼めませんか︖ 変化や進化を楽しみながら、私たちとともに歩んでくれる仲間を募集してい ます︕ OSS & クラウド技術をコアテクノロジーとしたシステム開発 ● 統合認証システム&クラウド連携 ● OSS&クラウド基盤導⼊、OSSカスタマイズや開発、OSSサポート ● クラウドネイティブシステム、データ分析基盤、アプリ開発 ● APIエコノミーコンサルティング&技術⽀援サービス 詳細はこちらのサイトからご覧ください︕ https://tech-lab-engineer.sios.jp/

Slide 55

Slide 55 text

࠷ޙ·Ͱ͝ਗ਼ௌ௖͖ ͋Γ͕ͱ͏͍͟͝·ͨ͠ʂʂ