地方エンジニアの学習日記

興味ある技術の雑なメモだったりを書いてくブログ。たまに日記とガジェット紹介。

【LLM】RAGってなんだ?ってなったので調べた

最近よくきくRAGがなんなのかよくわかっていないので調べたメモ

www.hicareer.jp

最初聞いた時はこっちを思い浮かべたがググっても全く出てこないので取り残されている


目次

RAGとは

生成AIの文脈での「RAG」は、Retrieval-Augmented Generation(検索強化生成)を指します。これは、生成AIモデルが外部データベースや知識ベースから情報を「検索」し、その情報を基に「生成」するアプローチです。この手法を使うことで、モデルがより正確かつ最新の情報を活用した文章生成が可能になります。

RAGの仕組み

  • 検索フェーズ(Retrieval)
    • モデルは、ユーザーの質問や要求に基づき、関連性のある文書や情報をデータベースや知識ベースから検索します。これにより、モデルは外部の豊富な情報源にアクセスし、単なる事前訓練された知識以上の内容を得られるようになります。
  • 生成フェーズ(Generation)
    • 検索された情報を活用し、それを基にユーザーの質問に答えたり、新しいテキストを生成します。生成されたテキストは、検索したデータを考慮しているため、より正確で最新の情報に基づくものになります。

RAGの特徴

  • 検索(Retrieval)と生成(Generation)の統合
    • RAGは、外部の知識ベースやデータベースから情報を「検索」し、その結果を基にテキストを「生成」するプロセスを組み合わせています。このため、モデルが自身の訓練データにない新しい情報にもアクセスでき、最新の知識を活用してテキスト生成を行えます。
  • 高精度な生成
    • 従来の生成モデル(GPTなど)は事前に学習した情報だけに基づいて回答しますが、RAGでは検索された外部データを基にテキストを生成するため、より具体的で正確な情報に基づいた応答を生成できることが特徴です。特に、最新の情報や専門的な知識が必要な場合に有効です。
  • 柔軟性
    • RAGは、複数の情報源にアクセスしてデータを取得できるため、異なるドメインやトピックに柔軟に対応可能です。例えば、技術文書、ニュース、製品情報など、さまざまなタイプのデータベースを利用することで、多様なユーザーのニーズに応じた回答を提供できます。
  • 動的な知識利用
    • RAGは、事前に学習した静的な知識に加えて、検索結果を動的に活用します。これにより、モデルが常に最新の情報を利用でき、時間の経過とともに古くなる情報に依存しない生成が可能です。特に変化の激しい領域(技術、ニュースなど)で有効です。
  • パフォーマンスとリアルタイム性
    • 検索フェーズを含むため、外部データの取得に若干の時間がかかることがありますが、その代わりに正確性や関連性の高い情報を生成できます。応答時間を少し犠牲にする代わりに、より信頼性の高い結果を得るというトレードオフがあります。
  • 多様な情報源の利用
    • RAGは、事前に用意された特定の知識ベースやデータベースだけでなく、ウェブ全体の情報、カスタマイズされた企業内データ、または特定の専門的データベースを利用することも可能です。これにより、利用するデータの幅広さが大きな強みとなります。
  • モデルのサイズ依存性の軽減
    • 従来の大規模生成モデルは、巨大な訓練データを必要とするため、トレーニングコストが高い傾向があります。しかし、RAGでは必要に応じて外部データベースから情報を検索してくるため、モデル自体が極端に大きくなくても十分に高性能な結果を生成できます。

staffing.archetyp.jp

メリデメ

RAGの利点

  • 正確性の向上
    • モデルの事前訓練データだけに依存せず、外部の最新情報にアクセスすることで、事実誤認のリスクを軽減できます。
  • 柔軟性
    • 様々なデータソースから情報を取得できるため、特定分野の質問にも対応しやすくなります。
  • 知識の最新化
    • 生成AIは通常、訓練時点までの情報しか持ちませんが、RAGを使うことで、リアルタイムに最新の情報を反映した生成が可能です。

RAGの欠点

  • 検索精度に依存
    • RAGは検索された情報に基づいてテキストを生成しますが、検索フェーズで不正確または不適切な情報が選ばれた場合、生成された結果も正確性を欠く可能性があります。つまり、検索アルゴリズムの性能や、データベース内の情報の質に強く依存します。
  • 速度の遅さ
    • 外部データベースへの検索や取得プロセスが追加されるため、純粋な生成モデルよりも応答速度が遅くなることがあります。検索に時間がかかると、特にリアルタイム性が求められるアプリケーションではパフォーマンスの問題が生じることがあります。
  • 情報の信頼性
    • 検索した情報の信頼性が問題になることがあります。RAGモデルが使用する外部データベースや知識ベースの情報が正確であるとは限りません。もし不正確な情報を取得した場合、生成されるテキストも誤ったものになる可能性があります。特に、外部ソースに誤情報や古い情報が含まれている場合にはリスクが高くなります。
  • メモリと計算資源の負荷
    • RAGモデルは、生成フェーズと検索フェーズの両方を実行する必要があるため、通常の生成モデルよりもメモリや計算資源を多く必要とします。特に大規模なデータベースに対する検索と複雑な生成を行う場合、計算コストが高くなりがちです。
  • データソースの依存
    • RAGモデルは外部データベースに依存しているため、そのデータソースが利用できなくなる、更新されない、または内容が不十分な場合には、生成の質が著しく低下する可能性があります。データソースの選定や管理が適切に行われていないと、モデルの性能に悪影響を及ぼします。

実際の応用

  • チャットボット
    • ユーザーの質問に対して、外部データベースから情報を検索し、その情報を基に回答を生成する。
  • ドキュメント作成支援
    • 例えば技術文書やリサーチレポートの作成時、関連する文献や資料を検索し、その内容を反映した文章生成が行える。

kuroco.app

RAGの実装

qiita.com

ただ動かすだけならサッとできそう。精度みたいなのを気にした途端に難しくなりそうという感じ。

qiita.com

Amazon Bedrock

business.ntt-east.co.jp

AWS が提供する完全マネージド型の生成AIサービスです。開発者が簡単に大規模な生成AIモデルを利用してアプリケーションを構築、トレーニング、デプロイできるように設計されています。特に、自然言語処理NLP)、テキスト生成、画像生成などの生成AIモデルを活用するためのプラットフォームです。

ai-market.jp

ファインチューニングとの違い

leapwell.co.jp

つらつらと書こうと思っていたがこの例えばすごくしっくりきた。マニュアルを渡しただけの人とOJTとかで教育した人。どっちが良いかはトレードオフが多くあるようでまだまだ研究段階らしい。

その他の用語とか

  • LLM
    • Large Language Modelの略
    • 大規模なデータセットでトレーニングされた自然言語処理NLP)モデルのことを指す
    • 特徴
    • ローカルLLM
      • ユーザーが自身のローカル環境(オンプレミスや個人のコンピュータ、データセンターなど)で実行することを指す
      • データプライバシーの向上やコストの削減あたりに繋がってくる
  • LangChain
  • Embedding
    • データを数値ベクトルに変換する手法
    • 自然言語処理NLP)や機械学習において、テキストや画像、音声などの非数値データを数値形式に変換するために使われる
  • ベクトルデータベース
    • データを数値ベクトルとして保存し、そのベクトル間の距離や類似性に基づいてデータを効率的に検索・管理するためのデータベース
  • 学習
    • 教師あり学習
      • 機械学習の一種で、入力データ(特徴)とそれに対応する正解ラベル(出力)を使ってモデルを学習させる手法
      • 学習時に正解ラベルが与えられるため、モデルは入力と出力の関係を学習し、新しいデータが与えられた際にその関係を基に予測や分類を行う
    • 教師なし学習
      • ラベルのないデータを使って、データ内のパターンや構造を見つけ出す機械学習の手法
      • データセットには正解ラベル(ターゲット)が与えられず、モデルはデータの潜在的な規則性や関係性を発見することを目的とする
  • ニューラルネットワーク
    • 生物の脳神経回路を模倣した計算モデルで、機械学習の一種
    • 複雑なパターンの認識やデータの予測に優れており、近年ではディープラーニングの基礎として、多くの分野で活用されている

参考