三行にまとめると
- 自宅で使っている電化製品の取扱方法や料理のレシピを答えるRAGを作ってSlackから呼び出せるようにしたよ
- AWS Bedrock Agent + ナレッジベース + Chatbot でノーコードで作れたよ
- 生成AI初心者でも2時間くらいで作れたよ
以降は試行錯誤した際の備忘録です。グダグダしておりますのでご了承ください
自己紹介
はじめまして、@ytと申します。
LITALICOでは社内で使われているツールやサービスサイトのインフラ部分の保守・運用を行ってます。
生成AIと私
毎日生成AIの話題が尽きませんね!
私自身は業務で使う機会はほぼなく、個人的にちょっとかじってみたもののうまく使えていません。
生成AIの展開の速さに追いつけなくなり、苦手意識すら芽生えている状態でした。
そんな私がなぜ?
前提
突然ですが、私は家事全般が苦手です。
特に、一定期間しか使わないシーズンもので、細かく分解できる電化製品のお手入れが苦手です。
お手入れを怠ると健康に影響があるものはもっと苦手です。
最近では加湿器の清掃が億劫で仕方ありません。
一般的な加湿器の洗い方として、お湯をちょびっと入れて、クエン酸をぶち込んで放置して、石化したカルキをこそげ落とせばいいだけと知っています。また、お手入れが簡単で、パーツが少なくシンプルな構成なものを選んでいます。
やれば大したことないのに、なぜか洗えずにいました。
何が面倒なのか
何が面倒なのか考えるために可能な限り細分化してみます。
1. 取扱説明書一式を保管している収納ボックスを棚から取り出す
2. 収納ボックスから加湿器の取扱説明書を探して抜き出す
3. 取扱説明書から清掃ページを探して開く
4. 清掃に必要な道具を用意する
5. 取扱説明書に従ってパーツを分解する
6. 取扱説明書に従ってパーツごとに清掃する
この中で私が特に面倒なのは①~③です。
過去に説明書をデジタルデータに置き換えたこともありましたが、型番検索やPDF探しが手間で気力が尽きてしまいます。
思い返せば、洗濯やごみ捨ての分類は特に苦ではありません。分類を忘れてしまっても、その場ですぐにわかるからです。逆に、もし食洗器を導入すれば苦しむことは確実です。「あれ?この食器いけたっけ?」と毎回悩むと思います。
仕事でも何かを探す時間はもったいなく感じるし、探す時間をできるだけ短くするか、そもそも探さなくてすむようにしたいタイプです。
調べものは検索含めて好きなので意識していなかったですが、探す行為が課題だったようです。
RAGを知ったきっかけ
情報収集していると「社内文書検索」「QAシステム」という文字をよく見かけるようになりました。
そこからRAGを知りました。専門知識がないと難しいんでしょう…?としり込みしていましたが、Bedrockを使えばノーコードで構築できるとわかり、早速試してみることにしました。
成果物
Slackから一言で我が家の加湿器の清掃方法がわかるようになりました
この仕組みができてから、なんと週1の頻度で加湿器の清掃を続けられています!
手順
- 使用するモデルをリクエスト
- S3バケットを作成
- 取扱説明書(PDF)をS3にアップロード
- Bedrock Knowledgebasesを作成
- Data sourceを同期
- Bedrock Agentsを作成
- Slackにチャンネルを作成し、AWSアプリを追加
- Chatbotを作成しSlackチャンネルとつなぐ
Bedrock周りの手順はこちらの記事を参考にさせていただきました。
SlackからRAGとやりとりできるようになるまで、後述の詰まりポイントに引っかかったことを含めても2時間ほどでできました(SlackワークスペースとAWSアカウントはもとから私用のものなので、アカウントを用意する時間は含まれておりません)。
個人的つまりポイント
- どのモデルを使うかわからない
各モデルの説明を調べましたが、このまま読んでいても分からないだけでどんどん時間が溶けると思い、ひとまずClaude 3 Haiku
を使うことにしました。
東京リージョンで使えるモデルの中で料金がお手頃だったからです。
今はバージニア北部で構築しなおし、埋め込みモデルはTitan Text Embeddings V2
・テキストモデルはAmazon Nova Micro
を使っています。
- ナレッジベースとAgentsで使うモデルの種類が違うことに気づかなかった
事前に公式ドキュメントを読んでいれば、こんな間違え方をしないと思いますが…。
公式ドキュメントや記事を読んで、用語を頭に入れました。
感想
生成AIを試せて、純粋にとても楽しかったです!
登録データによっては誤った回答もありました。
食パンをトーストする際の火加減を聞いたら、フライパンで強火で11分焼くように言われたり…。
回答の正確さを上げるためには、登録したデータの内容や普段どういう運用をしているのか詳しく理解する必要があると感じました。
AIが扱いやすいデータに正規化したり処理したりメタデータを追加することで、より正確な回答をしてくれるのではないかと思っています。今後そのあたりも試す予定です。
AIと仲良くされている皆様、ぜひコツを教えていただけると嬉しいです。
参考にした記事