Shinichiro Yamamoto

山本 慎一郎

「ヤマシンAI」が埋め込まれましたのイメージ画像

「ヤマシンAI」が埋め込まれました

RAGを利用した「ヤマシンAI」が、ついにホームページに埋め込まれました。
画面右下、メニューの下段にあります。

まず、「ヤマシンAI」の名前について説明しておきましょう。
「ヤマシン」というのは、私の子どものころのあだ名です。
「ヤマ」モト「シン」イチロウ、略して「ヤマシン」。
「キムタク」よりも古い歴史を持つ、由緒正しきあだ名です。

「AI」については、内部処理的に「GPT」などとする案もあったのですが、分かりやすく「AI」にしておきました。

では、「ヤマシンAI」が何をしてくれるのかについてですが、端的に言うと、『ホームページのデータを参照して、質問に答えてくれる』という動作をします。
まだチューニングの最中ではあるのですが、一通りの記事は学習させてあるので、そこからデータを引っ張ってきてくれます。
今後は、記事以外のページも学習させて、ホームページ全体の案内ができるようにさせたいです。

次に、内部的にどうなっているのか、というお話です。
とはいっても、別に難しいことはしていなくて、「RAG (Retrieval Augmented Generation)」を用いた単純な構造です。

具体的には、次のような流れで処理しています。

  1. 画面からの質問を受ける。
  2. ひとつの質問を4つのニュアンスの異なる質問に展開させる。(OpenAI使用)
  3. 2 で展開した質問で、RAG を検索する。(OpenAI使用)
  4. 3 で集めた回答を、1 つの回答に整理する。(OpenAI使用)
  5. 4 の結果を、画面に回答する。

前回の記事で直面していた問題は、処理 2 の質問を展開する処理で対応しました。
こうすることで、多面的な質問に展開でき、回答に適度なランダム性を持たせられるのではないかと考えています。
tempature などのパラメータについても、一般的に最適とされている範囲に収まっています。

最後に、「RAG」の構成についてです。
「RAG」自体も難しいものは使っておらず、FAISS と呼ばれるタイプのものです。
プログラミング言語の python を使えば、簡単に作成/操作できます。

学習させているデータは、前述のように、私のホームページの記事(と資料)のデータです。
各ページの article タグの部分だけを抜き出して突っ込んでいます。

まだまだチューニングが甘いので、思った通りの回答にならないことも多いですが、今後少しずつ改善していく予定です。
最終的には、簡単なチャットボットとして機能するようになればよいかな、と思っています。

ともあれ、これで AI を組み込んだ機能の実装が実現できたわけです。
が、改めて振り返ってみても、あまり AI を使ったという実感はないですね。
単にライブラリをインポートして関数を呼び出しただけなので……。

このあたりは、『コンパイラを作ったことはないが、コンパイルはしている』という状況に似ている気がします。
仕組みは難しいけど、誰かが用意してくれるので、エンジニアはそれを使うだけ。
簡単に利用できるようにしてもらえているのは、ありがたいことですね。

それでは、生成AIを味方につけた、山本慎一郎でした。

お問い合わせ→