見出し画像

AIキャラクター用の記憶・想起システムを作ってみた

まえがき

こんにちは、すでぃーです!普段は高校生をしていますが、時間を見つけてはAI関連の個人開発に精を出しています!
特にAIで応答するVtuber(通称:AITuber)の開発に力を入れていて、今回はその記憶システムを開発したので紹介します。
AITuberとは何かについては他の方が丁寧に説明してくださっているので割愛します。

これまでのLLMに記憶を持たせる試み

LLaMAIndex

とても有名なライブラリです。テキストデータやPDF、はたまたyoutube動画の情報をチャンク毎に分割してインデックスに格納し、ベクトルの類似度検索で関連があるものを抜き出すものです。

LangChain

これも言わずと知れた、記憶といえばこれ!というような王道です。主な機能としてModels, Prompt, Indexes, Chains, Agents, Memoryがあり、記憶にはIndexesとMemoryが使えます。IndexesはLLaMAIndexと似たような感じで、Memoryは会話履歴を保持して適宜プロンプトに挿入するものです。


しかし、どちらにも問題点が存在します。LLaMAIndexは既に存在するドキュメントから情報を取ってくるだけなので、QAbotや検索ツールに向いていて記憶を持ったキャラクターとのリアルタイムな会話に使うのはあまり適しているとは言えません。

LangChainの方はアップデートによる変更が割と激しく、コードを書き直す手間が大きいです。あと構造が複雑すぎてどうすればいいのかわからなくなります。僕はなりました。

何が違うのか

とまあこんな感じで、既存ライブラリをAITuberなどのキャラクターの記憶として使うには不便です。
そこで僕は思いました。

LLaMAIndexの機能をキャラクター用に最適化してLangChainみたいに複雑になりすぎないツールを作れば最強じゃね?

そんなわけで作りました。

じゃじゃーん!名付けてSudyIndex!
ダッサ!!!っていうツッコミはなしでお願いします。

ということでこのシステムの大まかな特徴を説明します。詳細な使い方はboothの方に載せてあるのでそちらをご覧ください。
ちなみに商用利用可です。

また、法人でご利用される場合は私のTwitterアカウントまでご相談ください。

1. キャラクター用に最適化されたシステム

ベクトルデータベースからの検索機能に加えて、忘却機能や会話を話題に応じて自動分割して記憶する機能などがあります。これにより自然な記憶・会話をすることができます。また、この用途に最適化したことによりコード2行だけで動作する非常にシンプルで使いやすい構造になっています。

2. 完全ローカル化可能

LLaMAIndexは要約にもベクトル化にもOpenAI APIを使うのでそどれぐらい料金がかかるか不安でついついAPI使用状況を見に行きたくなってしまいます。しかし、このシステムを使えばそんな心配はいりません。すべてがローカル環境で完結させられるのです。
なお、2023年7月現在のver. 0.1.0fでは要約の精度に課題があるため要約のみchatGPTを使用しています。ver. 0.1.1で完全ローカル化に対応予定です。

3. 自由なカスタマイズ性

このシステムはpythonファイルで販売しているので容易に自分好みな修正ができます。僕も自分のAITuber用に少し改造して組み込んでいます。

おわりに

以上、SudyIndexについての紹介でした。上のboothのリンクからご購入いただけるとうれしいです!ありがとうございました!

追記

AIドル系AITuberのなぎさちゃんにSudyIndexをご紹介いただきました!
こちらの記事と合わせて読んでくださればより深くSudyIndexを理解いただけると思います。ぜひご覧ください!


いいなと思ったら応援しよう!

すでぃー
いただいたサポートは研究資金として使わせていただきます!