Upgrade to Pro — share decks privately, control downloads, hide ads and more …

風土に合わせたRAG改善

yoshitakaebihara
September 20, 2024
24

 風土に合わせたRAG改善

AGI福岡第2回 登壇資料

yoshitakaebihara

September 20, 2024
Tweet

Transcript

  1. Current conditions AA : 独特な複合的商習慣 物流/貿易/卸売/生産が入り混じっている横割り構造 BB : 刻々と変化するルールと膨大な知識 しかし、webでの情報は限定的

    – close環境 鉄鉱石/石炭/自動車/原油/フェリー/etc → 船種ごとの固有知識も必要 全世界分の港レギュレーションや税制、国民性等 商品の固有名詞や呼称も膨大 知識と情報が幅広く入り乱れている業界 ↓
  2. Practice-1A Hitする知識集 ・ 固有名詞群, 略語, 経験, 勘への対応 - 業界常識の囲い込み (熟練者の心の声)

    Wireの見積依頼来た! Hoisting 4巻だ。 33.5mmは良くあるサイズ 実際の依頼内容には様々な情報が記載されています あれ?wireの構成未記載・・図面要求しよう。証明書記載は無いけど3種類必要なやつだ 最重要単語 : wire 第二優先 : Hoisting 第三優先 : 33.5mm ↓ ナレッジ構築で欲しいのは、単語の優先度や過不足
  3. 例) "UREA AUS40 SOLUTION"という商品名を、形態素解析かけると・・ “UR” + “EA”では過剰分解・・ → Mecab-pythonでの実行結果 社内熟練者の思考パターンを落とし込み、Hitするナレッジベースへ!

    → 欲しいのは “UREA” という単語 ・ ナレッジ改善 - 熟練者の思考パターンを反映したカテゴリー分け 例) 大カテゴリー : Wire / 中カテゴリー : Hoisting / 小カテゴリー : 33.5mm → ナレッジ反映 羅列ではなく、重要単語や区分からの紐付け Practice-1B Hitする知識集 ・ クエリ分解はよしなに - 流通言語を構築側が崩さない User input(業界略語)がクエリ精度高い - System promptガチガチのLLMに区切って貰いましょう
  4. Case-A) userが"Crane wire"と検索した場合、コサイン類似度では近い数値が出てしまう Case-B) userが"Hoisting"と検索した場合 bm25rankを通したReciprocal Rank Fusion(RRF)では、0 scoreにも配点されてしまう Hitしている部分はOK

    していない部分の配点が問題 ベクトル近いのは仕方ないものの・・ Practice-2A keywordがhitしない場合のフォロー ・ 類似語句へのsemantic対応 / 例) ”Hoisting wire"情報が欲しい場合
  5. ・配点手法の改善 - Reciprocal Rank Fusionに対する疑問への対応 vectorとbm25それぞれ、合計からの “獲得割合” で配点するよう修正 Keyword不発時、semanticでhit漏れを最小限にし、user視界へ入る確率を高める! 結果score

    ÷ 結果のsum rowごとに合算し、re-rank 注) bm25rankは短文等で良い精度を発揮します = 弊社風土がmatchしていないだけ Practice-2B keywordがhitしない場合のフォロー ベクトルで1次絞り込み ↓ Bm25 & rank(score)融合 Rank処理というより絞り込み
  6. Key Take Aways AA : AGI来る前も 来た後も、社内情報検索は残り続けると予想されます 継続的な対応や精度向上が求められます BB :

    user目線への寄り添いを前提とした、利便性の判断が必要です CC : 定石(vector + bm25 + RRF)で精度に悩んだら、固執せずに別手法を試しましょう 合わない手法は離れる勇気 システム側に合わせられないのはダメだ!という論調も承知していますが、 ソフトランディングを選択肢に残してあげて欲しいのです 確認/承認/責任取りはuser責務という原則も続くでしょう 皆様も最善手に辿り着けますように