6
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?

はじめに

LLMを使ったアプリケーションを作る際、外部知識を利用する方法として
RAG(Retrieval-Augmented Generation) がよく使われます。

RAGは非常に有用なアーキテクチャですが、
CAG(Cache-Augmented Generation) というアプローチも議論されるようになってきました。

名前が似ているため混同しやすいのですが、両者は「知識の取り扱い方」が異なります。
この記事では、RAGとCAGの違いを整理しながら、それぞれが向いているケースについてまとめてみます。

RAG(Retrieval-Augmented Generation)とは

RAGは 外部データを検索してLLMに渡すアーキテクチャです。
LLMは学習データに含まれる知識しか持たないため、「社内データ」などはそのままでは扱えません。

そこでRAGでは、質問に関連する文書を検索してLLMに渡します。
処理の流れは次のようになります。

RAGの特徴

  • 大量のドキュメントを扱える
  • 知識更新が容易
  • ベクトル検索インフラが必要
  • 検索レイテンシが発生する

CAG(Cache-Augmented Generation)とは

CAGは 必要な知識を事前にキャッシュしておくアプローチです。
RAGでは質問ごとに検索を行いますが、CAGでは検索を行いません。
必要な知識を あらかじめLLMのコンテキストとして用意しておきます。

処理の流れは次のようになります。

CAGの特徴

  • 検索処理が不要
  • レイテンシが小さい
  • システム構成がシンプル
  • コンテキストサイズの制限を受ける

RAGとCAGの違い

項目 RAG CAG
知識取得 検索 キャッシュ
処理タイミング 推論時 事前処理
レイテンシ 検索分の遅延あり 低い
データ量 大規模データ向き 小〜中規模向き
システム構成 検索インフラが必要 シンプル

CAGが登場した背景

CAGが注目される背景には、LLMの コンテキスト長の拡大があります。
以前のLLMではコンテキストが数千トークン程度だったため、大量の文書を直接入れることはできませんでした。

そのため検索 → 必要な文書だけ取得というRAGが必要でした。

しかし最近の一部のモデルでは、最大で数百万トークン規模の長いコンテキストを扱えるものも登場しています。

この場合、

最初から知識を入れてしまえば検索は不要では?

という発想が成り立ちます。

これがCAGの基本的な考え方です。

まとめ

RAGとCAGはどちらもLLMの知識を拡張するためのアプローチですが、知識の扱い方が異なります。

  • RAG
    外部知識を検索して取得する

  • CAG
    知識を事前にキャッシュしておく

LLMアプリケーションを設計する際には、「データ量」「更新頻度」「レイテンシ」などを考慮して、
RAGとCAGを使い分けることが重要です。

参考

Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks
https://arxiv.org/abs/2005.11401

Don't Do RAG: When Cache-Augmented Generation is All You Need for
Knowledge Tasks
https://arxiv.org/abs/2412.15605

6
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
6
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?