ラズパイ5で動く個人用インフラ
このbotは、大規模なサービスではない。
誰でも使える公開Webサービスではない。
多人数で同時利用する商用アプリでもない。
検索対象がインターネット全体に広がっているわけでもない。
動いているのは、個人のラズパイ5である。
そこに、小説本文があり、検索エンジンがあり、ベクトルDBがあり、Discord botがいる。
外から見ると、小さな仕組みに見えるかもしれない。
けれど、このbotが扱っているのは、誰かにとっての長い物語である。
十万字を超える本文。
複数の作品。
複数の世界観。
人物、地名、魔物、組織、依頼、関係性。
書いた本人でさえ、すべてを正確には覚えていられない情報。
それらを、あとから探せるようにする。
このbotは、そのためにある。
大規模でなくていい
AIや検索の話をすると、つい大規模なものを想像しがちである。
巨大なデータセット。
大量のユーザー。
高速な検索基盤。
商用サービス。
誰でも使えるWebアプリ。
きれいなUI。
ダッシュボード。
アカウント管理。
権限管理。
もちろん、そういうものが必要な場面もある。
けれど、このbotには、そこまでの規模は要らない。
使う人は多くない。
主な利用者は二人である。
それでも、意味はある。
むしろ、二人のためだからこそ、細かく合わせられる。
どの作品を入れるか。
worldをどう分けるか。
別名辞書に何を登録するか。
検索結果の表示をどうするか。
どのコマンドが必要か。
どこまでをAIに任せるか。
どこからは本文へ戻るか。
大規模サービスなら、一般化しなければならない。
多くの人に合うように設計しなければならない。
例外を減らし、操作をそろえ、説明を整える必要がある。
しかし、個人用のbotなら、もっと狭く作れる。
特定の作品群に合わせる。
特定の創作者の使い方に合わせる。
特定のDiscord運用に合わせる。
必要な機能だけを足す。
要らない機能は足さない。
この狭さは、弱さではない。
個人用インフラの強みである。
ラズパイ5の上に置く
このbotは、ラズパイ5上で動いている。
ラズパイ5は、小さなコンピュータである。
机の上や棚の隅に置ける。
常時起動しておける。
自分の管理下に置ける。
その上で、Discord botを動かす。
MeiliSearchを動かす。
Qdrantを動かす。
本文データを置く。
必要に応じて、外部のLLM APIを呼ぶ。
大きなクラウドサーバーではない。
けれど、個人の創作検索には十分な土台になる。
ラズパイ5に置くことで、このbotは少し家庭内図書館のようになる。
公開図書館ではない。
巨大な検索サイトでもない。
けれど、必要な本があり、必要な索引があり、呼べば返事をする司書がいる。
それが自分のそばで動いている。
この感じは、個人用創作インフラとしてかなり良い。
もちろん、ラズパイ運用には手間もある。
OSを入れる。
サービスを起動する。
Dockerやsystemdを考える。
バックアップを取る。
止まったら直す。
ログを見る。
アップデートする。
クラウドサービスに比べれば、面倒な部分もある。
けれど、その面倒さと引き換えに、自分の道具として育てられる。
本文を置く場所も、検索の仕方も、botの振る舞いも、自分たちの創作に合わせて変えられる。
中身は小さな検索基盤である
構成要素を並べると、やっていることはかなり素直である。
本文を取り込む。
段落に分ける。
IDを付ける。
MeiliSearchに入れる。
埋め込みを作る。
Qdrantに入れる。
Discord botから検索する。
必要ならLLMに本文を渡して答えさせる。
第3章から第6章までで見てきた通りである。
MeiliSearchは、文字列で探す。
Qdrantは、意味の近さで探す。
RRFで結果を混ぜる。
前後の段落を足す。
LLMに本文引用を渡す。
出典ID付きで答えさせる。
それぞれの技術は、単体で見れば特別なものではない。
全文検索。
ベクトル検索。
RAG。
Discord bot。
テキストファイル。
メタデータ。
別名辞書。
けれど、それらを小説本文のために組み合わせると、創作のための検索基盤になる。
重要なのは、技術そのものの珍しさではない。
何を検索対象にしているか。
どこへ戻れるようにしているか。
誰の作業を軽くしているか。
このbotの場合、検索対象は小説本文である。
戻る先は、章と段落である。
軽くしたい作業は、長編創作の確認である。
だから、これは創作検索botになる。
12のworld
このbotには、複数のworldがある。
たとえば、kimihana のように、世界観や作品群ごとに本文を分ける。
それぞれのworldには、その世界に属する作品が入り、章があり、段落がある。
worldは、ただのフォルダ名ではない。
検索対象の境界である。
別の世界の人物を混ぜない。
別の作品群の設定を混ぜない。
似た名前の別キャラクターを混同しない。
違うルールの物語を一緒に扱わない。
そのためにworldを分ける。
この分け方は、創作者にとって自然である。
作品には世界がある。
シリーズがある。
同じ作者が書いていても、別の世界観なら設定は混ぜられない。
逆に、同じ世界観なら、別作品でも関係があるかもしれない。
検索botは、その感覚に合わせて本文を扱う。
技術的には、インデックス名やフォルダ構成の話である。
けれど、創作上は「どの物語世界を今見ているのか」という話になる。
この対応が大事である。
創作検索では、単に全文を一つの箱に放り込めばいいわけではない。
物語の境界を、検索の境界にも反映する必要がある。
使う人が少ないからできること
このbotの利用者は多くない。
主に、長い小説を書く二人のためにある。
それは一見、狭い用途に見える。
けれど、狭いからこそできることがある。
検索結果の表示を、使う人が分かりやすい形にできる。
作品IDやworld名も、内輪で分かる名前にできる。
必要な別名を、実際の本文に合わせて足せる。
誤爆したら、その場で直せる。
使わない機能は作らずに済む。
必要になった機能だけを、少しずつ増やせる。
大勢に向けた道具では、こうはいかない。
説明責任が増える。
UIの汎用性が必要になる。
誤操作への配慮が必要になる。
権限や公開範囲を細かく考えなければならない。
誰の作品にも合うように、抽象化しなければならない。
でも、このbotはそうではない。
二人が使えればいい。
二人の本文に合えばいい。
二人の創作確認が楽になればいい。
この割り切りが、道具を軽くしている。
小さな道具には、小さな道具の強さがある。
個人用インフラとしての創作支援
個人用インフラという言葉は、少し大げさに聞こえるかもしれない。
けれど、実際にはかなりしっくり来る。
創作のために、自分で管理している基盤がある。
そこに本文が入り、検索でき、AIに読ませられ、Discordから呼べる。
必要に応じて更新できる。
作品が増えれば取り込める。
別名が増えれば辞書を足せる。
使いながら改善できる。
これは、単なる一回限りのツールではない。
創作を続けるための環境である。
小説を書く人は、本文を書く。
設定メモを書く。
登場人物を管理する。
プロットを整理する。
過去の描写を確認する。
時には友人と相談する。
その中に、検索botがいる。
書く前に確認する。
書きながら探す。
書いたあとに照合する。
相談中に呼び出す。
記憶が怪しいときに本文へ戻る。
それは、創作の作業環境の一部である。
AIが小説を書くのではない。
AIが作者の代わりに世界を決めるのでもない。
AIが読者の代わりに解釈を固定するのでもない。
AIと検索が、作者が本文へ戻るための足場になる。
これが、このbotの位置である。
小さな図書館
このbotを、別の言い方で表すなら、小さな図書館だと思う。
棚には、自分たちの小説本文が並んでいる。
本は世界ごとに分かれている。
作品ごとに分かれている。
章ごとに分かれている。
段落には、戻るための番号が付いている。
そこに、索引がある。
文字列で探す索引。
意味で探す索引。
人物名や別名をたどる索引。
初登場や最終登場を探す索引。
さらに、司書のようなAIがいる。
ただし、この司書は勝手に物語を作らない。
聞かれたら、棚から関係しそうな本文を探す。
その本文をもとに、短く答える。
そして、どの棚のどの段落を見たのかを示す。
最後に読むのは人間である。
この小さな図書館は、外から見れば個人用の仕組みにすぎない。
けれど、書いている人にとってはかなり重要である。
物語が長くなるほど、自分の本文を探す力が必要になる。
書いたはずの場面に戻れないと、続きが書きにくくなる。
表記や時系列が曖昧になると、不安が増える。
過去の描写を確認できると、先へ進みやすくなる。
創作を支えるのは、ひらめきだけではない。
戻れること。
探せること。
確かめられること。
それも、長く書き続けるためには大切である。
AIに書かせないためのAI
この本のタイトルは、『AIに書かせないためのAI』である。
少しひねった言い方だと思う。
AIの話をすると、多くの場合、「AIに何を書かせるか」という方向に進みやすい。
小説を書かせる。
設定を考えさせる。
キャラクターを作らせる。
プロットを出させる。
紹介文を書かせる。
それらが悪いわけではない。
けれど、このbotが目指しているのは、そこではない。
AIに小説を書かせるためではなく、人間が書いた小説へ戻るためにAIを使う。
作者の代わりに物語を作るのではなく、作者が自分の本文を見失わないようにする。
創作を乗っ取るのではなく、創作を続けるための足場になる。
設定を捏造するのではなく、本文にあることを探す。
もっともらしい答えを作るのではなく、出典へ戻れる答えを返す。
だから、AIに書かせないためのAIである。
AIを拒絶するのではない。
AIに任せきるのでもない。
AIの得意なところを使いながら、作者の仕事を作者の手元に残す。
そのための距離感が、このbotにはある。
索引係でいい
最後に、この本の結論をもう一度書く。
AIは作者ではなく、索引係でいい。
本文を探す。
場面を見つける。
出典を示す。
曖昧な記憶から候補を返す。
数える。
初登場や最終登場を教える。
それだけでも、長編創作では十分に役に立つ。
むしろ、それくらいの距離がちょうどいいこともある。
作者が書く。
AIが探す。
作者が読む。
作者が判断する。
作者がまた書く。
この循環ができるなら、AIは創作の邪魔をしない。
本文に戻る道を照らすだけでよい。
小説は、作者が書く。
けれど、作者ひとりの記憶だけで、長い本文を抱え続ける必要はない。
検索が助けてくれる。
索引が助けてくれる。
必要なら、AIが本文を読む手伝いをしてくれる。
そのくらいの使い方でも、AIは十分に強い。
二人のための、ラズパイ5上の小さな文学検索システム。
それは派手ではない。
けれど、長い物語を書き続ける人にとっては、たしかに意味のある道具である。
本文へ戻る。
この合言葉を忘れない限り、AIは作者の席を奪わない。
作者が自分の本文へ帰るための、静かな索引係でいてくれる。