すべてのプロジェクト

サービス事例オープンソースオープンソース

OpenBrain

保存したリール、投稿、リンク、スクリーンショットを取り込みます。OpenBrainがそれらを読み、要約し、普通の言葉で探せるようにします。

公開サイトを見る GitHubのソースコード
OpenBrain の画面のスクリーンショット

成果

保存したすべてを普通の言葉で検索

課題

保存したものはすべて、二度と見に行かない場所に収まります。ブックマーク、保存したリール、スクリーンショット。どれも書き込み専用です。

作ったもの

実際にものが保存される場所(ウェブ、Androidの共有メニュー、Telegramボット)からの取り込みと、入ってくる時点で各アイテムを読むパイプラインを構築しました。スクリーンショットにはOCR、ページには抽出を行い、そのうえで要約、タグ、埋め込みを作って意味で検索できるようにします。

結果

うろ覚えのものを尋ねて、実際に取り出せます。自己ホスト可能なので、アーカイブは自分のものであり続けます。

仕組み

  1. 01

    ウェブ、Androidの共有メニュー、Telegramボットからアイテムが保存されます。リンク、スクリーンショット、リール、投稿。

  2. 02

    取り出すときではなく入るときに読みます。スクリーンショットにはOCR、ページと投稿には抽出です。

  3. 03

    抽出したテキストは要約され埋め込まれるので、ファイル名ではなく内容で検索できます。

  4. 04

    検索はうろ覚えの説明に応え、含まれていた正確な語句を求めません。

AIの層

取り込み時のOCR、読める記録のための要約とタグ付け、そしてキーワードと意味を組み合わせたハイブリッド検索です。正確な語句でも、内容でもアイテムを見つけられます。高価な読み取りを書き込み時に一度だけ行うことが、読み取り時の検索を安くします。

エンジニアリングの層

すべての取り込みは処理の前に変更不可のログへ書き込まれるので、解析できないアイテムも失われません。その周りに、ベクトルストア、AGPL-3.0ライセンス、そして自己ホストが理論ではなく現実的になる程度に単純なデプロイ構成があります。

主要な技術判断

クエリ時ではなく取り込み時に読む。

入るときに処理すれば一度だけ高くつき、その後の検索がすべて速くなります。出すときに処理すれば、クエリのたびにOCRの代金を払い直します。

人が何を保存するかを考えれば、自己ホストです。

個人アーカイブは、第三者に預けてくれと頼むべき最後のものです。自己ホストはデプロイの選択肢ではなく機能そのものです。

使用技術

Next.jsVector DBLLMOCR

関連