私は本当に気に入った良い本を見つけるのにいつも苦労していました。私は定期的に最高の本のリストに挙げられている本をたくさん読んできましたが、少し残念ではない新しく読むべき本を見つけるのは難しいです。私は、ローカルの LLM を使用して、パーソナライズされた推奨事項を提供できるかどうかを確認することにしました。
新しい本を見つけるのは難しい
途中で諦めるのは好きじゃない
クレジット: Lucas Gouveia/How-To Geek |アントニオ・ギエム/シャッターストック
私は読書が大好きです。私はこれに人生の何千時間を費やしており、家のほぼすべての部屋に数百冊の本があります。私は素晴らしい本をたくさん読んできましたが、本当に気に入った新しい本を見つけるのは難しい場合があります。一度本を読み始めたら最後まで読み進めたいので、あまり好きではない本を読んで時間を無駄にしてしまいます。
問題は、ほとんどの本を勧められても冷めてしまうことです。私は Goodreads に何百冊もの本を記録しているので、他の何千人ものユーザーの読書履歴に基づいて、いくつかの適切な推奨事項を提供してくれると期待しています。悲しいことに、そこで勧められる本のほとんどは私にはまったく興味がありません。
私の読書履歴に基づいて独自の推薦システムを構築できないか考えました。たとえ行き当たりばったりだったとしても、Goodreads よりも悪い結果になるはずはありません。
個人の図書館員を育成するのは困難でした
ローカル LLM を使用してもあまり不満はありませんでした
クレジット: Adam Davidson / How-To Geek
私は読書履歴全体をクラウドベースの LLM にアップロードしたくありませんでした。多くのテクノロジー企業は広告プロフィールを構築するためにあらゆるデータを使用していますが、これは私について多くを語る膨大な情報のキャッシュをテクノロジー企業に渡すようなものだと感じました。ローカルの LLM がより安全な選択肢のように感じられました。
問題は、私の飾り気のないミニ PC では、比較的小さなローカル AI モデルしか実行できないことです。これでは、私の推薦システムの効果が制限されてしまいます。
まず、Goodreads の履歴をエクスポートすることから始めました。これには、読んだ本とその評価が含まれます。私はこれを使用して、私が最も愛した本の中核となるセレクションを含む嗜好プロファイルを作成し、推奨事項の基礎として使用しました。
私のリストにある本は非常に多様で、すべてをカバーするプロファイルを作成するのは不可能だったため、最終的にこれを少数の異なる好みのプロファイルに分割しました。私は、類似の本を見つけるために使用できる 5 つの主要な好みのプロファイルに落ち着きました。
-
CPU
-
セレロン FCBGA1264 3.6GHz
-
グラフィックス
-
統合インテル グラフィックス 24EU 1000MHz
Beelink Mini S13 Pro デスクトップ PC は、Intel N150 プロセッサを搭載した超小型コンピュータです。 16 GB の DDR4 RAM と 500 GB SSD が付属するこのマイクロ デスクトップは、さまざまなワークロードに最適です。単純なサーバー プログラムの実行から古い PC の交換まで、Beelink S13 Pro はあらゆる作業をこなします。
私が個人のライブラリアンを構築した方法
候補の本が私の好みのプロフィールと比較される
クレジット: Corbin Davenport / How-To Geek / Ollama
標準の LLM を使用するのではなく、小さな埋め込みモデルを使用しました。 nomic-embed-text、オラマで走っています。このモデルは本の説明を数値ベクトルに変換し、システムが曖昧な説明ではなくこれらのベクトルを比較できるようにします。
次に、オープン ライブラリ データベースから候補本のセレクションが抽出され、各候補本の好みのプロファイルと比較されて一致するものが見つかります。ローカル AI モデルは一致する候補をランク付けし、上位 5 つの候補が返されます。
私のミニ PC で実行すると、このプロセスの実行には数分かかります。ただし、これは時間に左右される問題ではないため、それほど重要ではありません。良い本を紹介してくれる限り、どれだけ時間がかかっても気にしません。

実際に使用したいローカルコーディングLLMをついに見つけました
ローカル AI コーディング アシスタントは現在、実際に役に立ちます。
結果は完璧ではありません
すべての提案が勝者になるわけではありませんが、それでも Goodreads よりも優れています
予想通り、私の弱いハードウェア上の小さなローカル モデルでこれらすべてを実行するのは完璧とは程遠いです。プロセス全体には長い時間がかかり、結果のいくつかは私の好みと合わなかったり、完全にでっち上げだったりすることもあります。
ただし、実際に役立つ結果は通常、少なくとも 1 つまたは 2 つあります。実行するたびに候補がファイルに追加され、次回の実行では再び候補が表示されなくなります。実行するたびに、本当に適切な選択が少なくとも 1 つ見つかります。
提案が良いものであると私が知っている理由は、その中には Goodreads に記録し始める前に読んで楽しんでいた本が含まれているからです。他の提案は、私が過去に作品を楽しんだものの、私の Goodreads 履歴にその本が表示されない著者の読んだことのない本です。
私の個人的な図書館員は、毎回 5 人の勝者を吐き出すような完璧な解決策には程遠いです。それでも、私は心から読むのを楽しみにしている約 20 冊の本のリストをすでに作成しています。これは、これまで Goodreads を使用して見つけた本のリストよりも多いです。
必ずしも巨大なモデルが必要なわけではありません
初めてローカル AI モデルを実行しようとしたとき、応答を生成するのがどれほど遅いか信じられませんでした。スピードが必ずしも重要ではないことを学びました。私の控えめなミニ PC でも、本当に役立つ提案を提供してくれる何かを構築することができました。