🥷

RAGが苦手な「ぬるっとした日本語」と戦う

に公開

本記事では、RAGの性能を高めるための「DualCSE」という手法について、ざっくり理解します。

株式会社ナレッジセンスは、生成AIやRAGを使ったプロダクトを、エンタープライズ企業向けに開発しているスタートアップです。

この記事は何

この記事は、日本語特有の「あいまいな婉曲表現」(=ぬるっとした日本語)を含む文章でもRAGの精度を上げるための手法「DualCSE」の論文[1]について、日本語で簡単にまとめたものです。
https://arxiv.org/abs/2510.09293

今回も「そもそもRAGとは?」については、知っている前提で進みます。確認する場合は、こちらの記事もご参考下さい。

本題

ざっくりサマリー

RAGが苦手な「ぬるっとした日本語」と戦う

DualCSEは、RAGの「ベクトル検索の弱点」に立ち向かうための手法です。北陸先端科学技術大学院大学と東芝の研究者らによって2025年10月に提案されました。

通常のRAGでは、RAGの対象となるソース文書を、一つのベクトルデータに変換した上で、検索するのが常識です。

しかしこうしたベクトル検索だと、「文章の表面上の雰囲気と、その文章の真意が違う場合」に、上手く検索できません。

そこで DualCSEという手法では、1つの文章が持つ「2つの側面」を別々のベクトルで表現します。これにより、文字通りの意味でも、暗示的な意味でも、どちらでも文書検索ができるRAGを実現しています。

問題意識

RAGは便利ですが、「ぬるっとした表現」が苦手です。

例えば、「この案件、スコープを見直すいい機会かもしれません。」という文章は、通常のRAG(ベクトル検索)では難しいです。どうしてこれが難しいかというと、表面上の文章の雰囲気と、実際に意味していることが異なっているからです。

(↑表面の雰囲気に着目すると「いい機会」と、なんだかポジティブに聞こえますが、実際には「納期ヤバいからスコープ減らさないとまずい」という、ネガティブな意味が正しいです。)

手法

この手法では、1つの文章から性質の異なる2種類のベクトルを生成するモデルを事前に作成します。
RAGが苦手な「ぬるっとした日本語」と戦う

【事前にやっておくこと】

  1. 1つの文章から2種類のベクトルを出力するモデルを構築
    • INLIというデータセット(1つの文章に対して「文字通りの意味」と「隠れた意味」をそれぞれ格納したデータセット)を活用
    • 土台となるモデル(BERTなど)を、対照学習でファインチューニング
    • (※関連する意味のベクトルは近づけ、関連しないものは引き離す形でモデルを学習)

【ユーザーが質問を入力して来たとき】

  1. 質問を2種類のベクトルに変換

    • 準備で作ったモデルを使い、ユーザーの質問を「文字通りの意味を表すベクトル」と「隠れた意味を表すベクトル」の2つに変換
  2. ベクトル検索を2通りで実施

    • 参考ソースのデータベースを、1のそれぞれのベクトルで検索
    • これにより、言葉の雰囲気が違い文書と、ユーザーの隠れた意図が近い文書の両方を検索可能
    • (※当然ながら、データベース内の文書も事前に2通りのベクトルに変換しておく必要あり)
  3. 最終回答の生成

    • 普通のRAGと同じ

この手法のキモは、1つの文から2つの意味ベクトルを生成する点です。「言葉通りの意味」と「裏の意味」を別のベクトルで区別することで、人間が使う曖昧な表現でも、裏の意図を汲み取った検索が可能になる、という発想です。

成果

RAGが苦手な「ぬるっとした日本語」と戦う
(↑Exp. は文章を文字通りに読んでOKなタスク、Imp. は文章の裏にあるニュアンスを読み取る必要があるタスク。Geminiは一番性能高いですが、埋め込みモデルに利用されることはないため、参考数値。)

  • 文章の含意認識タスク(RTE)において、従来手法(SimCSE)を上回る性能
  • 特に暗黙的含意の認識精度(Imp.の部分)が大幅に向上
  • 文章がどれだけ「裏の意味を含んでいるか」をスコア化するタスク(EIS)においても、高い精度

まとめ

弊社では普段、エンタープライズ企業向けにRAGサービスを提供しています。最近注目されているのは、商談やチャットデータのような、人間と人間のコミュニケーションデータです。

社内規定やマニュアルのようなデータは、RAGの鉄板ネタで、簡単にRAG精度が出ます。しかし一方で、Salesforceにあるような商談データや、Teams/Slackのようなチャットデータは、現状のRAGだとかなり苦手で、最近の重要課題です。

こうした「意味が明示されないまま終わる」ような、整理されていないデータでもRAG精度が出るように埋め込みモデルを操作する手法は、今後も登場しそうです。

ぜひ、みなさまが業務でRAGシステムを構築する際も、選択肢として参考にしていただければ幸いです。今後も、RAGの回答精度を上げるような工夫や研究について、記事にしていこうと思います。我々が開発しているサービスはこちら

脚注
  1. "One Sentence, Two Embeddings: Contrastive Learning of Explicit and Implicit Semantic Representations", Oda et al. ↩︎

ナレッジセンス - 生成AIとRAGの実装戦略・技術ブログ

Discussion