🎲

「実務で後一歩使えない」を解決するLLM・RAG ~文脈を付加して検索精度を上げる~

2024/05/08に公開

Nishika DSの髙山です。
今回も「実務で後一歩使えない」シリーズで、「実務で後一歩使えない」を解決するLLM・RAG ~PDFの表を崩さず理解する~の連載になります。

実際にLLM・RAGを使ったシステムを構築した際に「なかなか適切なドキュメントをひっかけてくれない」という悩みはつきものです。どのような場合にドキュメントの検索が難しいのか、課題とその解決策を紹介します。

【実務での悩み】個別のページ・シート・スライドに関する質問に関するドキュメントが検索できない

生成AI周りのアプリケーション開発のよく使用されるライブラリLangchainで用意されているものを使用すると、PowerPoint/PDFであればページ単位、Excelであればシート単位などでベクトル化することが多いです。
※ファイル全体をベクトル化することもできますが、LLMによっては入力トークン数上限に抵触したり、APIのコスト観点でも節約し情報のみを入力することが望ましいです。

こうした単位でベクトル化するとRAGで回答する際に意図した回答を得られないケースがあります。
具体例として東京都の「文章生成AI利活用ガイドライン」(68ページのPDFファイル)を使用してみてみます。

ページ単位でOpenAIのtext-embedding-3-smallのモデルを使用してベクトル化した上で、P21の内容に基づいて回答することを期待して、以下の質問をGPT-4(gpt-4-preview-0125)してみますが、期待した結果が返ってきません。

生成AI利用について質問をした結果が次のとおりです。

質問:生成AIの利用に向いているものと向いていないものを列挙してください
回答:このドキュメントには、生成AIの利用に向いているものや向いていないものについての具体的な列挙は記載されていません。そのため、利用に向いているものや向いていないものを列挙することはできません。ドキュメントは主に文章生成AIの概要、活用可能性、リスク、そして政府や関連機関による動向やガイドラインに関する情報を提供していますが、具体的な利用シナリオや例には言及していません。

検索結果を確認すると、P4(1章文章生成AIについて),P40(生成AIをめぐる動向),P7(都の取り組みの方向性)が上位に来ており、生成AIと見出しを打っているページが取得されていてP21(有効な活用分野)については検索できていません。

P21には生成AIという単語が見出しとしてはなく、ページの内容だけでは生成AIの活用について向いているものと向いていないものを示しているということは判別するのが難しいです。
ナイーブにベクトル化した際にはファイル全体の文脈の情報がかけてしまい、それを前提として記載されている各ページの内容を検索できないケースがあります。

【解決手段】ベクトル化する前に個別のページやシートにファイル全体の要約を付与する

今回はPowerPoint/PDFなのでページのテキストの前に要約情報を付与することでファイル全体の文脈を保管することを考えます。
Excelについても同様にシート単位でベクトル化する際にファイル全体の要約を各シートの内容の前に付与することで解決できる場合があります。

まずは以下のプロンプトでファイル全体の要約を作成します。

プロンプト

次のテキストはPDFの資料です。
テキストをガイダンスに従って要約してください。
ガイダンス:
- 資料に詳しくない人が雰囲気を読んでも理解できるように、トピックとなる単語を含める
- 要約結果は検索の対象となる。そのため、固有名詞などを重視する
- 多くとも50字程度に収めること。

テキスト:
{すべてのページの先頭200文字を連結した内容}

要約内容

東京都デジタルサービス局が作成した「文章生成AI利活用ガイドライン Version 2.0」を紹介。AIの活用法やルールを解説。

次にその要約内容を各ページのテキスト内容の先頭に付与してベクトル化します。

ファイル内容:
東京都デジタルサービス局が作成した「文章生成AI利活用ガイドライン Version 2.0」を紹介。AIの活用法やルールを解説。
ページ内容:
{個別のページのテキストの内容}

要約を付与してベクトル化し直して再度質問をしてみると、P21の内容に沿って回答をすることができています。

質問:生成AIの利用に向いているものと向いていないものを列挙してください
回答:生成AIの利用に向いているものとしては、文書作成の補助(要約、言い換え、翻訳、文案作成)、アイデア出し(考えの整理、事業企画におけるペルソナ分析、デジタルツールの活用案提示)、ローコード等の生成(マクロ、VBA等の生成)が挙げられます。これらは行政での利用検討プロジェクトチームにより、具体的な活用分野として分類されています。\n\n一方、生成AIの利用に向いていないものとしては、「検索(最新情報、正確性が必要な情報 等)」や「数学的な計算 等」が挙げられています。これらは生成AIが提供する情報の正確性や最新性に依存するタスクであり、生成AIの現在の技術では対応が難しいとされています。\n\n以上の情報は、「文章生成AI利活用ガイドライン Version 2.0」からの抜粋に基づいています。

検索結果を確認すると、P21(有効な活用分野)が1位に来ており、2位がP39(発展を続ける生成AI)、3位がP5(文章生成AIの特徴)の順となっていました。

まとめ

Excel, PowerPoint, PDFなどドキュメントをナイーブにベクトル化すると、シートやページといった単位でベクトル化する際にファイル全体の文脈情報が欠落しRAGがうまくいかないケースがあります。そうした際にはファイル全体の要約を付与することを1つの解決手段として紹介しました。
こうしたファイルドキュメントの他にもNotion, Confluence, ファイルサーバーの階層情報などメタデータを与えることが有効な場合があります。

注意点としては、要約をどのように付与するかはチューニングが必要な点になります。
今回は要約を50字程度で作成して、ページの内容と連結して1つのベクトルを作成してみますが、別でベクトルを作成して重み付けして平均を取ったりとベクトル作成についてはさまざまな手法が考えれらます。
今回検証してみて感じたことではありますが、あまり要約の情報量が多すぎると、個別のページ固有の内容が要約部分に含まれすぎてしまい、詳細ページがひっかかりにくくなります。

Nishikaについて

Nishikaは2019年に創業、「テクノロジーですべての人が誇りを持てる社会の実現」をビジョンに掲げ、「テクノロジーを、普段テクノロジーからは縁の遠い人にとっても当たり前の存在としていき、皆の仕事の付加価値・業務効率を向上させることに貢献したい」と考え、活動しています。
AIプロダクト事業/AIコンサルティング・開発事業/AI人材事業を手掛け、AIコンサルティング・開発事業では「生成AIを使うと何が嬉しいのか、通り一遍ではない使い方を知りたい」という段階のお客様から、伴走してご支援するアプローチを強みとしています。

https://info.nishika.com/

We're hiring!

Nishikaテックチームでは、「テクノロジーを、普段テクノロジーからは縁の遠い人にとっても当たり前の存在としていく」を目指し、音声AIプロダクトの開発・生成AIを活用した課題解決ソリューションの構築を行なっています。
興味をお持ちいただけた方は、以下リンクからご応募お待ちしています。インターンも募集しております!
https://nishika0507.notion.site/Careers-at-Nishika-25c33efd5f5f43fe99018c8a16ea4444

Nishika Tech Blog

Discussion