目次
■人工知能(AI)と機械学習
2024.01.16 2024.06.28 約4分
LangChainとフルサーバーレスを活用したRAGアプリ構築の基本から、実践的ハンズオンまでを包括的に解説。LLMアプリ開発の新たな可能性を探求します。
この記事は、2023年11月21日開催 『ChatGPT/LangChainによるチャットシステム構築[実践]入門』共同著者 吉田 真吾 氏による講演を再編集し記事化したものです。 |
本書『ChatGPT、LangChainによるチャットシステム構築[実践]入門』は、LangChainとサーバーレス環境を活用して、効率的かつ安全にRAGアプリケーションを構築する方法に焦点を当てています。本記事では、AWS Cloud9 を使用した3つのハンズオンを通じて、LLMアプリケーションの基本的な構築手法や、サーバーレスの特徴とメリット、セキュリティリスクへの対処方法について解説します。
LangChain は、LLM を使ったアプリケーション開発を専門とする OSS です。LangChain の最大のメリットは、複雑な LLM 操作を抽象化できる点にあります。この抽象化により、開発者は様々なメモリーサービスやローカルツールを同じインターフェースを通して効率的に活用できるようになります。LangChain をマスターすることで、RAG のような先進的な技術への理解が深まり、より豊かなアプリケーション開発が可能になります。
LangChainを学ぶことで、RAGを含む高度なLLM技術の理解が深まります。そのため、まずは『LLMアプリ開発の鍵:LangChain超入門』を読んで基礎知識を築きましょう。
LangChainは、RAGやチャットボットのような技術を低コストかつ比較的簡単に実装できますが、1トランザクションあたりの価値はそれほど高くありません。一方、今後のトレンドは、AIエージェント、AIコパイロット、AITuberなどのような、実装の難易度やコストが高くても、1トランザクションあたりの価値が高い領域へとシフトしていくと考えられます。LLM関連の基礎技術を迅速に習得することで、現実離れした期待をせず、合理的かつ効果的なアプローチでLLMと向き合うことができます。
RAG(検索拡張生成) は、最新のデータや特定の知識を LLM に組み込むために使用されるプロセスで、LangChain の中で特に重要な役割を担います。
GPT-3.5 や GPT-4 は 2023 年 4 月までの公開情報を基にしていますが、より新しい情報やプライベートなデータの活用が必要な場合があります。その際、プロンプトに文脈(context)を追加することが考えられます。しかし、GPT の API はトークン数に最大値の制限があるため、多くの情報を含めることには制約があります。この課題を解決するために、RAG(Retrieval Augmented Generation)という手法を用います。この手法では、文書をベクトル化して Vector Stores に保存し、入力に関連する文章を検索します。検索された文書はプロンプトに組み込まれ、その内容を踏まえた上で LLM が回答を生成します
上記のように、モデル自体は最新データを保持していません。
そのため RAG では、ベクターデータを埋め込みデータとして取得し、それを基に関連する情報を検索します。ユーザーからの質問に対して類似するデータを特定し、その情報を基に ChatGPT が適切な回答の文章を生成する仕組みを持っています。
これまで AWSサーバーレスヒーローや、サーバーレスコミュニティの主催者として10年間ほど、サーバーレスにコミットしてきました。サーバーレスは、コスト効率が高くメンテナンスも容易で、優れたアプリケーションが実現可能なため、大変おすすめの手法です。
サーバーレスには、以下のような特徴があります。
|
クラウドネイティブの観点では IaaS・PaaS・SaaSのパラダイムシフトを代表する技術と言えます。このようなプラットフォームの考え方だけでなく、Software Excellence の観点においてもメリットがあります。
|
しかし現実にはまだ追いついていない部分もあるため、厳密なサーバーレスにこだわらず柔軟なアプローチが必要です。サーバーレスのメリットを活用する一方で、現実的な見方を忘れないようにしましょう。
『ChatGPT、LangChainによるチャットシステム構築[実践]入門』は、AWS Cloud9 を使用して、実際の実装に取り組みます。AWS Cloud9 は、オンラインの開発環境プラットフォームで、オンプレミス環境にもデプロイ可能です。本書では、環境に依存する動作の不安定さを最小化するために採用しています。AWS Cloud9 を使用する最大の理由は、異なるローカル環境による影響を排除し、統一されたハンズオン体験を提供することです。さらに、AWS Cloud9はAWSにログインして使用するため、保護された環境での作業が可能です。
AWS Cloud9 メリット | AWS Cloud9 デメリット |
|
|
AWS Cloud9 について詳しくはこちらを御覧ください。
AWS Cloud9 とは:https://docs.aws.amazon.com/ja_jp/cloud9/latest/user-guide/welcome.html
本書の第6章は、Streamlit Cloud を使用して、AIエージェントが外部情報を検索して応答する Webアプリケーションを実装します。Streamlit Cloud は Pythonライブラリとして使用でき、わずかなコードでフロントエンドの生成を行うことができるため、非常に便利です。例えば、’langchain-streamlit-app’ とコードを指定するだけで、H1(見出し)を生成でき、フロントエンドの詳細な部分の作成を省略できます。
実装は、LangChain の Agentツールを使用し、DuckDuckGo と Wikipedia をロードします。つまり、質問内容が DuckDuckGo や Wikipedia で答えられるかどうかを自動で判断し、適切な回答を提供するシステムを構築します。AWS Cloud9 でのコーディング後、コードを GitHub にアップロードし、Streamlit Cloud に設定を施せば、リポジトリから自動的に Streamlit Cloud にデプロイされるため、push操作を行うだけでアプリケーションが Streamlit Cloud 上にホストされます。
本書の第7章と第8章では、社内文書に基づいて質問に答える Slackアプリケーションの実装について解説します。このアプリケーションは、アップロードされた文書を使用して、Slack上の質問に自動的に応答します。
本書の9章では、セキュリティリスクと AI規制に関するトピックを取り上げています。今回は、特に注目すべきポイントを2つ紹介します。
「OWASP Top 10 for LLM」は、LLMアプリケーションに固有のセキュリティリスクと、その対策を提供するガイドラインです。このガイドラインでは、特にエージェントの暴走を防止するための脆弱性の排除に注目しています。
LLMアプリケーションを既存のシステムに拡張として組み込む場合、アプリケーションに存在する脆弱性が既存システムにもセキュリティリスクをもたらす可能性があります。そのため、既存システムのセキュリティ対策と同じく、LLMアプリケーションに対しても高レベルのセキュリティ対応が求められます。
このガイドラインに従い、LLMアプリケーションのセキュリティリスクを最小限に抑え、安全なシステムの構築を目指すことが重要です。
今回のハンズオンでは、DuckDuckGo と Wikipedia を有効化し、外部検索に限定したエージェントの動作を実装しています。これにより、エージェントが不要な動きをすることは防がれています。しかし、AIエージェントは本来、目的に向かってステップバイステップで行動を推論し決定するため、自律性が高くなります。この自律性は、エージェントに広範な権限を与えることになり、予期しない危険な動きや暴走を引き起こすリスクがあります。AIエージェントのトレンドが今後も続くと考えられる中で、エージェントが意図した動きの範囲内でのみ行動するように、実装と設定に細心の注意を払う必要があります。
2024年は、LLM の分野がさらに活況を呈する年になると予想されます。技術の進展に伴い、新しいアプローチや応用が現れるでしょう。ぜひ、この入門書を通じて、LangChainやRAGなどの基本概念から先進技術に至るまで幅広く学んでみてください。