見出し画像

ChatGPT + Embeddings で蜜源・花粉源に詳しいチャットボットをつくる 前編

すぐにチャットボットに触ってみたい方はこちら。


ChatGPTは何を聞いても流暢に返事をしますが、間違ったことを答えることもしばしば。
そこで、あらかじめ情報を与えた上で質問することを考えます。


情報を与えた上で質問をすると回答の精度が良くなる

例えば以下のように太郎と花子の誕生日をrole: systemで与えておきます。

{
  "花子": {
    "誕生日": "1977-12-15"
  },
  "太郎": {
    "誕生日": "2010-07-07"
  }
}

手はじめに以下の質問。

質問1「太郎と花子は何歳違いますか?」
回答「花子は1977年生まれで、太郎は2010年生まれなので、年齢差は33歳です。ただし、具体的な年齢は現在の日付によって異なりますので、計算する際は注意が必要です。」

ChatGPT3.5

お次は、

質問2「花子に誕生日プレゼントを贈ろうと思います。何が良いと思いますか?」
回答「花子さんの好みや趣味によって選ぶものは変わってきますが、一般的には以下のようなプレゼントが喜ばれることがあります。
- 花や観葉植物
- スキンケア用品
- ハンドバッグや財布などの小物類
- ジュエリー
- キッチングッズや食器など
もし花子さんの趣味や好みを知っている場合は、それに関連するプレゼントを選ぶのが良いでしょう。また、花子さんがちょっとリッチなものが好きな方であれば、高級ブランド品を贈るのも良いかもしれません。」

ChatGPT3.5

質問3「太郎に誕生日プレゼントを贈ろうと思います。何が良いと思いますか?」
回答「太郎さんがどんなものが好きかによってプレゼントの内容は変わってきますが、子供向けのおもちゃやゲーム、本、アクセサリーや洋服などが良いかもしれません。また、太郎さんが好きなアニメやキャラクターのグッズも良いでしょう。ただし、安全面にも注意が必要なので、年齢に合わせた適切なものを選ぶようにしてください。」

ChatGPT3.5

年齢や名前をふまえた上で回答しているように見えます。
適当な情報を与えた上で質問をすると回答の精度があがりそうですね。

次に、回答に必要な情報をどうやって選ぶか考えます。
質問1に答えるには太郎と花子、2人の誕生日が必要ですが、2と3では一人だけの誕生日で十分です。

この例では情報が少ないので選別する必要がないですが、実用を考えた場合はそうもいきません。現在(2023/06)ChatGPT3.5に一度に与えられる情報は日本語の場合15,000文字程度です(質問と返事含めて)

そこでEmbedding !

embedding(埋め込み) といきなり言われても困ると思いますが、語りたいことが多すぎるので説明しないことにします・・・というわけにもいかないのでちょっとだけ。

embeddingとは言葉どうしの計算ができるようにベクトルに変換する操作です。ベクトルに変換すると次のような計算ができるようになります。

国王 - 男 + 女 = 女王

私達はこの式が成り立つことを知っていますが、字面のみをなぞった計算ではこの結果にたどり着くことができません。

男王 - 男 + 女 = 女王

これであればembeddingしなくても計算できますが、私達は通常、男王という言葉は使いません。

"私達が使っている言葉"を計算可能にしてくれるのがembeddingです。

これを使って、質問に答えるために必要な情報をあらかじめ選んで与えることができます。

蜜源・花粉源に詳しいチャットボットつくる

ここからは実際の作り方です。

過去に手掛けたサイトみつばち百花蜜源・花粉源データベースをembeddingしてChatGPTと組み合わせチャットボットを作ってみます。

ですが、記事が長くなるのでここから先は別記事でお送りします。

みつばち百花、作ったのは2013年。ずっと気にかけていたんですが活かし方がわからず。今回このような形で紹介できるのが嬉しいです。

皆さんの中で持て余しているデータベースがあればぜひChatGPT + Embeddings 試してみてください。


この記事が気に入ったらサポートをしてみませんか?