地平線まで行ってくる。

記録あるいは忘備録。時には検討事項。

ColabでAgentic Context Engineeringの論文を参考にRAGをやってみる。

bwgift.hatenadiary.jp

 

続きです。出来たColabコードを利用して、参考にRAGっぽく利用できるようにしてみました。LLMはollamaで動作させたgemma3:4bを利用します。フィードバックによってコンテキストと、PDFをチャンクしたデータをRAGとして放り込みます。

 

RAGに用いたPDF:
[1706.03762] Attention Is All You Need

- [2408.09869] Docling Technical Report

多少経路の違う論文を用いることで、多少の混乱を持ち込むのが狙いです。

 

できたコード:

github.com

 

Incremental Delta Updatesのおかげで、フィードバックで得られたコンテキストに明らかにノイズがあっても、崩壊することなく回答が生成されていました。単純にフィードバックによりプロンプト全体を最適化しようとすると、トピックがシフトしたり、元のクエリーとかけ離れたクエリーを生成して崩壊したりすることがありました。しかしながら、今回の手法では、崩壊の原因となる異常なフィードバックの影響を抑えつつ、プロンプトというよりコンテキスト全体をデザインし、LLMにて生成させるイメージです。ローカルLLMでここまで出来るのであれば、本格的に利用してみたいと思いました。

 

プロンプト(というかコンテキスト)の例です。進化的コンテキストに、それまでで得られた差分的なコンテキストが入っています。

 

例1:

コンテキスト(プロンプト)

あなたはAIアシスタントです。以下の2種類のコンテキストを使用して、クエリを解決するための詳細な推論軌跡とクエリに対する回答を生成してください。応答は日本語で行ってください。

### クエリ
"TransformerとDoclingの関係性は?"

### 進化的コンテキスト (過去の対話からの教訓)
- Doclingの技術的な方向性を効果的に伝えるためには、各OCRエンジンの特性を比較する表を作成し、Doclingにとって重要な要素(精度、速度、言語サポート、コストなど)を定量的に比較することが有効である。
- Doclingの主要機能であるレイアウト解析と表構造認識に特化している点を、競合ツールとの比較を通じて強調することが重要である。これらの特徴が、他のPDF変換ツールと比較してどのような優位性をもたらすのかを明確にすることで、Doclingの競争優位性を際立たせる。
- Transformerの説明は、技術的な正確さを維持しているものの、実用的な意味合いや応用分野が不足しているため、より具体的な例や応用例を盛り込むことで、読者の理解を深めることができる。特に、Transformerがなぜ特定のタスクで高い性能を発揮するのか(例:翻訳タスクにおける長距離依存性の捉えやすさ)を説明することで、その技術的な優位性を明確に示す必要がある。
- Transformerの応用分野を多角的に提示することで、その可能性を広げ、読者の興味を喚起することができる。翻訳タスクだけでなく、文章生成、質問応答、要約など、さまざまなタスクにおけるTransformerの役割を具体的に示すことが望ましい。
- OCRエンジンの選択は、Doclingの低リソース環境での高速処理という強みを最大限に活かす方向性で行われるべきである。DoclingがモバイルデバイスでのOCR処理を想定している場合、EasyOCRのようなリソース消費が大きいOCRエンジンは、Doclingの目標と矛盾する可能性があるため、選定理由を明確に示す必要がある。

### 外部コンテキスト (ドキュメントからの情報)

(論文からのチャンクデータにつき割愛)

 

### 指示
- ステップバイステップの推論軌跡とクエリに対する最終的な回答を生成してください。

狙い通り結構グタグタに入っています。

 

得られた回答:

クエリ: “TransformerとDoclingの関係性は?”

推論軌跡:

Doclingの概要理解: 提供されたドキュメントによると、Doclingはレイアウト解析と表構造認識に特化した強力な文書変換ツールです。これは、主にIBM data prep kitやTensorFlow/tensor2tensorなどのリソースを活用して開発されています。特に、テーブル構造認識の機能がDoclingの重要な特徴です。

Transformerの概要理解: Transformerは、Doclingの基盤となっているAIモデルです。Transformerは再帰ニューラルネットワーク(RNN)や畳み込みニューラルネットワーク(CNN)に依存せず、注意メカニズムのみを用いてグローバルな依存関係をモデル化します。特に、長いシーケンスを効率的に処理するために、注意メカニズムを用いたグローバルな依存関係のモデル化が重要であると説明されています。

DoclingにおけるTransformerの利用: 重要な点として、TransformerはDoclingのレイアウト解析と表構造認識において、その能力を最大限に活用しています。Doclingが、長いシーケンスを効率的に処理する必要性があることを考慮すると、Transformerの注意メカニズムが、Doclingの精度と速度を向上させる上で重要な役割を果たしていると考えられます。

DoclingとTransformerの関係性の整理: DoclingはTransformerという高性能なAIモデルを基盤としており、Doclingの主要機能であるレイアウト解析と表構造認識において、その性能を最大限に活用することで、Doclingの強力な文書変換ツールとしての役割を果たしています。 Transformerの優れた性能をDoclingが提供し、Doclingはより高度な文書変換を実現しています。

最終回答:

Transformerは、Doclingの基盤となるAIモデルであり、Doclingの主要機能であるレイアウト解析と表構造認識においてその性能を最大限に活用しています。特に、Transformerの注意メカニズムは、Doclingの精度と速度を向上させる上で重要な役割を果たしており、Doclingを強力な文書変換ツールとしています。 Doclingは、Transformerの基盤と、Doclingが提供するレイアウト解析と表構造認識機能が組み合わさることで、高い性能を発揮します。

最終回答は悪くはありませんが、DoclingでTransformerを使っているという言いきりは強すぎます。

 

生例2:

コンテキスト(プロンプト)

あなたはAIアシスタントです。以下の2種類のコンテキストを使用して、クエリを解決するための詳細な推論軌跡とクエリに対する回答を生成してください。応答は日本語で行ってください。

### クエリ
"Transformerの技術の特徴を利点をまとめてください。"

### 進化的コンテキスト (過去の対話からの教訓)
- Transformerの説明は、技術的な正確さを維持しているものの、実用的な意味合いや応用分野が不足しているため、より具体的な例や応用例を盛り込むことで、読者の理解を深めることができる。特に、Transformerがなぜ特定のタスクで高い性能を発揮するのか(例:翻訳タスクにおける長距離依存性の捉えやすさ)を説明することで、その技術的な優位性を明確に示す必要がある。
- 説明における ‘なぜ?’ の問いに対する答えを明確にすることで、技術的な説明の信頼性と説得力を高めることができる。Transformerが従来のモデルよりも優れている理由(例:並列処理の効率性)を詳細に説明することが重要。
- Transformerの応用分野を多角的に提示することで、その可能性を広げ、読者の興味を喚起することができる。翻訳タスクだけでなく、文章生成、質問応答、要約など、さまざまなタスクにおけるTransformerの役割を具体的に示すことが望ましい。
- Transformerの並列処理効率の実現方法について、GPU上で並列にAttentionの計算を実行する様子などを具体的に記述することで、読者の理解を深めることができる。設計思想の具体的な実現方法を示すことで、説得力が増す。
- DoclingとTransformerの特性を明確に比較することが重要である。Doclingはレイアウト解析と表構造認識に特化している一方で、Transformerは汎用的な自然言語処理モデルであり、Doclingの特定のニーズに合わせて調整されているという点を強調することで、二者間の関係性をより明確に表現できる。

### 外部コンテキスト (ドキュメントからの情報)

(論文からのチャンクデータにつき割愛)

 

### 指示
- ステップバイステップの推論軌跡とクエリに対する最終的な回答を生成してください。

進化的コンテキストには若干ノイズが混ざっています。

 

クエリ: "Transformerの技術の特徴を利点をまとめてください。"

ステップバイステップの推論軌跡:

初期評価: クエリの要求を理解する。Transformerの技術的特徴と、その利点をまとめる、ということを明確にする。
外部コンテキストの参照: 提供されたドキュメント(“Attention Is All You Need”)を詳しく確認する。
ドキュメントは、Transformerを従来のモデル(RecurrenceとConvolutionsを用いたモデル)と比較している。
Transformerの主な特徴として、完全なAttentionメカニズムの使用、再帰構造と畳み込み層の排除を挙げている。
Transformerが、翻訳タスクにおいて既存のモデルよりも高い品質、並列処理の効率性、そしてトレーニング時間の短縮を実現していることを強調している。
具体的な数値(WMT 2014 English-to-Germanにおける28.4 BLEU、WMT 2014 English-to-Frenchにおける41.8 BLEU)が、Transformerの性能を裏付けている。
レーニング時間(8 P100 GPUでの12時間)が従来のモデルよりも大幅に短いことも重要な利点として示されている。
内部コンテキストの統合: 過去の対話のコンテキスト(Transformerの説明の精度不足、’なぜ?’の問いへの回答の重要性、応用分野の多様性、並列処理効率の実現方法など)を考慮し、より包括的な回答を構築する。
Transformerがなぜ高い性能を発揮するのか(長距離依存性の捉えやすさ)を説明することが重要であるという過去の指摘に基づき、Attentionメカニズムが入力と出力間のグローバルな依存関係を直接的にモデル化できる点を強調する。
並列処理の効率性をGPU上でAttentionの計算が並列に実行されることによって実現されていることを詳細に記述する。
翻訳タスクだけでなく、文章生成、質問応答、要約など、様々なタスクにおけるTransformerの応用分野を示すことで、その可能性を広げる。
回答の構成:
Transformerの主な技術特徴を提示する(Attentionメカニズムのみの使用、再帰構造と畳み込み層の排除)。
各特徴の利点(高い性能、並列処理の効率性、トレーニング時間の短縮、汎用性など)を具体的に説明する。
性能を裏付ける数値や、並列処理の仕組み、応用分野を盛り込むことで、回答の説得力を高める。
最終的な回答:

Transformerは、従来の翻訳モデル(再帰構造や畳み込み層を用いるモデル)と比較して、革新的な技術的特徴を持ち合わせています。主な特徴は以下の通りです。

Attentionメカニズムのみの使用: Transformerは、再帰構造や畳み込み層を使用せず、完全なAttentionメカニズムのみを用いて構築されています。これにより、入力と出力間のグローバルな依存関係を直接的にモデル化することが可能となり、長距離の依存関係を捉える性能が高まります。
並列処理の効率性: GPU上でAttentionの計算が並列に実行されるため、並列処理の効率性が非常に高いです。これにより、従来のモデルと比較して、学習時間や推論時間を大幅に短縮できます。
高い性能: WMT 2014 English-to-German翻訳タスクでは28.4 BLEU、WMT 2014 English-to-French翻訳タスクでは41.8 BLEUという、既存の最先端モデルを上回る翻訳品質を実現しています。
多様な応用分野: 翻訳タスクだけでなく、文章生成、質問応答、要約など、様々な自然言語処理タスクに適用可能です。
汎用性: Transformerは、単一のモデルアーキテクチャで様々なタスクに対応できる汎用的なモデルです。
これらの特徴により、Transformerは自然言語処理の分野において、非常に高い性能と効率性を実現し、幅広い応用が期待される革新的な技術と言えます。

ノイズは大きく影響せず、クエリー対して、ちゃんとした回答が得られていますよね。チャンクした文章による情報の断片化を補うような効果もありそうです。