はじめに
前回の記事「RAGの精度、どう改善する?AIアシスタント「たまちゃん」の改善事例 vol.3 」では、たまちゃんの精度を向上させるために行った取り組みの一部をご紹介しました。
今回は、以下の施策について、その目的、実施内容、そして結果をご紹介します。
-
施策「表をMarkdown形式にしてRAGに取り込む」
-
施策「OpenAI o3-miniに切り替え」

RAG(検索拡張生成)の精度改善にご興味のある方の参考になれば幸いです。
施策「表をMarkdown形式にしてRAGに取り込む」
目的
たまちゃんではRAGという仕組みを採用していますが、現在、社内ドキュメントは単純な文字列に変換してRAGに取り込んでいます。しかし、この取り込み方法では問題が発生します。
例えば、ドキュメント内に表が含まれている場合、表の中の文字列だけが抽出されることで、項目の対応関係や行・列といった表独自の構造が損なわれた状態でRAGに取り込まれてしまいます。その結果、生成AIがドキュメントを元に回答を生成する時、表の内容を正しく理解できず、誤った回答を生成する恐れがあります。
そこで今回の施策では、図2のように、ドキュメント内に含まれる表は、Markdown形式に変換してからRAGに取り込むことで、生成AIがドキュメント内の表を正しく認識して回答を生成できるか検証しました。

表をMarkdown形式にして生成AIに渡すメリット
図3のように、表をMarkdown形式で生成AIに渡すと、生成AIは表やカラムの情報を正確に把握できるようになり、表の中のデータ同士の関係を正しく理解しやすくなり、正確な回答が得られると、一般的に考えられています。

一方で、最新の高性能な生成AIでは、表をMarkdown形式ではなく、単純な文字列として渡した場合でも、表やカラムの構造を上手く推測し、正しい回答を生成できる場合もあります。
RAGに取り込むドキュメント内のコンテンツを変換
今回の施策では、生成AIが「表」を正しく認識できるように、表をMarkdown形式に変換してRAGに取り込む方法を検証します。この変換には、OCR(光学文字認識)や表検出アルゴリズムを活用できます。
また、似たような変換処理として「図」をRAGに取り込む場合にも、図を文字列形式に変換してから取り込む方法があります。この場合、OCRを使って図の中の文字列を抽出したり、マルチモーダル生成AIを使って図からキャプション(説明文)を生成することで、文字列形式に変換します。
これらの変換の流れを図4に示します。

(ドキュメントの例として引用したサイト:「Azure AI Search での AI エンリッチメント」)
このように、ドキュメント内の様々なコンテンツを生成AIが理解しやすい形式に変換してからRAGに取り込むことで、検索精度や回答精度の向上が期待できます。
活用可能なサービス・OSS
ドキュメント内の表をMarkdown形式に変換する時に、活用可能なサービスやOSS(オープンソースソフトウェア)を表1にまとめました。
# | サービスまたはOSSの名称 | 概要 | ライセンス | 対応しているファイル拡張子 | 1ページあたりの処理速度 | 表の抽出のされ方 |
---|---|---|---|---|---|---|
1 | Azure AI Document Intelligence |
|
- |
|
約3秒 | <table>タグ等を含むHTML形式で抽出
|
2 | MarkItDown |
|
MIT |
|
約0.2秒 | |(パイプ)を含むMarkdown形式で抽出 |
3 | pdfplumber |
|
|
所定のオブジェクト形式で抽出 | ||
4 | tabula |
|
-(未計測) | |||
5 | PyMuPDF |
|
AGPL |
今回は、Azure AI Document Intelligenceに加えて、変換の実行基盤であるAzure Functionsに導入が容易なMarkItDown、pdfplumberを使って検証しました。MarkItDownについては、表の認識にAzure AI Document Intelligenceを使うこともできますが、今回はMarkItDown独自のグリッド検出アルゴリズムを使って検証することにしました。
検証結果
たまちゃんで取り扱っているドキュメントについて、表をMarkdown形式に変換してからRAGに取り込んだ時の精度は、表2のようになりました。
# | 使用したサービスまたはOSS | たまちゃんで取り扱っているドキュメント全量の処理に掛かる料金 | 評価データに対する正解率 (評価データ:45件) | 備考 |
---|---|---|---|---|
(現行)1 | - | 0円 | 87% | - |
2 |
|
約3000円 | 87% |
|
3 |
|
0円 | 87% |
|
表をMarkdown形式にしてRAGに取り込むことで、生成AIが表の内容を正しく認識し、従来は回答できなかったいくつかの質問に対応できるようになりました。
一方で、Markdown形式にしたことでドキュメントの文字数が変わり、ドキュメントを一定のサイズで分割(チャンク化)した際の区切り位置が変化することで、一部のドキュメントが検索でヒットしなくなってしまい、うまく回答できなかったケースもありました。
結果的に、たまちゃんにおいて、「表を文字列としてRAGに取り込む方法」と「Markdown形式に変換してRAGに取り込む方法」とでは、最終的な精度の違いは無いことが分かりました。
現行と比べて最終的な精度の違いはありませんが、表をMarkdown形式にしたことで生成AIが上手く回答できたケースもあったため、pdfやdocx, xlsxの変換にMarkItDown、pdfの変換にはpdfplumberを使う「検証No3」を導入することに決めました。
施策「OpenAI o3-miniに切り替え」
目的
たまちゃんではRAGの仕組みを採用していますが、ユーザーからの質問に対して「検索クエリ/タグ生成」と「回答生成」の2つのタスクで、GPT-4oという生成AIを利用しています。
「検索クエリ/タグ生成」では、ユーザーの質問から、ドキュメント検索用のクエリと検索時に重みづけとして使うタグを生成しています。また、「回答生成」では、検索で見つかったドキュメントから、ユーザーの質問に対する回答を生成しています。
2025年1月には、OpenAIから「OpenAI o3-mini」という新しい生成AIのモデルが発表されました。このモデルは、推論時間と価格を抑えながらも、複雑な課題に取り組む際に「より深く考える」ことができるのが特徴です。また、OpenAI o3-miniは、Azure OpenAI Serviceでも利用可能になりました。
このような背景を踏まえ、図5のように、たまちゃんの「検索クエリ/タグ生成」と「回答生成」において、GPT-4oの代わりにOpenAI o3-miniに切り替えることで、回答精度が向上するか検証しました。

GPTシリーズとoシリーズのモデルの違い
OpenAIは、大きく分けて「GPTシリーズ(汎用モデル)」と「oシリーズ(推論モデル)」という2種類のモデルを提供しています。それぞれの特徴を表3にまとめました。今回施策で検証するOpenAI o3-miniは、このうちoシリーズに属するモデルになります。
GPTシリーズ | oシリーズ | |
---|---|---|
特徴 |
|
|
Azure OpenAI Serviceで 利用可能なモデル |
|
|
また、GPT-4oとOpenAI o3-miniをAzure OpenAI Serviceで利用する場合に、指定可能なパラメータの違いを表4にまとめました。GPT-4oは代表的なパラメータのみを記載しています。
# | モデル | パラメータ名 | パラメータの概要 |
---|---|---|---|
1 | GPT-4o | temperature |
|
top_p |
|
||
max_completion_tokens | モデルからの返答に関して、トークン数の最大値を制御 | ||
2 | OpenAI o3-mini | max_completion_tokens | モデル内部の推論とモデルからの返答に関して、トークン数の最大値を制御 |
補足情報ですが、oシリーズのモデルをOpenAIから直接利用する場合は「reasoning_effort」(推論の深さをlow、medium、highから指定)というパラメータが指定可能です。しかし、現時点では、Azure OpenAI Serviceで、このパラメータを指定できるのはOpenAI o1のみです。今後、OpenAI o3-miniでも指定可能になると予想されます。
利用料金の違い
Azure OpenAI ServiceでGPT-4oとOpenAI o3-miniを利用する際の料金を表5に示します。
(2025年4月時点の「Azure OpenAI Serviceの利用料金ページ」から抜粋)
# | モデル | デプロイ時の設定 | 利用料金の種類 | 100万トークンあたりの利用料金 (キャッシュは考慮しない) |
---|---|---|---|---|
1 | GPT-4o | 2024-05-13 Global | 入力 | 754.95円 |
出力 | 2,264.85円 | |||
2 | OpenAI o3-mini | 2025-01-31 Global | 入力 | 166.09円 |
出力 (内部の推論で消費したトークンの利用料金も含む) |
664.36円 |
OpenAI o3-miniは、GPT-4oと比べて入力の利用料金が約1/5、出力の利用料金が約1/3と、料金を大きく抑えることができます。ただし、OpenAI o3-miniは、出力にかかる料金として「内部での推論に消費したトークン分」も加算される点に注意が必要です。
検証結果(検索クエリ/タグ生成)
たまちゃんの「検索クエリ/タグ生成」において、GPT-4oとOpenAI o3-miniをそれぞれ使った場合の検証結果を表6にまとめました。
# | 質問文 | モデル | 生成された検索クエリ | 生成されたタグ |
---|---|---|---|---|
1 | 年休取得奨励日を教えください | GPT-4o | 年休 取得 奨励日 教えて |
人事関連のドキュメント |
OpenAI o3-mini | 年休 取得 奨励日 | 人事関連のドキュメント | ||
2 | 価格承認関連規定の主管はどこですか? | GPT-4o | 価格承認関連規定 主管 部署 |
規定集のドキュメント |
OpenAI o3-mini | 価格承認 関連規定 主管 部署 |
規定集のドキュメント |
それぞれのモデルで生成される検索クエリとタグの内容に大きな違いはありませんでした。一方で、生成に掛かる時間については、GPT-4oが約2秒であるのに対し、OpenAI o3-miniは約8秒と、GPT-4oよりも4倍ほど時間が掛かってしまいました。
以上のことから、「検索クエリ/タグ生成」では、OpenAI o3-miniに切り替えず、引き続きGPT-4oを使った方が良いと判断しました。
検証結果(回答生成)
たまちゃんの「回答生成」において、GPT-4oとOpenAI o3-miniをそれぞれ使った場合の結果を表7にまとめました。
# | モデル | 生成に掛かった時間 | 利用料金 | 評価データに対する正解率 (評価データ:45件) |
---|---|---|---|---|
1(現行) | GPT-4o | 約4秒 | 5.62円 | 87% |
2 | OpenAI o3-mini | 約7秒 | 1.96円 | 91% |
この結果から、「回答生成」においては、GPT-4oではなくOpenAI o3-miniを使うと、生成にかかる時間は長くなりますが、利用料金を大幅に削減しつつ、正解率を高められることが分かりました。
そして、たまちゃんでは「多少時間がかかっても、正確に質問に答えられることを重視する」というプロジェクトの方針から、「回答生成」に使用するモデルを、GPT-4oからOpenAI o3-miniに切り替えることに決めました。
おわりに
今回の記事で紹介した2つの施策の結果を表8にまとめました。
施策 | 課題の種類 | 評価データに対する正解率 | 回答精度の向上度合 | 導入コスト | 補足 |
---|---|---|---|---|---|
(実施前) | ー | 53% | ー | ー | 評価データに対する正解率が約50%になるように評価データを準備 |
改善事例 vol.1 | ー | 63% (+10) |
ー | ー | 適用した施策
|
改善事例vol.2 | ー | 83% (+20) |
ー | ー | 適用した施策
|
改善事例vol.3 | ー | 71% (-12) |
ー | ー | 適用した施策
|
バグ修正 | ー | 87% (+16) |
ー | ー |
|
表をMarkdown形式にしてRAGに取り込む | 回答生成の課題 | 87% (+0) |
低 | 中 |
|
OpenAI o3-miniに切り替え | 回答生成の課題 | 91% (+4) |
中 | 低 |
|
今回の記事では、「表をMarkdown形式にしてRAGに取り込む」と「OpenAI o3-miniに切り替え」という2つの施策についてご紹介しました。
「表をMarkdown形式にしてRAGに取り込む」では、現行に比べて最終的な正解率は変わらないものの、表をMarkdown形式にしたことで生成AIが上手く回答できたケースもあったため、導入を決定しました。
「OpenAI o3-miniに切り替え」では、OpenAI o3-miniを用いることで、回答速度は若干遅くなりますが、正解率が向上することが分かりました。それに伴い、OpenAI o3-miniの導入を決定しました。
精度改善に関する主な施策は一旦ここで区切りとし、今後は実運用を行いながら、新たな課題や改善ポイントが見つかった際には、随時取り組んでいく予定です。
最後までお読みいただき、誠にありがとうございました。
執筆者紹介

連載コラム:エクサの生成AIチャレンジ日記
本コラムでは、エクサ社内における生成AIの活用に向けた技術的な取り組みと、実際の業務適用事例をご紹介いたします。生成AIによる業務効率化や新たな価値創造のヒントとなれば幸いです。
関連コラム
関連ソリューション
関連事例
お問い合わせ
CONTACT
Webからのお問い合わせ
エクサの最新情報と
セミナー案内を
お届けします
