paint-brush
海を航海する: データレイクを选择した本番環境レベルの RAG アプリケーションの開発 に@minio
5,765 測定値
5,765 測定値

海を航海する: データレイクを使用した本番環境レベルの RAG アプリケーションの開発

MinIO13m2024/06/14
Read on Terminal Reader
Read this story w/o Javascript

長すぎる; 読むには

2024 年半ばには、感動と興奮を与える AI デモの作成は簡単になります。多くの場合、午後 1 日で特注の AI ボットを構築できます。ただし、本番環境に移行するのは別の問題です。信頼性が高く、監視可能で、調整可能で、パフォーマンスの高いシステムが必要になります。

People Mentioned

Mention Thumbnail
Mention Thumbnail

Companies Mentioned

Mention Thumbnail
Mention Thumbnail
featured image - 海を航海する: データレイクを使用した本番環境レベルの RAG アプリケーションの開発
MinIO HackerNoon profile picture


2024年半ばには、感動と興奮をもたらすAIデモの作成は簡単になるでしょう。優秀な開発者、巧妙なプロンプト実験、そして強力な基盤モデルへのいくつかのAPI呼び出しがあれば、午後のうちに特注のAIボットを構築できることがよくあります。次のようなライブラリを追加します。またはRAG を使用してカスタム データを追加することで、LLM を拡張できます。午後の作業が週末のプロジェクトになるかもしれません。


ただし、本番環境に移行するのは別の問題です。信頼性が高く、観察有可以で、調整有可以で、パフォーマンスの高い大規模なシステムが一定になります。人為的なデモ シナリオを超えて、実際の顧客行動の全範囲を表すより広範なプロンプトに対するアプリケーションの応答を考慮することが必须欠です。LLM は、事先トレーニング データセットに含まれていないことが多い、ドメイン一直有の豊富な知識コーパスにアクセスする一定がある場合があります。最後に、精确が重要性なユース ケースに AI を適用する場合は、幻覚を検出、監視、および軽減する一定があります。


これらすべての問題を解決するのは困難に思えるかもしれませんが、RAG ベースのアプリケーションをそれぞれの基本特征的な部份に溶解し、必需に応じてそれぞれをターゲットを絞った反復的なアプローチで优化することで、より监管しやすくなります。この記事は、まさにそれを行うのに役立ちます。この記事では、赢得時に粗俗で発生する手段ではなく、RAG ドキュメント処理パイプラインを制成するために在使用される手段にのみ视角を当てます。そうすることで、转为 AI アプリケーション開発者がプロトタイプから実稼働までの道のりに適切に備えられるように协防することを目指しています。

現代のデータレイク: AI インフラストラクチャの重心


AI の時代では、データが堀であるとよく言われます。そのため、本番レベルの RAG アプリケーションを構築するには、独自のコーパスを構成する大量のデータを保存、バージョン管理、処理、評価、およびクエリするための適切なデータ インフラストラクチャが必要です。MinIO は AI に対してデータ ファーストのアプローチを採用しているため、このタイプのプロジェクトに対するデフォルトの初期インフラストラクチャの推奨事項は、最新のデータ レイクとベクター データベースをセットアップすることです。途中で他の補助ツールを接続する必要がある場合もありますが、これら 2 つのインフラストラクチャ ユニットは基礎的なものです。これらは、RAG アプリケーションを本番環境に導入する際にその後に発生するほぼすべてのタスクの中心として機能します。


MinIO上に構築された最新のデータレイクリファレンスアーキテクチャは、 このアーキテクチャがすべてのAI/MLワークロードをどのようにサポートするかを示す関連論文は、


カスタム コーパスを段階的に更新し、下流の取得のためにベクター データベースにロードする RAG ドキュメント処理パイプライン (取得手順は示されていません)。

RAG: ドキュメント パイプラインの手順

評価

実稼働レベルの RAG アプリケーションを構築するための极为重要な前中期ステップは、評価フレームワーク (単に eval と呼ばれることが多い) を設定することです。eval がなければ、システムのパフォーマンスがどの层次優れているかを確実に理解したり、どのコンポーネントを調整する必不可少があるかを理解したり、実際に進歩しているかどうかを判段したりすることはできません。さらに、eval は、解決しようとしている問題を明確にするための強制機能として機能します。最も普通的な評価操作は次のとおりです。


  • ヒューリスティックなコードベースの評価- 出力トークン数、キーワードの有無、JSON の有効性など、さまざまな基準を使用してプログラムで出力をスコアリングします。これらは、従来のユニット テスト用の正規表現とアサーション ライブラリを使用して決定論的に評価できることがよくあります。


  • アルゴリズム コードベースの評価- さまざまなよく知られたデータ サイエンス メトリックを使用して出力をスコアリングします。たとえば、プロンプトをランキングの問題として再構成することで、正規化割引累積ゲイン (NDCG) や平均逆順位 (MRR) などの推奨システムの一般的なスコアリング関数を使用できます。逆に、プロンプトを分類の問題としてフレーム化できる場合は、精度、再現率、F1 スコアが適切である可能性があります。最後に、BLEU、ROUGE、セマンティック回答類似性 (SAS) などの尺度を使用して、セマンティック出力を既知のグラウンド トゥルースと比較できます。


  • モデルベースの評価- 1つのモデルを使用して別のモデルの出力をスコアリングします。論文。この手法は人気が高まっており、スケールアップも人間よりもはるかに安価です。ただし、プロジェクトをプロトタイプから本番環境に移行する初期段階では、評価者 (この場合、法学修士) が基盤システム自体と同様の制限やバイアスの影響を受けることが多いため、確実に実装するのは難しい場合があります。この分野の研究、ツール、ベスト プラクティスは急速に進化しているので、注意深く見守ってください。


  • 人間による評価- ドメインの専門家である人間に最善の回答を求めるのが、一般的には最も効果的な方法です。この方法は時間がかかり、費用もかかりますが、洞察力を得たり、初期評価データセットを構築したりするのに非常に役立つため、無視すべきではありません。作業からさらに効果を得たい場合には、人間の専門家が生成した評価を合成バリエーションで補足する論文。


さまざまな評価タイプの推奨分布を示す評価ピラミッド。上部にある方法は、労力と複雑さが高く、したがって、実際の結果との整合性がより高くなります。下部にある方法は、より高速かつ頻繁に実行できますが、事実の正確さの近似値としてのみ解釈する必要があります。


どの評価手法を使用するかを決定する際には、カスタムベンチマーク評価データセット(Hugging Faceのリーダーボードでよく使用される一般的なデータセット)の作成を検討してください。 データセットだけでは不十分です。カスタム評価データセットには、ドメイン固有で実際の顧客がアプリケーションに入力するプロンプトの種類を代表するさまざまなプロンプトとその理想的な応答が含まれます。理想的には、評価データセットの作成を支援できる人間の専門家が利用できますが、利用できない場合は自分で作成することを検討してください。どのようなプロンプトが想定されるかを推測することに自信がない場合は、動作仮説を立てて、それが検証されたものとして先に進みます。後でより多くのデータが利用可能になったら、仮説を継続的に修正できます。


評価データセットの各行の入力プロンプトに制約を適用して、LLMが具体的な判断タイプ(バイナリ、カテゴリ、ランキング、数値、テキスト)で応答するようにすることを検討してください。判断タイプを組み合わせることで、評価を適度に多様化し、出力の偏りを減らすことができます。他の条件が同じであれば、評価テストケースが多いほど良いですが、この段階では量よりも質に重点を置くことをお勧めします。 この論文では、1,000 行の小さな評価データセットでも、それが実際のより広い母集団の代表的なサンプルであれば、出力の品質を大幅に向上できることが示唆されています。RAG アプリケーションでは、数十から数百行で構成される評価データセットを使用することで、パフォーマンスが向上することが実証されています。


アドホックベースで手動で評価を開始することもできますが、評価スコアリングプロセスの実行を自動化するためにCI/CDパイプラインを実装するまでにあまり長く待たないでください。毎日、またはソースコードリポジトリと監視ツールに接続されたトリガーで評価を実行することは、一般的にML-opsのベストプラクティスと考えられています。次のようなオープンソースのRAG評価フレームワークの使用を検討してください。またはすぐに使い始めるのに役立ちます。データ レイクを、バージョン管理された評価データセットと、評価が実行されるたびに生成されるさまざまな出力メトリックの両方を含むテーブルの信頼できるソースとして使用します。このデータは、プロジェクトの後半で戦略的かつ的を絞った改善を行うために役立つ貴重な洞察を提供します。

データ抽出装置

刚开始的にプロトタイプ弄成を開始するときに用到する RAG コーパスは、実稼働環境に到達するのに格外であることはほとんどありません。LLM が幻覚、省略、問題のある種類のバイアスを削減できるように、コーパスを継続的に追加データで拡張する必要性がある将性があります。これは一般而言、上流データを粗俗のドキュメント パイプラインでさらに処理できる模式に変換する空出器とローダーを構築することによって、ケースバイケースで行われます。


不需要这些のデータを収集して大诲を沸騰させようとするリスクはわずかにありますが、会社がアクセスできる質の高い情報のソースについて、独創的で既成的概念にとらわれない考え方をすることが很重要です。明らかな很有很有可能としては、企業の OLTP やデータ ウェアハウスに导出されている構造化データから触达を吸出することが挙げられます。適切に密名化され、機密情報が除了されている限り、企業のブログ杂志社投稿、ホワイト ペーパー、公開された調査、顧客サポートの問い合わせなどのソースも検討する不需要があります。たとえ大量でも質の高いドメイン内データをコーパスに追加することによるパフォーマンスへのプラスの影響は、いくら強調してもし過ぎることはありません。そのため、時間をかけて挑战、実験、反復することを恐れないでください。ここでは、質の高いドメイン内コーパスをブートストラップするためによく食用される技术をいくつか紹介します。


  • ドキュメント抽出- 独自の PDF、オフィス ドキュメント、プレゼンテーション、マークダウン ファイルは、豊富な情報源になります。このデータを抽出するためのオープン ソースおよび SaaS ツールの広範なエコシステムが存在します。一般的に、データ抽出ツールは、ファイル タイプ固有 (JSON、CSV、docx など)、OCR ベース、または機械学習とコンピューター ビジョン アルゴリズムを活用しています。最初はシンプルに開始し、必要に応じて複雑さを追加します。


  • API 抽出- パブリック API とプライベート API は、ドメイン内知識の豊富なソースになります。さらに、適切に設計された JSON および XML ベースの Web API にはすでにいくつかの構造が組み込まれているため、ペイロード内の関連プロパティをターゲットに抽出し、無関係と見なされるものを破棄することが容易になります。手頃な価格のローコードおよびノーコードの API コネクタの広大なエコシステムが存在するため、使用する API ごとにカスタム ETL を作成する必要がなくなります。これは、専任のデータ エンジニア チームなしでは維持および拡張が難しいアプローチです。


  • Web スクレイパー- Web ページは、ツリーのような DOM 構造を持つ半構造化データと見なされます。必要な情報、その場所、およびページ レイアウトがわかっていれば、十分に文書化された API がなくても、このデータを使用するスクレイパーをすばやく構築できます。Web スクレイピングに有益な抽象化を提供するスクリプト ライブラリやローコード ツールが多数存在します。


  • Web クローラー- Web クローラーは Web ページをトラバースし、再帰的な URL リストを構築できます。この方法をスクレイピングと組み合わせて、基準に基づいて情報をスキャン、要約、フィルタリングできます。さらに重要なスケールでは、この手法を使用して独自のナレッジ グラフを作成できます。


データ収集にどのような操作手法を便用するとしても、ハッキングされた 1 回限りのスクリプトを制作する衝動を抑えてください。代わりに、データ エンジニアリングのベスト プラクティスを適用して、データ レイク内のテーブルにデータを配备する、繰り返し可能会でフォールト トレラントな ETL パイプラインとして空出来器を展開します。これらのパイプラインを実行するたびに、ソース URL や空出来時間などの比较重要なメタデータ基本要素がキャプチャされ、各コンテンツとともにラベル付けされるようにしてください。メタデータ キャプチャは、粗俗のデータのクリーニング、フィルタリング、重複在排除、デバッグ、および帰属に越来越に役立ちます。

チャンキング

チャンキングは、大きなテキスト サンプルを LLM のコンテキスト ウィンドウ内に収まる小さな個別の位置に縮小します。コンテキスト ウィンドウは大きくなり、推論中により多くのコンテンツのチャンクを詰め込むことができるようになりましたが、チャンキングは、高精准度、再現率、計算効率の適切なバランスをとるための很重要な戦略であり続けます。


効果的なチャンク化には、適切なチャンク サイズを選択する有必要があります。チャンク サイズが大きいほど、コンテキスト ウィンドウ内に存在的するチャンクの総数が少なくなるという犠牲を払って、テキストのコンテキストと预示が增加される傾向があります。逆に、チャンク サイズが小さいほど、LLM のコンテキスト ウィンドウに詰め込めるコンテンツのチャンクの数が多くなります。ただし、追加のガードレールがないと、各コンテンツは周囲のコンテキストから削除されたときに品質が低するリスクがあります。


異なるチャンク サイズ構成でのプロンプト「ビヨンセのキャリアの業績について教えてください」のサンプル検索結果。


チャンク サイズに加えて、さまざまなチャンキング戦略と的办法を評価する必要性もあります。検討すべき標準的なチャンキング的办法をいくつか紹介します。


  • 固定サイズ戦略- この方法では、コンテンツ チャンクのトークン数を固定し、それに応じてコンテンツを小さなチャンクに分解します。通常、この戦略を使用する場合は、コンテキストが失われすぎないように、隣接するチャンク間である程度の重複が推奨されます。これは最も簡単なチャンキング戦略であり、通常、より洗練された戦略に進む前の良い出発点となります。


  • 動的サイズ戦略- この方法では、さまざまなコンテンツ特性を使用して、チャンクの開始位置と終了位置を決定します。簡単な例としては、句読点チャンカーがあります。これは、ピリオドや改行などの特定の文字の存在に基づいて文を分割します。句読点チャンカーは、単純な短いコンテンツ (ツイート、文字数制限のある製品の説明など) では十分に機能しますが、より長く複雑なコンテンツに使用すると、明らかな欠点があります。


  • コンテンツ認識戦略- コンテンツ認識チャンカーは、抽出されるコンテンツとメタデータの種類に合わせて調整され、これらの特性を使用して各チャンクの開始位置と終了位置を決定します。例としては、ヘッダー タグを使用してチャンクの境界を区切る HTML ブログのチャンカーが挙げられます。別の例としては、各文のペアワイズ コサイン類似度スコアをその前の文と比較して、コンテキストが大幅に変化して新しいチャンクの区切りが必要になったかどうかを判断するセマンティック チャンカーが挙げられます。


RAG アプリケーションに最適なチャンク化戦略は、LLM のコンテキスト ウィンドウの長さ、基礎となるテキスト構造、テキストの長さ、およびコーパス内のコンテンツの複雑さに合わせて調整する必要性があります。さまざまなチャンク化戦略を独立に試し、変更のたびに評価を実行して、指定の戦略でのアプリケーションのパフォーマンスをよりよく理解是什么してください。データ レイク テーブルでチャンク化されたコンテンツのバージョンを菅理し、各チャンクに系統情報があることを確認し、上流のデータ多抽出ステップからの生のコンテンツとそれぞれのメタデータまでさかのぼって追跡できるようにします。

充実

多くの場合、RAG 中に取得するためにインデックス付けされたコンテンツ チャンクは、アプリケーションが運用中に遭遇する実際のプロンプトとはコンテキストが異なります。たとえば、AI 質問応答ボットを構築している場合、顧客のクエリに対する多数の正しい回答を含む独自の情報の膨大なコーパスがある可能性があります。ただし、生の形式では、コーパスが類似性に基づく埋め込み取得に最適な質問と回答のペアの形式で事前に整理されている可能性は低くなります。この例では、取得時に、受信する顧客の質問と意味的に類似する生のコンテンツのチャンクをコーパスから単純に検索すると、取得結果セットの関連性が最適ではない可能性があります。これは、コンテキストが異なるアイテム (つまり、質問と回答) の類似性を比較しているという事実の結果です。幸いなことに、解決策は比較的簡単です。LLMの力を使って、生のコンテンツチャンクである可能性のある回答を、仮説的な質問に再文脈化することで充実させることができます。その後、それらの仮説的な質問をベクターデータベースにインデックス化し、後で検索できるようにします。この技術は、は、文書処理パイプライン内でLLMを使用してデータを充実させる力を示しています。これは、よく知られているコンテンツでこの手法を使用した例です。 :


 System Prompt: Given the provided snippet of text, generate three hypothetical questions that could be asked about it. Each question must be able to be answered using the information within the referenced snippet of text and only that information. Be concise. User Prompt: “At the 52nd Annual Grammy Awards, Beyoncé received ten nominations, including Album of the Year for I Am... Sasha Fierce, Record of the Year for "Halo", and Song of the Year for "Single Ladies (Put a Ring on It)", among others. She tied with Lauryn Hill for most Grammy nominations in a single year by a female artist. In 2010, Beyoncé was featured on Lady Gaga's single "Telephone" and its music video. The song topped the US Pop Songs chart, becoming the sixth number-one for both Beyoncé and Gaga, tying them with Mariah Carey for most number-ones since the Nielsen Top 40 airplay chart launched in 1992. "Telephone" received a Grammy Award nomination for Best Pop Collaboration with Vocals.” Response: Here are some questions that could be asked based on the provided text: * How many nominations did Beyoncé receive at the 52nd Annual Grammy Awards? * For which album was Beyoncé nominated for Album of the Year at the 52nd Annual Grammy Awards? * Which song earned Beyoncé a nomination for Record of the Year at the 52nd Annual Grammy Awards?


長い风格やテーマ的に複雑なコンテンツで構成されたコーパスを扱う場合は、追加の前処理を行ってコンテンツ チャンクを事前事后に要約し、その后果的次元を減らすことを検討してください。赢得時に、チャンク要約の埋め込みをクエリし、要約されていないテキストをコンテキスト ウィンドウ挿入に置き換えることができます。この做法は、大規模で複雑、または頻繁に変更されるコーパスに対して RAG を実行するときに関連性を高めます。

トークン化

2024 年の大規模言語モデルは、普通的には、書き言葉をネイティブに解释しないトランスフォーマーベースのニューラル ネットワークです。入力された生のテキストはトークンに変換され、その後、行业乗算演算に最適化された高次元の埋め込みベクトルが続きます。この入力プロセスは普通にエンコードと呼ばれます。逆の一定出力プロセスはデコードと呼ばれます。多くの LLM は、トレーニングに实用されたのと同じトークン化スキームを实用した推論にのみ機能します。したがって、選択したトークン化戦略の总体を解释することは难以欠です。これは、パフォーマンスに多くの彼此之间な影響を与える可以性があるためです。


単純な图片文字レベルおよび単語レベルのトークン化スキームもありますが、執筆時点では、应从端の LLM のほぼすべてがサブワード トークナイザーを安全使用しています。したがって、ここではそのカテゴリのトークナイザーにのみ对象を当てます。


サブワード トークナイザーは、単語を再帰的に小さな単位に分开します。これにより、語彙数を増やしすぎずに語彙にない単語を看待できるようになります。これは、トレーニングのパフォーマンスと、LLM が异常のテキストに一样化する实力にとって注重な考慮事項です。


現在広く在使用されているサブワード トークン化形式は、バイト ペア エンコーディング (BPE) です。大まかに言うと、BPE アルゴリズムは次のように機能します。


  • 単語をサブワード単位のトークンに分开し、それらを語彙に追加します。各トークンは、トレーニング コーパス内の相通の隣接文字内容パターンの相対頻度によって制御されるサブワードを表します。


  • 上記の手順の相通トークン ペアを、そのペアを表す単一のトークンに置き換え、それを語彙に追加します。


  • 上記の手順を再帰的に繰り返します。


BPE トークン化は、多くのユースケースでうまく機能するため、通常情况下的に RAG アプリケーションを開始するのに最適です。ただし、選択したモデルに的用到される事先トレーニング コーパスの語彙に格外に表現されていない、高强度に専門化されたドメイン言語が一大批にあるとします。その場合は、替换のトークン化策略を調べるか、この記事の範囲外である微調整と低ランク適応を検討してください。所诉の制約された語彙の問題は、临床医学、法律法规、またはあまり知られていないプログラミング言語などの専門分野向けに構築されたアプリケーションではパフォーマンスの不强として現れる已经性があります。より实际的的には、高强度に専門化された言語/専門用語を含むプロンプトで顕著になります。データ レイクに上传されている eval データセットを的用到して、有需要に応じてさまざまなトークン化スキームと、さまざまなモデルでのそれぞれのパフォーマンスを実験してください。トークナイザー、埋め込み、言語モデルは密接に結合されていることが多いため、1 つを変更すると、他の変更が有需要になる場合があることに注重してください。

結論

MinIO オブジェクト ストア上に構築された一览表のデータ レイクは、RAG ベースのアプリケーションを信心を持って本番環境に導入するための基礎インフラストラクチャを能提供します。これを便用すると、データ レイク テーブル内に存储してバージョン方法できる評価とドメイン自身の評価データ セットを作为できます。これらの評価を便用して、RAG アプリケーション ドキュメント パイプラインの各コンポーネント (吸出機能、チャンカー、エンリッチメント、トークナイザー) を繰り返し評価し、段階的に促进して、本番環境レベルのドキュメント処理パイプラインを構築します。


ご質問がございましたら、お気軽にお問い合わせください。

바카라사이트 바카라사이트 온라인바카라