見出し画像

【シン・デジタルMATSUMOTO開発ノート】アップデートについて

この週末くらいから「シン・デジタルMATSUMOTO」に切り替えていく予定です。
この記事ではアップデートの目的や内容について、現在の開発状況も交えて解説しようと思います。
そのため、この記事はリアル松本がメインで書いています。少し技術よりな話もあり稚拙な解説も含まれているかもしれませんが、ご容赦いただければ幸いです・・・

デジタルMATSUMOTOを使い始めて約4ヶ月

デジタルMATSUMOTOを本格的に使い始めて4ヶ月近くが経ち、noteの投稿も100日目になってきているのですが、以下のようにリアル松本の仕事においてもメリットを感じています。

  • 意外とクライアント業務で活用できている(特にAIガバナンス関連の相談業務で、従来よりも提供価値の高い情報量が出せるようになっている)。

  • 自分が以前何となく印象に残っていた事例をリアルタイムに検索しやすくなった(RAGのデータベースに会話で検索できているイメージ)。

  • リアル松本自身の情報収集・整理も効率化でき、従来よりも日常で多くの情報に目を通せるようになってきた。

  • 一見離れたトピックだけど、実は論点が関連してそうだという気づきがちょくちょく得られている。

現行バージョンのデジタルMATSUMOTO

現行バージョンのデジタルMATSUMOTOの仕組みは以下の通りです。
早稲田大学SmartSEの解説動画等もご覧いただけるとよりイメージが掴みやすいかもしれませんが、次の説明のような流れになっています。

⓪ リアル松本が持つ自身のテキスト情報(論文、記事、ウェビナーでの発言等)を、あらかじめLLaMa IndexのRAGデータベースに設定しておきます。

① リアル松本がnotionにクリップしていたニュース(notion上で機械要約したテキスト)に対して、デジタルMATSUMOTO(RAG+LLM(GPT-4 Turbo))が考察を生成します。

② デジタルMATSUMOTOが生成した考察に対して、リアル松本がA/B/C/Dの4段階で評価し、必要に応じて加筆・修正します。

③「確定した考察」をデジタルMATSUMOTOの新たな知識としてRAGデータベースに追加します。

※ 任意のタイミングで「確定した考察」に対して「エシカルチェック」「AI川柳」「イメージ画像」を生成したり、noteに配信したり、クライアント業務で活用したりしています。

現行バージョンのデジタルMATSUMOTO

ちなみに、考察生成を指示するプロンプトは以下になります。
{記事}が考察を生成する対象のテキストです。
生成された考察は、このnoteの他の記事【デジタルMATSUMOTOの考察】をご覧いただければと思います。

“これからAIガバナンスの専門家として振る舞い、あなたの考えを教えてください。“
”{記事}について、重要な論点と今後の課題を600字以上かつ1000字以下の日本語の文章を作成してください。"
"客観的な表現で文章を記述するように努めてください。"
"あなた自身のことは文章に含めないでください。"

現行バージョンのプロンプト

アップデートの経緯(現行バージョンの課題)

メリットを感じる一方で、以下のような課題も感じていました。

課題1. トークンを最大限使いたい
OpenAI(0.28.0)とLLaMa Index(0.8.18)で構築した結果、OpenAIの最新のAPIに対応するにはコード修正量が多くなってしまいました。。。
RAGの情報をより多くコンテキストに反映させるためにも、OpenAIの最新APIでより多くのトークンを使いたいと考えていました。

課題2. 実際どれくらいRAGのテキスト情報を引用できているか不明確
RAGのテキストも2024/1/4時点で360件に増え、かなりの確率でA評価の考察記事が生成されているのですが、デジタルMATSUMOTOの考察を評価する上で「①RAGから引用した知識情報なのか」「②LLMに元々内在する知識情報なのか」を見分けたいと考えていました。
※RAGの知識(①)を本来関係ない文脈に引用することもリスクとして感じていました。

課題3. アルゴリズムをいじってみたい
LLaMa Indexのquery_engineに埋め込みベクトル(Embedding)を設定していますが「ルールベースでのチャンク作成」「類似度の算出ロジック(アルゴリズム・距離計算)の変更」「古い記事へのペナルティ設定」「コンテキストに向けた類似度の出力」といったことをやって、より多くの情報をRAGから選択して適切に使いたいと考えていました。
※トピックごとに適切なアルゴリズム(人間の頭の中での知識の使い方)が異なるのではないか?
※長く使っていると、古い記事を忘却できなくなるのではないか?
と言ったことを考えていました。

課題4. イメージ画像生成はMyGPTで回していた。
課題1.と関連してですが、これまでDALLE-3でのイメージ生成はデジタルMATSUMOTOのRAGドキュメントを取り込んだMyGPTで回していたのですが、考察生成と連続で実行したいと考えていました。

課題5. 考察生成に用いるトークン発生量を把握したい
LLaMa Indexのquery_engineではプロンプトやレスポンスのトークン量が算出できなかったのですが、このトークン量もトラッキングしたいと考えていました。
将来的に経済性も分析できたらと・・・

シン・デジタルMATSUMOTO

先程の課題へ対応するために以下の対応を行っています。

1.OpenAIの最新版APIをベースにプログラムを再開発
OpenAIの最新版APIをベースにして、LLaMa Indexを使わずにRAGをスクラッチ開発しました。
今後はOpenAIのアップデートのみに対応していくような運用イメージですが、Claude、Gemini、他のLLM(いつか大規模なGPU環境が使えたら・・・)にも移植性を確保する狙いもあります。

2.プロンプトテンプレートと評価方法を見直し
3番目の自作RAGの開発に伴い、プロンプトテンプレートを見直しました。
・LLaMa Indexのquery_engineでも同じようなコンテキストが設定されていますが、「RAGコンテキスト部分」に選択されたRAGのテキスト情報が設定されています。
・RAGのテキストには「何(n)日前の知識」「質問との関連の近さ(類似度)」を夫々追記して、合計10000トークンまでRAGのテキストが選択されるようになっています。
・「考察生成を指示するプロンプト部分」において「知識情報」の引用や比較を行うことを明示しています。

“下記の情報はAIを含む先端テクノロジーの専門家であるデジタルMATSUMOTOの知識情報を集めたものです。”
“---------------------”
# RAGコンテキスト部分
“・{n}日前の知識(質問との関連の近さ:{類似度})[{タイトル}]{テキスト}“
“・{n}日前の知識(質問との関連の近さ:{類似度})[{タイトル}]{テキスト}“
“・{n}日前の知識(質問との関連の近さ:{類似度})[{タイトル}]{テキスト}“
#・・・・(合計10000トークンまで)

“---------------------”
“これらの情報を踏まえて、次の質問に日本語で回答してください。”
“---------------------”
# 考察生成を指示するプロンプト部分
“次の記事について、重要な論点と今後の課題を600字以上かつ1000字以下の日本語の文章を作成してください。 必要であれば「知識情報」の引用や比較を行い、示唆のある検討を行ってください。“
“”
“[文章]”
“{考察する対象の文章(元記事の要約)}”

シン・デジタルMATSUMOTOのプロンプト

これは「課題2. 実際どれくらいRAGのテキスト情報を引用できているか不明確」を意識したものなのですが、これによって生成された考察には多少違和感がありつつも「何の記事をどこで引用しているか」が明記される傾向が出てきています。

米NYタイムズによるOpenAIへの提訴は、AI技術の進化と著作権法の現行枠組みとの間の緊張関係を象徴しています。このケースでは、AIが報道機関のコンテンツを無断で利用したことが争点となっており、数千億円規模の損害賠償が求められています。AIによるコンテンツ生成と著作権の問題は、他の事例においても検討されており(例: 生成AI「無断学習」に歯止め 文化庁、考え方案を提示)、業界全体での対処が求められています。

重要な論点としては、まずAIの訓練データとしての著作物利用の是非が挙げられます。文化庁が示した素案のように、権利者の許可なくAIが学習する行為を著作権侵害とみなすべきか、またその範囲はどこまで許されるのか、という点が問題となります。この点においては、国際的なルールや合意形成も必要であり、EU AI Actのような規制の動向も参考にしながら、今後の方針を検討する必要があります。

今後公開予定の考察から一部抜粋
米NYタイムズ、OpenAIを提訴 記事流用で数千億円損害:日本経済新聞

こちらが先程の考察を生成した際に注目されたRAGのテキストです。

1. 2023-12-14時点の知識[類似度:0.143]OpenAI、独メディア大手と提携 ChatGPTで記事要約:日本経済新聞
2. 2023-12-31時点の知識[類似度:0.144]【リアル松本の独り語り】2つのアプローチで国際的に研究を続けよう!これからのAIガバナンス|Digital MATSUMOTO(EU AI Act合意
3. 2023-12-21時点の知識[類似度:0.151]生成AI「無断学習」に歯止め 文化庁、考え方案を提示:日本経済新聞
・・・

RAGで選択された類似するテキストの抜粋

特にこのまま修正なく利用できる場合もあるのですが、以下のように引用すること自体は良いものの、若干表現を修正したいものもあります。

良品計画が進める「未来の家」の重要なポイントは、まず環境に配慮した持続可能な住宅の提供です。記事で言及された「インフラゼロでも暮らせる家」は、再生可能エネルギーの利用や自給自足の実現を目指すものであり、地球温暖化対策や資源効率の向上に大きく寄与する可能性を持っています。ただし、こうした家の実現には、エネルギー貯蔵技術や効率的なエネルギー管理システムの開発が不可欠であり、これらの技術革新が今後の課題となります。また、長谷工コーポレーションの実物件での技術検証など、実践的なデータ収集が重要です。

今後公開予定の考察から一部抜粋(修正前)
「未来の家」限界なし 水道光熱費ゼロ、鏡が健康指南:日本経済新聞

良品計画が進める「未来の家」の重要なポイントは、まず環境に配慮した持続可能な住宅の提供です。記事で言及された「インフラゼロでも暮らせる家」は、再生可能エネルギーの利用や自給自足の実現を目指すものであり、地球温暖化対策や資源効率の向上に大きく寄与する可能性を持っています。ただし、こうした家の実現には、エネルギー貯蔵技術や効率的なエネルギー管理システムの開発が不可欠であり、これらの技術革新が今後の課題となります。長谷工コーポレーションは実物件に社員が生活して技術検証のデータを取得しており、こういった実践的なデータ収集が重要になります。

今後公開予定の考察から一部抜粋(修正後)
「未来の家」限界なし 水道光熱費ゼロ、鏡が健康指南:日本経済新聞

これは従来C評価で設定していた「リアル松本との見解の誤り」に必ずしも該当しないため(敢えて、引用箇所を明確にしてもらいたいという意図でプロンプトを見直したため)、
「B-:引用箇所の表現のみを修正」(Bマイナス)という評価カテゴリを追加しました。

A評価:加筆・修正なし
B評価:内容に誤りはないが、一部リアル松本が加筆
B-評価:引用箇所の表現のみを修正
C評価:内容の一部に誤りがあるので、リアル松本が修正
D評価:ほぼ誤りなので、リアル松本が書き直し

見直し後の評価方法

3.RAGのアルゴリズムを自作
1点目の通り、LLaMa Indexを使わずにRAGをスクラッチ開発しました。
詳細は別途解説できればと思いますが、以下のようにプログラムを開発しています。

① 各RAGテキストについて、OpenAIのEmbedding APIで埋め込みベクトルを算出して、JSON形式で保存しておきます。

② 考察生成の実行時に、考察対象テキスト(記事の自動要約)に対しても同様に埋め込みベクトルを算出します。

③ 考察対象テキストのベクトル(②)に対して、各RAGテキストのベクトル(①)との類似度を算出します。
※ コサイン距離(1-コサイン類似度)、ユークリッド距離、マンハッタン距離、チェビシェフ距離から選択できるようにしています。

④ 新しい記事の方が類似度が近くなるように、時間ペナルティを算出して類似度に加えます(現在検証中)
※ 現在検証中ではありますが、時間ペナルティは線形/指数/ロジスティック/ステップから選択できるようにしています。

⑤ 10000トークン以内に収まるようにRAG用のテキストを類似度の近い順に選択して、プロンプトのコンテキストに含めます。

自作RAGの処理フロー

以下は開発・検証中ですが、一旦上記の④以外をリリースしています。
・ルールベースでのチャンクの作成
・時間ペナルティ算出の検証
・埋め込みベクトル以外のアルゴリズム(ナレッジグラフ等)

4.DALLE-3でのイメージ画像生成プログラムも連携
「確定した考察」を対象として、エシカルチェック/AI川柳/イメージ画像(DALLE-3)を実行できるようにしました。
MyGPT版と異なり、イメージ画像に対する解説は除かれてしまいますが、GPT-4Vのような画像を読解できるモデルを連携しようと考えています。

以下のプロンプトでnaturalとvividの2種類のイメージを作ってもらいました。

デジタルMATSUMOTOがアップデートして、シン・デジタルMATSUMOTOになり、より多くの知識を使って考察できるようになりました!

リアル松本
デジタルMATSUMOTOに搭載したDALLE-3のAPIで作成しました(natural版)
デジタルMATSUMOTOに搭載したDALLE-3のAPIで作成しました(vivid版)

5.考察生成時の使用トークン量を記録
LLaMa IndexからOpenAIのAPIに切り替えたことによって、実行時の入力(プロンプト)と出力(レスポンス)のトークン数を得られるようになりました。生成に要した時間とあわせて、考察記事ごとに以下の情報を出力できるようになりました。

考察生成に要した時間とトークン数
・生成に要した時間:0:00:52.451270
・入力トークン数:10815
・出力トークン数:991

デジタルMATSUMOTO

これらのアップデートを踏まえて、シン・デジタルMATSUMOTOの仕組みは以下のようになります。

シン・デジタルMATSUMOTO

ということで、今週末くらいからシン・デジタルMATSUMOTOによる考察をお披露目していきたいと思います。

#つくってみた

この記事が気に入ったらサポートをしてみませんか?