RAGとは
RAG(Retrieval-Augmented Generation)は、自然言語処理(NLP)の分野で注目されている技術の一つです。RAGは、情報検索(Retrieval)と生成(Generation)を組み合わせたアプローチで、ユーザーのクエリに対してより正確かつ詳細な回答を提供することを目的としています。
AzureでのRAG構成
情報抽出 & インデックス作成
OCR処理
Azure Document Intelligenceを使用して、PDFやOfficeファイルなどからテキストを抽出します。
一般的なドキュメント分析には、prebuilt-layoutモデルを推奨します。理由としては、テーブル情報の取得、文書構造の識別、Markdownへの変換、図の検出などが可能になるためです。
モデル | テキスト抽出 | 段落 | 段落役割 | 選択マーク | テーブル | キーと値ペア |
---|---|---|---|---|---|---|
prebuilt-read | 〇 | 〇 | ||||
prebuilt-layout | 〇 | 〇 | 〇 | 〇 | 〇 | |
prebuilt-document* | 〇 | 〇 | 〇 | 〇 | 〇 | 〇 |
参照:ドキュメント処理モデル
※最新のプレビューバージョンでは、prebuilt-documentが廃止され、prebuilt-layoutに統合されました。
チャンク化
抽出されたテキストを意味のある単位に分割し、後続のベクトル化処理に備えます。
チャンキング方法について、RAGでの5つのチャンキング戦略を参照してください。
- 固定サイズ分割:テキストを一定の文字数で分割します。内容や構造は考慮しません
- 再帰的分割:一連の区切り文字を使用して、テキストを階層的に分割します。初期の分割が望ましいサイズのブロックを生成しない場合、異なる区切り文字を使用して再帰的に分割します
- ドキュメントベースの分割:ドキュメントの固有の構造に基づいて分割します。Markdown、Pythonコード、表、画像など、異なる形式のドキュメントに対応した分割方法があります
- セマンティック分割:テキストの意味を考慮して分割します。意味的に関連するブロックを一緒に保持します
- エージェント分割:大規模言語モデル (LLM) を使用して、コンテキストに基づいてブロックの内容とサイズを決定します。初期のブロックを生成し、その後、LLMベースのエージェントがブロックの調整を行います
ベクトル化
Azure OpenAIのEmbeddingモデルを利用して、テキストデータをベクトル化します。
text-embedding-3-largeは、多言語対応や複雑なタスクで最高の精度を誇るため、精度向上を最優先する場合に最適なモデルです。
コストについて、text-embedding-3-smallはtext-embedding-ada-002の約0.2倍で、text-embedding-3-largeはtext-embedding-ada-002の約1.3倍です。
モデル | MIRACL* | MTEB* | 次元数 |
---|---|---|---|
text-embedding-ada-002 | 31.4 | 61.0 | 1536 |
text-embedding-3-small | 44.0 | 62.3 | 1536 |
text-embedding-3-large | 54.9 | 64.6 | 3072 |
※MIRACL:多言語情報検索のための大規模なデータセットです。18の異なる言語にわたる検索タスクを評価するために設計されており、各言語のWikipediaコーパスを使用しています。検索精度や効率性を評価するために使用され、特に多言語環境での情報検索の性能を測定します。
※MTEB:テキスト埋め込みモデルの性能を多様なタスクで評価するための大規模なベンチマークです。56のデータセットと8つのタスクにわたり、112の異なる言語でのパフォーマンスを測定します。テキスト埋め込みモデルの品質を評価し、最適なモデルを見つけるためのリーダーボードを提供します。
情報検索
検索方法
Azure AI Searchのハイブリッドセマンティック検索を活用することで、クエリとドキュメントの意味的な関連性を評価し、ベクトル検索とキーワード検索の結果を統合します。これにより、ユーザーの意図により近い、関連性の高い検索結果を提供でき、検索精度が向上します。
-
検索方法の比較について、Azure AI Search: ハイブリッド検索と再ランキングによるベクトル検索の性能向上を参照してください
-
検索スコアリングワークフローは、Reciprocal Rank Fusion (RRF) を使用したハイブリッド検索での関連性スコアリングを参照してください
プロンプト
Azure OpenAI Serviceを利用して、検索クエリの生成と回答の作成を行います。
- 質問から検索クエリを生成する
- 検索結果を基に質問に回答する
プロンプトエンジニアリングのCO-STARフレームワークについて、CO-STARフレームワークを参考してください。