Slide 1

Slide 1 text

1 G sより精度 高い AGシステム 構築
 Application eetup ol.5 
 2023/12/18
 株式会社エクスプラザ
 松本和高


Slide 2

Slide 2 text

2 松本 和高
 株式会社エクスプラザ リードエンジニア
 X: _mkazutaka
 Github: mkazutaka
 18年にバックエンドエンジニアとしてメルカリに入社。そ 後、ミラ ティブ、フリーランスを得て株式会社エクスプラザに所属。フロント エンドからバックエンドまで幅広く開発しています。
 Code生成系AIと相性がいい 関数型なんじゃないかと
 思って関数型プログラミングを勉強したりしています。


Slide 3

Slide 3 text

CONFIDENTIAL INFORMATION: Not for Public Distribution - Do Not Copy 3 株式会社エクスプラザ (EXPLAZA, Inc.) 会社名 プロダクト 力で、豊かな暮らしをつくる ミッション 代表取締役CEO 高橋一生 代表者 2020年07月03日 設立 東京都港区六本木4丁目8-5 和幸ビル 所在地 会社概要

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

今日 お話
 
 G sより AG 回答精度が高いシステムを作る


Slide 6

Slide 6 text

9 🦚 AG ( etrieval-augmented Generation)
 ● と特定 外部データシステムを連携させることで、 機能を拡張する方法 
 
 外部データと連携 外部データに基づいた回答 をする

Slide 7

Slide 7 text

10 🦚 なぜ AGが必要か
 ● 能力を強化し、より正確かつ新しい情報を提供するため 
 ○ トレーニングデータに 、最新 情報が含まれていない場合がある 
 ○ AGを使用することで、リアルタイム 情報取得や専門的なトピックに対応できる 


Slide 8

Slide 8 text

11 🦚 AG 精度について
 ● ここで AGで 精度を「 AGで 回答がユーザにとって適切かどうか」と定義する 
 ○ こ 適切具合 各社違う ず(フレンドリーさ、回答が正しけれ いい か) 
 
 こ 回答が適切かどうか

Slide 9

Slide 9 text

12 🦚 G sより高精度にするに 
 ● G sより高精度な AGにするに 
 ○ G sより、コンテキストサイズを増やす 
 ○ G sより、正確なコンテキストを渡す事が必要 
 ● やっていること 、
 AGで 回答精度を上げるため 手法を粛々とやっているだけ
 ○ G sと比較することで、ビジネス的な価値が追加される できちんとやっていきたい 
 そ うち抜かれてしまうとエンジニア いらない で ってなっちゃったり 


Slide 10

Slide 10 text

というわけで実装していく


Slide 11

Slide 11 text

14 🌵 AGをシンプルに考えたとき 実装ステップ
 1. データ 読み込み
 DFなど ドキュメントからテキストデータ 読み込み 
 2. データ チャンク分け
 読み込んだテキストデータを適切なチャンクに分ける 
 3. データを保存
 適切にわけたデータをDBに保存する 
 4. データ 検索
 ユーザ 質問に対して、関連する情報をDBから検索 
 5. 文章 生成
 DBから取得したデータをもとに文章を生成 
 6. 評価
 正しく文章が生成されているか評価する 


Slide 12

Slide 12 text

15 🌱 AGをシンプルに考えたとき 実装ステップ
 1. データ 読み込み
 DFなど ドキュメントからテキストデータ 読み込み 
 2. データ チャンク分け
 読み込んだテキストデータを適切なチャンクに分ける 
 3. データ 保存
 適切にわけたデータをDBに保存する 
 4. データ 検索
 ユーザ 質問に対して、関連する情報をDBから検索 
 5. 文章 生成
 DBから取得したデータをもとに文章を生成 
 6. 評価
 正しく文章が生成されているか評価する 


Slide 13

Slide 13 text

16 🌱 データ 読み込み 実装
 ● nstructured (strategy=’hi_res’) を使う
 ○ テキストドキュメント 前処理をするライブラリで 
 データ 前処理とクリーニングに用いることができる 
 ○ hi_resモード 、 eta社 物体検出ライブラリ「detectron2」を使って 
 レイアウトを識別している
 ○ テーブル構造をH テーブルタグで構築することができる 
 
 ● pypdf, pymupdf, unstructured 中で 
 unstructuredが最も精度が高い(弊社調べ)


Slide 14

Slide 14 text

🌱 データ 読み込み 実装コード
 ● partition_pdfが
 unstructured 
 呼 出す部分
 ● 主要部分自体 
 5行ぐらいで
 実行できる


Slide 15

Slide 15 text

18 📚 [補足] 有料ならAzure AI Document Intelligenceもあり
 ● Azure AI Document Intelligenceと 
 ○ icrosoftが出しているAIドキュメントパーサ 
 ● nstructuredと同じぐらい精度が良い(弊社調べ)
 ● 表で 出力結果 nstructuredより良かった(私 肌感)
 ○ ただし、若干高い気がする
 ドキュメントが限定的なら選択肢として良さそう 


Slide 16

Slide 16 text

19 🪴 AGをシンプルに考えたとき 実装ステップ
 1. データ 読み込み
 DFなど ドキュメントからテキストデータ 読み込み 
 2. データ チャンク分け
 読み込んだテキストデータを適切なチャンクに分ける 
 3. データ 保存
 適切にわけたデータをDBに保存する 
 4. データ 検索
 ユーザ 質問に対して、関連する情報をDBから検索 
 5. 文章 生成
 DBから取得したデータをもとに文章を生成 
 6. 評価
 正しく文章が生成されているか評価する 


Slide 17

Slide 17 text

20 🪴 データ チャンク分け 実装
 ● 理想的に 、特定 セクション単位(意味的なまとまり)で分けたい
 ○ チャンク数が少ない => 回答に必要な情報を十分に渡せない 
 ○ チャンク数が多い => 不要なトークンや情報が混ざる 
 ○ チャンク数が多い まだ 性能でカバーできるが、少ない カバーできない 
 ● G -4を使ってセクション単位で分ける
 ○ ドキュメント テキストをすべてプロンプトに入れてセクションで分けてっていう 
 ■ 詳しく テックブログ「 G -4 urboにドキュメント チャンク分けを任せてみる 」
 ○ 今回 これが有効だった で、こ 方法を使っている 
 ○ 人間とほぼ近い感覚で、ドキュメントをセクションに分けることができる場合がある 
 ■ テストデータ作ってる最中にふと思いついた 
 ■ とくに規約系だと完璧じゃんってなる 
 


Slide 18

Slide 18 text

21 🪴 データ チャンク分け 実装コード
 ● コンテンツを渡して
 G -4にセクション分けを
 してもらう
 ● penAIライブラリ 
 Json odeを使って
 出力を調整


Slide 19

Slide 19 text

22 🌿 AGをシンプルに考えたとき 実装ステップ
 1. データ 読み込み
 DFなど ドキュメントからテキストデータ 読み込み 
 2. データ チャンク分け
 読み込んだテキストデータを適切なチャンクに分ける 
 3. データ 保存
 適切にわけたデータをDBに保存する 
 4. データ 検索
 ユーザ 質問に対して、関連する情報をDBから検索 
 5. 文章 生成
 DBから取得したデータをもとに文章を生成 
 6. 評価
 正しく文章が生成されているか評価する 


Slide 20

Slide 20 text

23 🌿 データ保存 実装 (1/3)
 ● セクション単位で分けたやつをそ まま保存すべきで ない
 ○ ユーザ クエリに対して、検索される文章が多い 
 ○ セマンティック検索 、あくまで文章 類似度を検索している 
 ■ 「短い文章を含む長い文章」を「短い文章」で検索したときに 
 「短い文章を含む長い文章」がヒットすると 限らない 
 ■ 「短い文章を含む長い文章」を検索するに 、 
 「長い文章中 短い文章」を「短い文章」で検索したほうがいい 


Slide 21

Slide 21 text

📚 補足: コサイン類似度とドット積でベクトル化を比較する
 24

Slide 22

Slide 22 text

25 🌿 データ保存 実装 (2/3)
 ● amaIndex ecursive etrieverを応用する
 ○ 検索 短い文章で、 AGで使用するコンテキスト 長い文章を渡す 
 ○ 以下 図 、特定 チャンク数で分けた場合 ecursive etriever イメージ図 
 検索 こっちを使う コンテキストに こっちを渡す

Slide 23

Slide 23 text

26 🌿 データ保存 実装 (3/3)
 ● amaIndexで 、特定 チャンク数分け方 実装ケースとか紹介がない
 ● で、 ecursive etriever 機構を利用して独自実装する


Slide 24

Slide 24 text

27 🌿 データ 検索と文章 生成 実装
 ● amaIndex 機構を利用する
 ○ ecursive etrieverが amaIndexを使用している で、独自に実装するメリット ない 
 ○ プロンプト 外部から渡すようにする 


Slide 25

Slide 25 text

28 🌿 データ保存 実装コード
 ● セクションとセンテンス ode arserを作る
 ● それぞれ Index odeを作る。 
 Index odeが親子 関係を 
 保存している
 ● すべて Indexを toreに保存 


Slide 26

Slide 26 text

29 🌿 データ 検索・文章生成 実装コード
 ● こ あたり amaIndex 
 ドキュメントから参照している 
 ● 1行目: ectorIndex etrieverを作る 
 ● 4行目: ecursive etrieverを作る 
 ● ecursive etrieverを呼ぶときに 
 ○ root_idを検索
 ○ root_idが etrieverなら etrieverを 
 呼ぶ
 ○ ectorIndex etrieverが呼 れる 
 ○ 子IDを検索、親IDを返す 
 ○ ecursive etrieverが親ID 
 結果を返す
 


Slide 27

Slide 27 text

30 🚀 AGをシンプルに考えたとき 実装ステップ
 1. データ 読み込み
 DFなど ドキュメントからテキストデータ 読み込み 
 2. データ チャンク分け
 読み込んだテキストデータを適切なチャンクに分ける 
 3. データ 保存
 適切にわけたデータをDBに保存する 
 4. データ 検索
 ユーザ 質問に対して、関連する情報をDBから検索 
 5. 文章 生成
 DBから取得したデータをもとに文章を生成 
 6. 評価
 正しく文章が生成されているか評価する 


Slide 28

Slide 28 text

31 󰞵 評価
 ● 対象: G s / 今回 実装
 ● ドキュメント:
 ○ 商工会議所が出している「中小企業・小規模事業者 ため インボイス制度対策」 
 ● G sと今回 実装ケースを比較評価する
 ○ 質問文を15個用意
 ■ ドキュメントをみて、私が準備 
 ■ インボイス制度に関するQ&A目次一覧 
 ○ 質問文から 回答 評価 => G -4を使う 


Slide 29

Slide 29 text

32 󰞵 G -4で評価する
 あなた 、チャットボット 返答が適切かを評価する優秀なアシスタントです。
 ユーザ 入力する質問と回答を以下 基準に従って評価してください
 
 1. 適切性: 回答がきちんとした文章や丁寧な文章になっているか(1点 不適切、5点 非常に適切)
 2. 正確性: 情報 正確さ(1点 誤情報、5点 完全に正確)
 3. 補足情報: 回答に有用な補足情報が含まれているか(1点 全くなし、5点 非常に有用)
 
 総合評価: これら 要素を踏まえた上で、回答に対する総合的な評価を1-5点で付けてください。
 
 J で結果を出力します。
 キー値に 、appropriateness, accuracy, additional, score, commentを含めてください。
 総合評価 キー値 `score`にしてください。


Slide 30

Slide 30 text

33 󰞵 結果
 ● G sと今回 実装ケースを1-5で評価する
 ○ 今回 システム(top-k=2)がもっとも良い評価が出た 
 ○ top-k3 とつだけ質問 回答にわかりませんと答えてスコアが1になってた で 
 それに っ られて下がっている 
 GPTs 今回 システム (top-k=2) 今回 システム (top-k=3) 中央値 3.0 5.0 5.0 平均 3.5 4.64 4.43

Slide 31

Slide 31 text

34 📚 補足1: . インボイス制度について教えてください
 インボイス制度 、2019年(令和元年)10月に導入された消費税 軽減税率に伴って、2023 年(令和5年)10月1日から開始される制度です。こ 制度で 、適格請求書(インボイス) や り取りが必要となり、インボイスを受け取った事業者 みが消費税 仕入税額控除を受けるこ とができます。インボイス発行に 税務署長へ 登録申請と、登録番号 発行が必要です。 インボイス制度 導入によって、以下 ような変化が予想されます: - インボイスを発行できない事業者から 購入で 、仕入税額控除ができず、消費税 負担が 増える可能性があります。 - それが原因で取引が見直されることがあるかもしれません。 - 仕入先がインボイスを発行しない場合、そ 分 仕入税額控除ができなくなるため、事業者 消費税負担が増える可能性があります。 インボイス発行事業者になるために 、2023年3月31日までに登録申請を行う必要があり、 2023年4月1日以降でも申請が可能となっています。また、同年度 税制改正により、2023年 10月2日以降に登録希望日から登録を受けることも可能になりました。 こ 制度へ 対応 特に、インボイス発行事業者になるかどうかに応じて異なるため、各事業 者 自身 状況に応じた対策を行う必要があります。本書 、消費税 免税事業者、課税事 業者からインボイス発行事業者になる者、ならない者を対象に、事業者 タイプごとに情報を色 分けして確認できるようになっています。
 インボイス制度と 、2023年(令和5年)10月1日から導入される消費税 仕入税額控除 方 式です。こ 制度で 、課税事業者が取引に関して適格請求書(インボイス)を発行し、そ 写 しを保存することが必要になります。インボイスに 、発行者 氏名また 名称、登録番号、取 引年月日、取引 内容(軽減税率 対象品目である旨)、税率ごとに区分して合計した対価 額およ 適用税率、税率ごとに区分した消費税額、受領者 氏名また 名称などが記載され ます。 こ 制度 導入により、原則として免税事業者等から 仕入について 、本則課税による仕入 税額控除ができなくなります。免税事業者 、基準期間(原則として個人事業者 前々年、法 人 前々事業年度) 消費税 課税売上高が1,000万円以下など 要件を満たす事業者で す。免税事業者がインボイス発行事業者になるために 、消費税 課税事業者になる必要が あります。 インボイス発行事業者になるために 、税務署に登録申請をし、インボイス発行事業者として 登録を受けなけれ なりません。登録された内容 、国税庁 適格請求書発行事業者公表サ イトにて公表されます。 課税事業者であっても、インボイス発行事業者へ 登録 任意です。例え 、主な販売先が一 般消費者である場合、事務処理や業務へ 影響を十分考慮し、インボイス発行事業者へ 登 録を行わない選択肢もあります。 インボイス制度 導入に伴い、事業者 適切な対応を行う必要があります。例え 、免税事業 者から 仕入が多い場合 、インボイス発行事業者になることを提案する、取引価格 見直し を行うなど 対策が考えられます。また、価格表示 ルールにも注意が必要で、消費税額を含 めた価格を表示することが義務づけられています。 インボイス制度に関する詳細や、登録申請 手続きについて 、国税庁 ウェブサイトや関連 する資料を参照することをお勧めします。 GPTs(Score: 4.5) 今回 top-k3 実装(Score: 5)

Slide 32

Slide 32 text

35 「適格請求書等保存方式」(インボイス制度) 、2023年(令和5年)10月1日から開始される制 度で、課税事業者が取引をする際に適格請求書(インボイス)を用いなけれ なりません。こ 制度により、インボイスを受け取った者 みが消費税 仕入税額控除を行えるようになります。 インボイスに 、従来 請求書内容に加えて、登録番号や適用税率、税率ごとに区分した消費 税額など 記載が必要とされています。インボイスを発行するために 、税務署長宛に登録申 請書を提出し、インボイス発行事業者として 登録と登録番号 発行を受ける必要がありま す。 こ 制度 、具体的な計算例や図解をまじえながら解説されており、自社がインボイスを発行 できない場合、販売先が仕入税額控除を行えなくなるため、消費税 負担増により取引 見直 しが生じる可能性があること、また仕入先がインボイスを発行しない場合に 自社 消費税負 担が増えることなど 影響もあるため、インボイス制度について正しく理解し、適切な対策を講 じることが重要です。
 「適格請求書等保存方式」と 、2023年10月1日から導入される消費税 仕入税額控除 新し い方式です。こ 方式 、インボイス制度とも呼 れており、課税事業者が仕入税額控除を行 うために 、適格な請求書(インボイス)を受領し、これを保存する必要があります。 以下に、適格請求書等保存方式 主な概要を説明します。 1. **インボイス 発行義務**: 課税事業者 、取引に関して適格な請求書(インボイス)を発行する義務があります。インボ イスに 、発行者 名称、登録番号、取引年月日、取引 内容、税率ごと 対価 額およ 消 費税額などが記載されている必要があります。 2. **適格請求書発行事業者 登録**: インボイスを発行するために 、事業者 税務署に登録申請を行い、「適格請求書発行事業 者」として登録を受ける必要があります。登録を受けた事業者に 登録番号が交付されます。 … (略) 5. **文書 保存**: 課税事業者 、受領したインボイスを保存する義務があります。これにより、税務調査等で仕 入税額控除 適正を証明することができます。 こ 方式 導入により、消費税 適正な課税と納税が確保され、取引 透明性が向上すること が期待されています。課税事業者 、新しい制度に適切に対応するために、必要な準備を行う ことが求められます。 GPTs(Score: 4) 今回 top-k:2 実装(Score: 5) 📚 補足2: . 「適格請求書等保存方式」 概要を教えてください


Slide 33

Slide 33 text

📚 補足3: . インボイス制度が始まると課税事業者 どうなりますか?
 36 現在開いている文書にページ移動 失敗が発生しましたが、インボイス制度が始まると、課税 事業者 インボイス発行事業者となることが期待されます。これにより、販売先 事業者が仕 入税額控除を行うことができるようになり、取引が継続する可能性が高まります。仕入れを行う 際も同様に、課税事業者がインボイス発行事業者から購入を行うことによって、仕入税額控除 を行うことができ、結果として税負担が軽減されることが期待されます。ただし、インボイス制度 へ 対応に 申告や納税 手続きが必要となり、事務 負担が増加することを含めた対策が 必要になります。 課税事業者がインボイス発行事業者になるため 具体的な対応や詳細な情報について 、文 書 該当箇所を開示する必要がありますが、現在文書 閲覧に問題があるため、正確な情報 を共有することができません。文書 閲覧が可能になり次第、詳細について追ってお伝えしま す。なお、情報 確認が必要な場合 、文書ファイル 直接閲覧もご考慮ください。 インボイス制度において発行者が直面する可能性 あるデメリットとして 、以下 点が挙げら れます。 1. **管理負担 増加**:インボイス制度に準拠した適切なインボイスを発行し、記録を保持する ために 、事業者 新たなシステム 導入や既存 会計システム アップデートが必要になる 場合があります。これにより、管理 手間やコストが増加する可能性があります。 2. **登録申請 手続き**:インボイス発行事業者になるために 、税務署へ 登録申請が必 要です。こ 手続きに 時間と労力がかかることがあります。 3. **取引関係へ 影響**:インボイス発行事業者として登録しない場合、販売先が仕入税額控 除を受けられなくなるため、取引先から取引 見直しを求められる可能性があります。 インボイス 登録申請について 、制度が開始される2023年(令和5年)10月1日以前に行う必 要があります。ただし、具体的な申請期限について 、税務署から 案内や公式な情報を確認 することが重要です。事業者 、制度開始前に十分な準備を行い、スムーズに移行できるよう にする必要があります。 もし、具体的な登録申請 期限や手続きについて 詳細が必要であれ 、最寄り 税務署や 税理士など 専門家に相談することをお勧めします。 GPTs(Score: 3) 今回 top-k:2 実装(Score: 4)

Slide 34

Slide 34 text

37 🌸 まとめ
 ● G sより精度 高い AGシステム 構築を紹介しました
 ○ 具体的に 、 nstructured + G -4によるチャンク分け + ecursive etrieverを使う 
 ● 注意点
 ○ 本番運用 まだ間に合ってない。 ecursive etriever 機構を本番DBで適用できるか 
 検証が必要
 ● 今回 資料とコード 後ほどアップロードする予定です
 ○ @_mkazutakaをフォローしていただけると幸いです 


Slide 35

Slide 35 text

以上