書いたはずなのに、どこに書いたか分からない。

長編小説を書いていると、そういうことが起きる。

たしかに書いた気がする。
設定としては決めている。
どこかの会話で話した覚えもある。
メモにも残したかもしれない。
けれど、本文のどこに書いたのかが分からない。

あるいは、そもそも本文には書いていなかったかもしれない。

作者の頭の中にはある。
設定メモにもある。
友人との会話ログにもある。
けれど、読者が読める本文には、まだ出ていない。

創作をしていると、このズレは案外よく起きる。

特に、十万字を超えるような長編や、複数作品にまたがるシリーズでは、作者本人の記憶だけで全部を抱え続けるのは難しい。人物名、地名、魔物名、依頼、関係性、初登場、最終登場、過去の描写。そうした情報は、本文のあちこちに散らばっている。

読み返せば分かる。

けれど、読み返すには時間がかかる。
どこを読めばいいのか分からない。
検索しようにも、正確な語を覚えていないこともある。
表記を間違えていれば、検索しても出てこない。

そこで、小説本文を検索するbotを作った。

この本は、そのbotについての記録である。

AIに小説を書かせる話ではない

AIと創作の話をすると、どうしても「AIに小説を書かせるのか」という方向に話が進みやすい。

AIに短編を書かせる。
設定を考えさせる。
キャラクターを作らせる。
プロットを出させる。
本文の続きを書かせる。
紹介文を書かせる。

そういう使い方もある。

それ自体を、この本で否定するつもりはない。

けれど、この本で扱うのはそこではない。

この本で扱うのは、AIに小説を書かせる話ではない。
人間が書いた小説へ戻るために、AIと検索を使う話である。

作者の代わりに物語を作るのではなく、作者が自分の本文を見失わないようにする。
設定を新しく生成するのではなく、すでに本文に書かれたことを探す。
もっともらしい物語を作るのではなく、本文のどこに何があるかを確かめる。

そのためのbotである。

だから、この本の合言葉は「本文へ戻る」である。

本文は、思ったより遠い

小説を書いている本人にとって、本文は自分のものだ。

自分で書いた文章である。
自分で考えた人物である。
自分で作った世界である。

だから、全部分かっているような気がする。

けれど、実際にはそうでもない。

長く書けば書くほど、本文は遠くなる。

数千字の短編なら、全体を頭の中で抱えられるかもしれない。
数万字でも、まだ大きな流れは覚えていられるかもしれない。
けれど、十万字、二十万字、さらに複数作品となると、細部は少しずつ曖昧になる。

あの人物は、どの時点で名前が出たのか。
あの魔物の正式表記は何だったのか。
あの依頼は、本文ではどう呼ばれていたのか。
あの二人は、初対面の時点でどこまで知っていたのか。
この地名は、前にも出したのか。
この設定は、本文に明記したのか、それともメモにあるだけなのか。

こうした確認は、地味である。

けれど、長編を書くうえでは大事である。

本文に戻れないと、作者の頭の中の設定だけで続きを書いてしまう。
すると、読者が読んだ本文との間にズレが出る。
作者にとっては自然な展開でも、読者には説明されていないことが起きる。

だから、本文へ戻る必要がある。

検索だけでも、AIだけでも足りない

本文へ戻るためには、検索が必要である。

けれど、単純なキーワード検索だけでは足りないことがある。

正確な語を覚えていれば、検索できる。
人物名や地名、固有名詞なら探しやすい。
本文にある文字列をそのまま入れれば、該当箇所へ行ける。

しかし、人間の記憶は正確ではない。

似た言葉で覚えている。
漢字を間違えている。
表記ゆれだと思ったら別の語だった。
場面は覚えているが、検索語が分からない。
「あの依頼」「あの町に着く前」「あの人が怒ったところ」のように、曖昧な形でしか思い出せない。

そこで、AIが役に立つ。

AIは、曖昧な質問を受け取り、関連しそうな本文を探す手助けができる。
長い本文を短く要約することもできる。
「この本文だけを根拠に答えて」と指示すれば、確認作業を軽くできる。

ただし、AIだけに任せるのも危ない。

AIは、もっともらしく補う。
本文にないことを、自然な文章で言ってしまうことがある。
創作設定では、それが特に危ない。
作者本人が「そうだった気がする」と思ってしまうかもしれないからだ。

だから、このbotでは検索とAIを組み合わせる。

まず本文を探す。
本文をAIに渡す。
AIには、その本文だけを根拠に答えさせる。
答えには出典を付ける。
必要なら、人間が本文へ戻って確認する。

信じるのは、AIではない。
AIが示した本文である。

この本について

この本は、小説検索botを作った記録である。

ただし、純粋な技術書ではない。

コードの詳細を一行ずつ解説する本ではない。
検索エンジンやベクトルDBの理論を深く掘る本でもない。
RAGの最新技術を網羅する本でもない。

どちらかと言えば、創作支援のための個人開発記録である。

長編小説を書く人間が、本文を見失わないために、どんな道具を作ったのか。
その道具は、どのように本文を取り込み、検索し、AIに読ませるのか。
なぜDiscord botにしたのか。
なぜ出典IDが必要なのか。
なぜプロフィール機能を入れると、道具の性格が変わるのか。

そういう話をする。

エンジニアでなくても読めるように、なるべく考え方を中心に書く。

もちろん、MeiliSearch、Qdrant、RAG、埋め込み、Discord botといった言葉は出てくる。けれど、それらはあくまで「本文へ戻る」ための部品として扱う。

重要なのは、どの技術を使ったかだけではない。

何のために使ったのか。
何を防ぎたかったのか。
どういう距離感でAIを置いたのか。

そこを見ていく。

本文へ戻る

この本の中心にあるのは、とても地味な願いである。

自分が書いた本文へ戻りたい。

忘れたから戻る。
表記が不安だから戻る。
設定が本文に出ているか確かめるために戻る。
続きを書く前に、前回の状態を確認するために戻る。
AIの答えが本当に本文に基づいているか見るために戻る。

本文へ戻れれば、人間が判断できる。

本文へ戻れなければ、AIの自然な答えも、作者の曖昧な記憶も、少し危うい。

だから、検索botを作る。

本文を段落に分ける。
IDを付ける。
全文検索できるようにする。
意味でも探せるようにする。
AIには本文だけを渡す。
出典IDを返す。
Discordから呼べるようにする。

そうして、創作中の小さな疑問から本文へ戻る道を作る。

AIは、作者の席に座らなくていい。

索引係でいい。
司書でいい。
本文へ帰る道案内でいい。

この本は、その距離感についての本である。

AIに書かせないためのAI。

人間が書いた物語を、人間が見失わないための、小さな検索botの話を始めよう。