0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PR: フリーランスコネクト株式会社
フリーランスコネクト採用ページ

RAGに入れる資料を「下ごしらえ」したら、誤答率が30%→13%に下がった(Bedrock Knowledge Bases)

0
Posted at

はじめに

業務で「社内の資料を検索して、その内容だけを根拠に答える」RAGのチャットボットを作っています。

Bedrock Knowledge Bases は、資料を S3 に置けば、分割(チャンク分け)から埋め込みまで全部やってくれます。
なので「資料はそのまま置けばいいのでは?」と思っていたのですが、実際にどれくらい差が出るのか気になったので、
同じ資料を「そのまま」入れた場合と、こちらで「下ごしらえ」してから入れた場合で比べてみました。

結果、記事型の資料では誤答率が30%から13%まで下がりました。
一方で、PDFでは思ったほど差が出ない、という結果にもなったので、そのあたりも含めて残しておきます。

TL;DR

  • 国税庁タックスアンサー(757記事)で比べると、回答の誤答率は そのまま 30% → 下ごしらえ 13%
  • 効いた下ごしらえは、資料の構造(節)で細かく分けて、各まとまりの頭に記事名を付けること
    • そのままだと、まとまりが記事の途中で切れて「何の記事の話か」が分からなくなり、関係ない記事が上位に来たり、別の窓口の電話番号を答えたりする
  • 言い換えの辞書は、作った質問では効くけど、知らない質問ではほぼ効かない。実際の問い合わせで外れた言葉を足していく運用で効くもの
  • PDF(Q&A集・規程)では、下ごしらえ版が勝たなかった。 PDFの読み取りが優秀で、見出しがまとまりに残っていた為
  • 残った誤りの多くは「正しい資料を渡しているのに、モデルが読み違える」もの。ここは資料の工夫では減らせない

環境

  • Amazon Bedrock Knowledge Bases(東京リージョン)
    • 保存先:Aurora PostgreSQL(pgvector)
    • 埋め込み:Titan Text Embeddings V2
    • 検索:ハイブリッド検索で上位8件を回答に渡す
  • 回答を作るモデル:Amazon Nova 2 Lite
  • 実施:2026年10月

テストデータと質問

資料 量
国税庁 タックスアンサー(よくある税の質問) 757記事・本文 約117万字
国税庁 インボイス制度に関するQ&A(PDF) 250ページ・153問
厚生労働省 モデル就業規則(PDF) 94ページ・69条

質問は、タックスアンサー用に67問、PDF用に35問を作りました。
記事の見出しをそのまま使わず、利用者が実際に聞きそうな言い方にしています(例:「従業員にまかないを出したら給料として課税されますか」)。

タックスアンサーの67問は、下ごしらえを調整するときに見た37問と、調整では一切見ていない確認用の30問に分けています。
調整用の質問に合わせ込んだだけの改善になっていないかを、確認用で見る為です。

2通りの入れ方

そのまま版

  • 1記事=1ファイルにして、ファイルの先頭に記事番号とタイトル、その後に本文を並べて S3 に置く
  • 分割は Knowledge Bases の既定(固定長300トークン・2割重ね)に任せる(なので、記事番号とタイトルが入るのは最初のまとまりだけ)

「とりあえず資料を置いた」状態です。

下ごしらえ版

  • 記事の節(概要・計算方法 など)の切れ目で分けて、400字ほどのまとまりにする
  • 各まとまりの頭に、記事番号・タイトル・対象税目・何年何月現在を付ける
  • まとまりの最後に、言い換えの辞書(記事の言葉 → ふだんの言い方)から「関連する言葉」を足す
  • Knowledge Bases 側の分割は「なし」にして、こちらで分けたまとまりをそのまま使う

なお、どちらの版も「関連リンク」「お問い合わせ先」など本文ではない節は入れていません。中身(本文)は同じで、違うのは分け方と、頭に付ける見出しと、辞書だけです。

辞書はこんな形のテキストファイルです。

言い換えの辞書(抜粋)
# 記事に出てくる言葉: ふだんの言い方, …
食事を支給: まかない, 従業員の食事, 社員食堂
新たに事業を始めたとき: 開業届, お店を始めた, 開店, 開業
納税義務の免除: 免税事業者, 消費税を払わなくていい

実物で比べてみる

「従業員にまかないを出したら給料として課税されますか」で、実際に検索で取れたまとまりを並べてみます。

そのまま版

1位はこれでした。

そのまま版・1位
■ 金銭を無利息または低い利息で貸し付けたとき 役員または使用人に無利息または低い利息で金銭を貸し付けた場合に、次の(1)から(3)までのいずれかに該当する場合には、(以下略)

**関係のない記事(お金の貸し付け)**が1位に来ています。
2位に正解の記事が来ているのですが、中身はこうです。

そのまま版・2位
(食事の価額)-(役員や使用人が負担している金額) この要件を満たしていなければ、食事の価額から役員や使用人の負担している金額を控除した残額が給与として課税されます。 なお、上記(2)の「7,500円」以下であるかどうかの判定は、(以下略)

300トークンで機械的に切られているので、記事の途中から始まっています。
何の記事なのか(食事の支給)も、肝心の1つ目の条件(半分以上を負担)も入っていません。

下ごしらえ版

下ごしらえ版・1位
国税庁タックスアンサー No.2594 食事を支給したとき(対象税目:源泉所得税)[令和8年4月1日現在法令等]
【概要】
役員や使用人に支給する食事は、次の2つの要件をどちらも満たしていれば、給与として課税されません。
(1)役員や使用人が食事の価額の半分以上を負担していること。
(2)次の金額が1か月当たり7,500円(消費税および地方消費税の額を除きます。)以下であること。
(食事の価額)-(役員や使用人が負担している金額)
(中略)
関連する言葉:まかない、従業員の食事、社員食堂

正解の記事が1位で、記事名・条件・言い換えが1つのまとまりに全部入っています。
モデルからすると、この1つを読めば答えられる状態です。

結果1:検索

正解の記事が何位に来たかで比べました。

  • MRR:正解の順位の逆数の平均(1位なら1、2位なら0.5…)。1に近いほど上位に来ている
  • 8位以内:回答を作るモデルに渡す8件の中に、正解が入っていた割合
入れ方 まとまりの数 調整用 MRR/8位以内 確認用 MRR/8位以内 全体の MRR
そのまま版 5,939 0.584/80% 0.761/93% 0.666
下ごしらえ版・900字 1,806 0.664/83% 0.744/90% 0.701
下ごしらえ版・400字 3,625 0.606/89% 0.804/97% 0.697
下ごしらえ版・400字+辞書 3,625 0.691/91% 0.801/97% 0.742
  • 8位以内が、80%/93% から 91%/97% に上がりました。回答を作るモデルに正解が渡らない「取りこぼし」が減っています
  • 最初は900字で分けていたのですが、長い記事だと、知りたい段落がほかの節と一緒に埋もれて、短い関連記事に負けていました。細かく分けて、各まとまりに記事名を付けるほうが良かったです
  • 辞書は、調整用の質問では効いていますが、確認用ではほぼ変わりません(確認用の質問の言葉は、辞書に入っていない為)。辞書は「作っておけば効く」ものではなく、実際の問い合わせで外れた言葉を足していく運用で効くものだと思います

結果2:回答(ここで差が出た)

検索の数字だけだと「ちょっと良くなった」くらいなのですが、回答で比べると差がはっきり出ました。

67問に回答させて、正解の記事の本文と照らし合わせて、1問ずつ人が判定しています(AIには判定させていません)。

入れ方 正しい回答 担当者へ回した 誤りを含む回答
そのまま版 41(61%) 6 20(30%)
下ごしらえ版(400字+辞書) 51(76%) 7 9(13%)

「担当者へ回した」は、資料から答えられないと判断して、人に引き継いだものです(誤りには数えていません)。

そのまま版の誤りの例

  • 開業届の期限を「1か月以内」と答える(改正前の古い情報。資料には今の期限が書いてある)
  • まかないは給与にならない、と答える(月7,500円などの条件が抜けている)
  • 領収書の収入印紙が必要な金額や、法人税率の数字を間違える
  • 実在しない特例や耐用年数を作る
  • 自社の電話番号を聞かれて、資料の中にあった別の窓口の電話番号を答える

最後のものが一番怖くて、記事の途中で切れたまとまりに電話番号だけが残っていて、それが何の窓口の番号なのか分からないまま答えていました。
回答が資料の文と一致しているので、「資料に書いてあることだけで答えているか」のチェックもすり抜けます。
まとまりの頭に記事名を付けるのは、こういう取り違えを防ぐ為でもあります。

下ごしらえ版で残った誤り

残った9件のうち 7件は、正しい記事を渡しているのにモデルが読み違えたものでした。

  • 一括償却資産と少額減価償却資産を混同する
  • 協同組合等の法人税率を、表の別の行(普通法人)から拾う
  • 副業の「所得」20万円を「収入」20万円と書く

このあたりは資料をいくら工夫しても減らせないので、モデルを変えるしかありません。モデルを変えて比べた結果は、こちらの記事にまとめています。

結果3:PDFでは下ごしらえ版が勝たなかった

PDF(インボイスQ&A・モデル就業規則)でも同じことをやってみました。

  • そのまま版:PDFをそのまま置き、Knowledge Bases の既定で読み取り・分割
  • 下ごしらえ版:Q&Aは「問」ごと、規程は「条」ごとに分けて、各まとまりの頭に「資料名・章・問/条・見出し」(Q&Aは質問文も)を付ける
入れ方 正しい 担当者へ 誤りを含む
そのまま版 26 5 4
下ごしらえ版 27 1 7

誤りは下ごしらえ版のほうが多い、という結果になりました。

  • インボイスQ&Aの誤りは両方4件ずつで、どちらも「正しい資料を渡しているのに読み違える」型でした
  • 下ごしらえ版で増えた3件は、モデル就業規則のひな形の空欄(「試用期間は か月」「賃金は毎月 日に締め切り」)に、モデルが数字を作って答えたものです。そのまま版は、同じ質問に一般論で答えるか、担当者へ回していました
  • Knowledge Bases の PDF の読み取りがかなり優秀で、300トークンで切られていても「問N」の見出しがまとまりの中に残っていました。記事型の資料(タックスアンサー)ほど、そのまま版が迷子にならなかったようです

ただし、そのまま版の回答の約3分の1には、ページ番号(「- 171 -」)などの資料の切れ端がそのまま出ていました。
誤りには数えていませんが、チャットに出すと見た目が崩れます。PDFの下ごしらえは、精度よりも「見た目」と「担当者へ回す回数が減る」ほうに効いた感じです。

下ごしらえで効いたこと・効かなかったこと

手 効果
各まとまりの頭に記事名(資料名・章・見出し)を付ける 効いた。 取り違え(別の窓口の電話番号など)が減る
資料の構造(節・問・条)で分ける 効いた。ただし大きすぎるとダメ(900字より400字)
言い換えの辞書 作った質問では効く。知らない質問ではほぼ効かない。運用で育てるもの
質問をAIで書き換えてから検索する 効かなかった(後述)

おまけ:質問をAIで書き換えても効かなかった

検索の前に、質問を「資料に書いてありそうな言葉」へ AI(Nova 2 Lite)で書き換えるのも試しました。
最初にテストデータに使っていた労働基準法で測ったところ、

調整用 MRR 確認用 MRR
辞書なし・書き換えなし 0.681 0.718
辞書なし・書き換えあり 0.737 0.737
辞書あり・書き換えなし 0.835 0.764
辞書あり・書き換えあり 0.820 0.763

辞書が無いときに少し効くだけで、辞書と合わせても上乗せはありませんでした。
書き換えの質も安定せず、「給料の前借り」を「年次有給休暇の取得方法」に書き換える、などもあったので採用していません。

おまけ:法令で効いた小技

労働基準法のような法令だと、次の小技も効きました。

  • 漢数字の条文(「四十五時間」)に、算用数字の表記(45時間)を書き添える
  • 短い質問の末尾の「は?」「って?」を外してから検索する(「過労死ラインは?」が、文字列検索で「過労死ラインは」という1語として扱われていた)

ハマったところ

Aurora に保存すると、既定の検索だと順番が逆になる

保存先を Aurora PostgreSQL(pgvector)にすると、既定のセマンティック検索では、関連度の高いものが最後に来る並びで返ってきました(スコアが「距離」で返ってくる為)。
ハイブリッド検索(overrideSearchType: 'HYBRID')にすると、ちゃんと関連度順になります。

データソースが読む場所は1つしか指定出来ない

「そのまま版」と「下ごしらえ版」を同じナレッジベースに入れて、メタデータで切り替えて比べようとしたのですが、データソースが読み込む S3 の場所(プレフィックス)は1つしか指定出来ませんでした。
バケットを分けて、データソースを2つ作っています。

メタデータに空の値があると、ファイルごと取り込まれない

.metadata.json に空文字の値が入っていると、そのファイルが取り込みから外れていました。気づきにくいので注意です。
空の項目は書かないようにしました。

おわりに

「資料は S3 に置けば動く」のは確かなのですが、記事型の資料だと、下ごしらえの有無で誤答率が倍以上違いました。
特に効いたのは「各まとまりの頭に、何の資料のどこなのかを書く」という地味な一手です。

逆に、PDFのように見出しがしっかりした資料は、そのままでも案外いけました。
資料の形によって効き方が違うので、自分の資料で一度「そのまま」と「下ごしらえ」を比べてみるのがおすすめです。

出典

テストデータには、以下の資料を加工して使用しました(節・問・条ごとに分割し、見出しを付けています)。

国税庁・厚生労働省のコンテンツは「公共データ利用規約(第1.0版)」に準拠した利用条件の下で利用しています。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?