RAGとは
2020年に発表された「Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks」では、事前学習済みパラメトリックメモリ(事前学習済みLLM)に非パラメトリックメモリ(ナレッジ)を用いてfine-tuningを行い、特定知識への適用を行っていました。現代では、LLMが進化し、プロンプトへ知識を追加するだけである程度特定知識へのアクセスを実現するため、多くのRAGシステムでは高度な検索後の知識をプロンプトへ追加することで、ドメイン知識の回答を生成している。
論文要旨の日本語訳
私たちは、言語生成のための retrieval-augmented generation (RAG) - 事前学習済みパラメトリックメモリと非パラメトリックメモリを組み合わせたモデル - 向けの汎用的な fine-tuning の手法を探求しました。私たちは、パラメトリックメモリが事前学習済みseq2seqモデル、非パラメトリックメモリが事前学習済みニューラル retrieverでアクセスされるWikipediaの密ベクトルインデックスであるRAGモデルを導入しました。
現代RAGの一般的な流れ
- ベクトルデータベースの構築
チャンク分割とEmbeddingモデルによるエンコード - ユーザープロンプトの入力
Embeddingモデルによるエンコード - ベクトルデータベースとの類似度計算
- 高度な検索エンジンによるフィルタリング
- 検索結果をプロンプトへ追加
プロンプトエンジニアリングで参照知識を指定 - 回答生成
https://arxiv.org/pdf/2312.10997v5
Amazon Bedrock Knowledge BasesのRAG作成手順
https://aws.amazon.com/jp/blogs/news/knowledge-bases-for-amazon-bedrock-rag-patent/
- Bedrockコンソール画面を開く
- 左メニューのナレッジベースをクリックする
- ナレッジベースの詳細を入力する
- データソースを選択する
- チャンク分け方法を選択する
- 画像やテーブル情報を読み取るため、LLMを使用するか選択する
- 埋め込みモデルを選択する
- ベクトルデータベースの設定を行う
利用料金
個々のサービスでお金がかかる
- Amazon Bedrock
最上位Claude 3.5 Sonnetで、1000トークンあたり入力0.003ドル、出力0.015ドル
月1000回プロンプトを入力するとだいたい数ドル程度 - Amazon OpenSearch Serverless
OpenSearch Compute Units (OCU)
1 OCUで6GBのRAM、対応するvCPU、GP3ストレージ。
1OCUで1時間あたり0.334ドル
一か月あたり240ドル
参考文献