![](https://i0.wp.com/thebridge.jp/wp-content/uploads/2024/07/ms4su-microsoft-build-handson-day-featured.jpg?resize=620%2C390&ssl=1)
本稿は日本マイクロソフトが運営するスタートアッププログラム「Microsoft for Startups Founders Hub」による寄稿転載。同プログラムでは参加を希望するスタートアップを随時募集している
Microsoftは5月21〜23日の3日間、米国・シアトルで開発者向けの年次イベント「Microsoft Build 2024」(以下、Build)を開催しました。
このイベントで発表された最新技術を使った開発者向けのワークショップ「Microsoft Build Japan for Startups – Hands-on Day」を6月25日、ゼンアーキテクツと日本マイクロソフトが共催。Buildで発表された「Azure Functions」「Azure Cosmos DB」などの最新技術と「Azure OpenAI Service」を活用し、独自のデータに基づいて文章生成や質問への応答を行うRAG(Retrieval-Augmented Generation)パターンの実現方法が紹介されました。
ワークショップ運営を担当したゼンアーキテクツは、Microsoft Azureを中心としたクラウド技術やGitHubなどDevOps環境の活用を支援する企業。ハンズオンセッションの講師は、同社Azure Expert / GitHub Expertの横浜篤氏が務めました。
新機能「Cosmos DB for NoSQL のベクター検索」を活用してRAGパターンを実現
通常、GPTなどのLLM(大規模言語モデル)は、企業内で独自に蓄積したデータを学習データに含みません。自社データを活用して回答を生成するためには、独自データが検索できるデータストアから回答に関連するデータを取得し、その検索データをもとに回答を生成する必要があります。これを実現するアーキテクチャがRAGパターンです。
![](https://i0.wp.com/thebridge.jp/wp-content/uploads/2024/07/ms4su-microsoft-build-handson-day-1.png?resize=620%2C390&ssl=1)
今回のハンズオンセッションでは、独自データを取得してベクター検索(データをベクトル形式で表現し、その類似性に基づいて検索を行う手法)が可能な検索インデックスを作成する方法を紹介。この検索対象データからRAGパターンで回答を生成し、チャットボットで回答するまでをワークショップで実践しました。
AzureでRAGパターンを実現する方法としては、「Azure OpenAI Studio」「Azure AI Studio」の「On Your Data」機能や、「Azure Machine Learning Studio」の「Prompt Flow」といった機能もあります。今回はこうした機能を使わずに開発する方法が解説されました。
On Your Dataは、コードを書かずにドラッグアンドドロップや条件選択だけで、RAGパターンを扱うことができ、Web APIとして公開する機能も備えているため、検証用には手軽で良いツールです。ただ、カスタマイズ性やCI/CD(継続的インテグレーション/継続的デリバリー)機能がないため、本番運用には向いていません。
またPrompt Flowも、ドラッグアンドドロップやPythonコードの埋め込みでRAGパターンを実現でき、On Your Dataよりはカスタマイズの余地があります。しかし、やはりCI/CD機能はなく、プロダクトとしてサービスをローンチすることは考えにくいでしょう。
そこで今回は、自分で開発する方法を紹介します。実運用ではデータストアをどう活用するか、データ更新のパイプラインをどう構成するかというところを理解すれば、RAGパターンそのものはそれほど難しいものではありません。(横浜さん)
![](https://i0.wp.com/thebridge.jp/wp-content/uploads/2024/07/ms4su-microsoft-build-handson-day-2.jpg?resize=620%2C390&ssl=1)
RAGパターンを実現する上で鍵となるベクター検索の精度は以前より向上し、RAGパターンに生かしやすくなっています。これまでAzureでベクター検索といえば「Azure AI Search」を使うのが主流でしたが、今回のハンズオンではBuildで発表された新機能「Cosmos DB for NoSQL API」によるベクター検索が使われました。
Azure AI SearchはPaaS(Platform as a Service)の検索サービスで、VM(仮想マシン)上で構築する検索サービスよりは運用コストが安く、Elasticsearch(大規模データの高速検索を得意とするエンジン)をベースとしているため、大変、高機能です。Azureのセキュリティ機能をフル活用でき、さまざまな検索機能に対応しています。
しかし5月に発表されたCosmos DBは、検索機能こそAzure AI Searchに比べるとシンプルですが、一般的なPDFや論文データの検索、特定カテゴリーだけフィルターをかけるといった用途なら、十分な機能を備えています。可用性もSLA 99.99%と高く、月額約1500円ぐらいからの低価格でスモールスタートが可能な点が、スタートアップにとっては非常に魅力的なサービスです。(横浜さん)
![](https://i0.wp.com/thebridge.jp/wp-content/uploads/2024/07/ms4su-microsoft-build-handson-day-3.png?resize=620%2C512&ssl=1)
Azure FunctionsとCosmos DBでチャットシステムを実装
ハンズオンでは、RAGパターンやチャットシステムが完成した後のデータの継続的な更新に重点を置き、データパイプラインの構築方法を確認していきました。
実装にはAzure Functionsを使用。データを受け取ってベクター化し、Cosmos DBにベクター検索ができるかたちで登録します。データが登録できたらチャットシステムで質問を受け、質問をベクター化してベクター検索をかけ、回答を生成するという流れです。
![](https://i0.wp.com/thebridge.jp/wp-content/uploads/2024/07/ms4su-microsoft-build-handson-day-4.png?resize=620%2C390&ssl=1)
インデックス作成の実際の処理フロー(アーキテクチャ構成図の左半分)は以下の通りです。
- HTTPリクエストでデータを受け取り(1〜2)
- Azure OpenAIにアクセスしてデータをベクター化(3)
- ベクター化されたデータをCosmos DBに登録(4)
チャットAPIの部分(図の右半分)については、質問を受け取り、回答を生成して返すという一般的な流れです。
- RestAPIで質問を受け付け(1〜2)
- 質問をAzureOpen AIでベクター化(3)
- ベクター化された内容でベクター検索を実施(4)
- GPT-4oを使用して回答を生成(5)
今回は単純にHTTPリクエストをRest APIで受けるAzure Functionsを作りましたが、Azure Functionsではいろいろなトリガーをもとに、イベントドリブンでファンクションを起動できます。例えば、IoTデータやイベントデータの追加、Azure Blob Storageへのファイル追加・更新・削除、Webhook、他のCosmos DBの更新などもトリガーとして使用できます。これにより、柔軟なデータパイプラインのチェーンを簡単に構築できます。(横浜さん)
Microsoft Build発表の新技術を体系的に習得
ハンズオンでは、Azureのサーバーレスサービスを使って実際の環境構築を行いました。Azure OpenAI Service、Cosmos DB、Function Appのリソースをセットアップした後、コーディングはGitHubのCodespaces機能を活用して行いました。
Codespaceを利用することで、ローカル環境でのセットアップが不要になります。通常、ローカルで開発する場合、Python、Azure Functions、その他必要なツールやデバッグ環境をインストールする必要がありますが、Codespacesとその環境を構成する
devcontainerを利用することで、インストール済みのコンテナをそのまま起動でき、追加のインストール作業なしで実行できます。
CodespacesはGitHubの機能で、GitHubのバックエンドVMリソースを使用するため、ローカルマシンのスペックに関係なく、快適に開発できる環境が実現します。また、こうしたワークショップにおいては、開発環境の統制が容易になり、全参加者が同じ環境で効率的に作業できます。(横浜さん)
![](https://i0.wp.com/thebridge.jp/wp-content/uploads/2024/07/ms4su-microsoft-build-handson-day-5.jpg?resize=620%2C390&ssl=1)
参加したエンジニアの中には、Azureを扱い始めたばかりで、これまで手探りで資料にあたりながら試行錯誤してきたという人も多かったようですが、ワークショップ後に感想を尋ねると「ハンズオンの資料がまとまっていて参考になった」「最新の情報を体系的に学ぶことができた」との声が挙がっていました。
OpenAI Serviceは試し始めていましたが、関心があってもなかなか手を出せなかったRAGパターンについて、今回実際に作ってみるところまでサポートを受けながら体験できて、満足しています。また、最新情報を取り入れて教えてもらえたので、AI Searchを使う方法に加えて、より新しいアプローチを知ることができました。(参加者)
日本の中小企業ではまだ、こうしたデータ活用の取り組みが少なく、多くはOpenAIのChatGPTの利用に集中しています。しかし、本当はそれだけでなく、企業内部のデータをどう活用していくかが重要。今日のワークショップでは、まさにその部分を扱っていてよかったです。より多くの企業がこうした技術を活用できるといいと思います。(参加者)
Members
BRIDGEの会員制度「Members」に登録いただくと無料で会員限定の記事が毎月10本までお読みいただけます。また、有料の「Members Plus」の方は記事が全て読めるほか、BRIDGE HOT 100などのコンテンツや会員限定のオンラインイベントにご参加いただけます。無料で登録する