😺

最近人気のRAGを理解する ― ベクトル解析とは

に公開

RAGとは?

RAG(Retrieval-Augmented Generation)は、検索(Retrieval)と生成(Generation)を組み合わせた仕組みです。
従来の生成AIは「学習済みモデルの中の知識」に依存していましたが、RAGは外部のデータベースに保存された情報を検索し、それを参照して回答を生成
します。

特に最近は、ベクトル検索(Vector Search)を使ったRAGが主流です。

文章や文書を「ベクトル(数値の並び)」に変換し、意味的に近い情報を高速に検索できるようにします。

ベクトル化とは?

では、その「ベクトルに変換する」とは具体的にどういうことでしょうか?

コンピュータは文字そのものを理解できないため、テキストを数値に変換する必要があります。

たとえば「Python」という単語を [0.12, -0.85, 0.33, …] のような数百次元の数値の並びに変換する。この処理を**ベクトル化(embedding)**と呼びます。

ベクトル化のポイントは、

  • 意味が近い単語や文 → 似たベクトルになる
  • 意味が遠い単語や文 → 遠いベクトルになる

たとえば「犬」と「猫」は近いベクトルに、「犬」と「自動車」は遠いベクトルになります。

この性質を利用して「ユーザーの質問と似ている文章」を探し出せるのです。

なぜRAGが利用されるのか?

  • 最新情報を扱える

    学習時点の知識に縛られず、外部データを取り込める。

  • ドメイン特化が容易

    法律、医療、社内マニュアルなどの専門知識を追加可能。

  • 検索+生成の組み合わせで精度向上

    「回答の根拠」を検索で取りに行けるため、幻覚(hallucination)を減らせる。

つまり、RAGは生成AIを“調べながら答えるAI”にする方法です。
そのため、参照データの精度次第では簡単に欲しい情報を得ることができるため、人気となっています。

技術的な課題

ただし、RAGを実装すればすぐに高品質な回答が出るわけではありません。(そんな上手い話はない笑)

代表的な課題には以下があります。

  • ベクトル化の精度

    文書の分割方法や埋め込みモデル次第で検索結果が変わる。

  • コンテキストの取り込み限界

    大規模モデルに入力できるトークン数は限られており、検索結果のすべてを渡せない。

  • 検索精度のトレードオフ

    「網羅的に拾いたい」 vs 「本当に関連するものだけに絞りたい」のバランス。

  • 更新コスト

    外部データを定期的にベクトル化・インデックス更新する必要がある。

RAGを実装するときは、上記課題を意識して状況にあったパラメーターを設定するのがよいでしょう。

問題提起 ― 「実装できるけど仕組みがわからない」

最近、弊社マイクロベースのインターンに参加する学生の中には、教材やサンプルコードを見ながらRAGを「とりあえず動かした」経験はある方が増えてきました。

しかし、その多くが

  • なぜベクトル検索を使うのか?
  • どの段階で検索と生成が結合しているのか?
  • 検索の質と生成の質はどう影響し合うのか?

といった原理的な理解にまで到達していないのが現状です。

「動かすだけ」ではなく、「なぜRAGが必要で、どんな制約があるのか」を理解することが、今後の実践的なAI開発には欠かせません。

Discussion