次の方法で共有


LlamaIndex を使って RAG で始めるサーバーレス AI チャットの概要

独自のデータをLlamaIndex、Azure Functions、サーバーレス技術 で管理し、RAG を使用してAIアプリ開発を簡略化します。 これらのツールは、インフラストラクチャとスケーリングを自動的に管理し、チャットボットの機能に集中できるようにします。 LlamaIndex は、インジェストからストリーミングされた応答まで、データ パイプラインを処理します。

チャット入力と応答を示すブラウザーでのチャット アプリのスクリーンショット。

アーキテクチャの概要

アプリケーション フローには次のものが含まれます。

  • チャット インターフェイスを使用してプロンプトを入力する。
  • HTTP 呼び出しを使用してサーバーレス API にユーザーのプロンプトを送信する。
  • ユーザーのプロンプトを受け取った後、LlamaIndex フレームワークを使用して応答を処理およびストリーミングします。 サーバーレス API はエンジンを使用して、Azure OpenAI 大規模言語モデル (LLM) と LlamaIndex のベクター インデックスへの接続を作成します。

チャット アプリの単純なアーキテクチャを次の図に示します。

LlamaIndex RAG チャット アプリのアーキテクチャの図。

このサンプルでは、LlamaIndex を使用して埋め込みを生成し、独自のベクター ストアに格納します。 LlamaIndex は、Azure AI Searchを含む 他のベクターストア との統合も提供します。 この統合は、このサンプルでは示されていません。

このアーキテクチャの Azure はどこにありますか?

アプリケーションのアーキテクチャは、次のサービスとコンポーネントに依存しています。

  • Azure OpenAI は、ユーザーのクエリを送信する AI プロバイダーを表します。
  • LlamaIndex は、コンテンツの取り込み、変換、ベクター化 (PDF ファイル) とデータからの検索インデックスの作成に役立つフレームワークです。
  • Azure Container Apps は、アプリケーションがホストされているコンテナー環境です。
  • Azure マネージド ID は、クラス最高のセキュリティを確保するのに役立ち、開発者が資格情報と API キーを処理するための要件を排除します。

LlamaIndex は、インジェストから取得までのデータを管理します

LlamaIndex を使用して RAG (Retrieval-Augmented Generation) システムを実装するには、次の重要な手順を LlamaIndex 機能と照合します。

過程 説明 LlamaIndex
データ取り込み PDF、API、データベースなどのソースからデータをインポートします。 SimpleDirectoryReader
チャンク ドキュメント 大きなドキュメントをより小さなチャンクに分割します。 SentenceSplitter
ベクター インデックスの作成 効率的な類似性検索のためのベクター インデックスを作成します。 VectorStoreIndex
インデックスからの再帰的な取得 (省略可能) 階層的な取得を使用して複雑なデータセットを管理します。
クエリ エンジンへの変換 ベクター インデックスをクエリ エンジンに変換します。 asQueryEngine
高度なクエリ設定 (省略可能) マルチエージェント システムにはエージェントを使用します。
RAG パイプラインを実装する ユーザー クエリを受け取り、関連するドキュメント チャンクを取得する目的関数を定義します。
取得を実行する クエリを処理し、ドキュメントを再ランク付けします。 RetrieverQueryEngine、CohereRerank

前提 条件

開発コンテナー 環境は、この記事を完了するために必要なすべての依存関係で使用できます。 開発コンテナーは、GitHub Codespaces (ブラウザー) で実行することも、Visual Studio Code を使用してローカルで実行することもできます。

この記事を使用するには、次の前提条件が必要です。

  • Azure サブスクリプション - 無料で作成する
  • Azure アカウントのアクセス許可 - Azure アカウントには、Microsoft.Authorization/roleAssignments/write アクセス許可 (ユーザー アクセス管理者 や所有者 など) が必要です。
  • GitHub アカウント。

オープン開発環境

この記事を完了するために必要なすべての依存関係を含む、構成済みの開発環境をデプロイするには、次の手順に従います。

GitHub Codespaces は、Web 用の Visual Studio Code ユーザー インターフェイスとして GitHub によって管理される開発コンテナーを実行します。 最も簡単な開発環境では、GitHub Codespaces を使用して、この記事を完了するために正しい開発者ツールと依存関係がプレインストールされるようにします。

重要

すべての GitHub アカウントでは、コア インスタンスが 2 つあり、毎月最大 60 時間無料で Codespaces を使用できます。 詳細については、GitHub Codespaces の 毎月含まれるストレージとコア時間を参照してください。

  1. codespace で開きます。

    GitHub Codespaces で開く

  2. コードスペースが起動するまで待ちます。 このスタートアップ プロセスには数分かかる場合があります。

  3. 画面の下部にあるターミナルで、Azure Developer CLI を使用して Azure にサインインします。

    azd auth login
    

    認証プロセスを完了します。

  4. この記事の残りのタスクは、この開発コンテナーのコンテキストで行われます。

デプロイと実行

サンプル リポジトリには、サーバーレス チャット アプリを Azure にデプロイするために必要なすべてのコードと構成ファイルが含まれています。 次の手順では、サンプルを Azure にデプロイするプロセスについて説明します。

チャット アプリを Azure にデプロイする

重要

このセクションで作成された Azure リソースでは、主に Azure AI Search リソースから即時のコストが発生します。 これらのリソースは、コマンドが完全に実行される前に中断した場合でも、コストが発生する可能性があります。

  1. Azure リソースをプロビジョニングし、ソース コードをデプロイするには、次の Azure Developer CLI コマンドを実行します。

    azd up
    
  2. 次の表を使用して、プロンプトに応答します。

    Prompt 答え
    環境名 短く、小文字にしてください。 名前またはエイリアスを追加します。 たとえば、john-chatします。 リソース グループ名の一部として使用されます。
    予約 リソースを作成するサブスクリプションを選択します。
    場所 (ホスティング用) 一覧から近くの場所を選択します。
    OpenAI モデルの場所 一覧から近くの場所を選択します。 最初の場所と同じ場所を使用できる場合は、その場所を選択します。
  3. アプリがデプロイされるまで待ちます。 デプロイが完了するまでに 5 ~ 10 分かかる場合があります。

  4. アプリケーションが正常にデプロイされると、ターミナルに 2 つの URL が表示されます。

  5. ブラウザーでチャット アプリケーションを開くには、Deploying service webapp というラベルが付いた URL を選択します。

    Web アプリケーションの URL を示すデプロイ コマンドの出力のスクリーンショット。

チャット アプリを使用して PDF ファイルから回答を取得する

チャット アプリには、PDF ファイル カタログからの国内郵便の物理的な標準に関する情報が事前に読み込まれています。 チャット アプリを使用して、宛名とパッケージに関する質問をすることができます。 次の手順では、チャット アプリを使用するプロセスについて説明します。

  1. ブラウザーで、大きなパッケージをフランスに送信する場合の料金を選択または入力します。.

  2. LlamaIndex は、PDF ファイルを使用して回答を導き出し、その応答をストリームします。

    チャット入力と応答を示すブラウザーでのチャット アプリのスクリーンショット。

    答えは、LlamaIndex ベクター ストアに取り込まれた PDF データからの影響を受けた Azure OpenAI から来ています。

リソースのクリーンアップ

リソースをクリーンアップするには、次の 2 つの点に対処する必要があります。

  • Azure リソースでは、Azure Developer CLI azd を使用してリソースをクリーンアップできます。
  • 開発者向け環境。Visual Studio Code を使用した GitHub Codespaces または DevContainers。

Azure リソースをクリーンアップする

この記事で作成した Azure リソースは、Azure サブスクリプションに課金されます。 今後これらのリソースが必要になるとは思わない場合は、削除して、より多くの料金が発生しないようにします。

次の Azure Developer CLI コマンドを実行して、Azure リソースを削除し、ソース コードを削除します。

azd down --purge

開発者環境をクリーンアップする

GitHub Codespaces 環境を削除すると、アカウントに対して取得するコア時間単位の無料エンタイトルメントの量を最大化できます。

重要

GitHub アカウントの権利についての詳細は、「GitHub Codespaces の毎月含まれるストレージとコア稼働時間」を参照してください。

  1. GitHub Codespaces ダッシュボード (https://github.com/codespaces) にサインインします。

  2. 現在実行中の Codespaces を、Azure-Samples/llama-index-javascript GitHub リポジトリから見つけます。

    状態とテンプレートを含むすべての実行中の Codespace のスクリーンショット。

  3. コードスペースのコンテキスト メニュー を開き、[削除] を選択します。

助けを求める

このサンプル リポジトリでは、トラブルシューティング情報を提供します。

問題が解決しない場合は、リポジトリの Issuesに問題を記録します。

次の手順

JavaScript での アシスタントと関数呼び出し