>_ DevTrendsja

言語

ホーム

言語

セクション

フロントエンド バックエンド モバイル DevOps AI / ML ゲーム開発 ブロックチェーン 組み込み セキュリティ
Go

DuckDBとSQLiteでクラウドからギガバイト単位のメッセージ履歴を取得し、ローカル検索エンジンを構築する方法

添付ファイル付き古いメールを見つけようとしたり、2年前のSlackでのバグ議論をさがしたり、DiscordのDMで重要なアイデアを探したりした回数を考えてみてください。通常、すべてが10個のブラウザタブを開き、笨拙な企業向けMessengerの検索を掘り下げ、Slackの無料アーカイブがまたメッセージ履歴を切断したというフラストレーションで終わります。

最近msgvaultを発見しました。Goで書かれたコマンドラインアプリケーションで、12のソースからのすべての会話をローカルディスクにプルし、SQLiteとParquetにパッケージ化し、その上に便利なWebインターフェース、ターミナルTUI、ニューラルネットワーク用のMCPサーバーを提供します。

msgvault logo

なぜメッセージ履歴を自分のディスクにプルするのか

サードパーティサービスからデータをプルするというアイデアは新しいものではありません。しかし、バックアップはたいていの場合、JSONダンプや.emlが入った巨大なフォルダになり、ハードドライブの上で埃をかぶります。専用のデータベースなしで検索するのは別の苦労です。

msgvaultは従来のアーカイブダウンロードアプローチに取って代わります。このユーティリティはメール、チャット、カレンダー、会议のトランスクリプトをダウンロードし、その上にフル機能の検索分析レイヤーを展開します。データはあなたと共に残ります。古いスレッドを維持するための有料サブスクリプションやサードパーティのクラウドプロセッサは不要です。

このユーティリティが統合データベースに収集できるもの:

  • Gmailメールボックス(OAuthまたはサービスアカウント経由)および任意の標準IMAPサーバー。
  • Google Calendar(イベント、参加者和オーガナイザーがメールと一緒にインデックス化)。
  • Microsoft TeamsとSlack企業チャット(リアクション、ファイル、ネストされたスレッドを含む)。
  • 組み込みのボットエージェント経由のDiscordサーバー。
  • Beeper DesktopのMessenger(iMessage、WhatsApp、Telegram、Signal、SMSへのアクセスを提供)。
  • GranolaとCirclebackからの会議録音とトランスクリプト。
  • ローカルのMBOXダンプ、Apple Mailアーカイブ(.emlx)、PSTファイル、AndroidからのSMSバックアップ。

内部でアーカイブがどのように動作するか

プロジェクトのアーキテクチャは大量のデータ量を念頭に置いて設計されています。10年間で画像やドキュメント付きの50万件のメールを蓄積している場合、通常のハードドライブは単一ディレクトリ内のファイル数だけで遅延し始めます。

著者はSQLite、DuckDB、ハッシュによるコンテンツマッチングの組み合わせでこれを解決しました。

コアテキスト検索はSQLiteのFTS5を通じて実行されます。大量のアーカイブ全体での複雑な分析とフィルタリングは、カラムナーParquet形式の上でDuckDB上で実行されます。これにより、TUIでの重い集計クエリがミリ秒単位で実行されます。

添付ファイルは散らばって保存されません。msgvaultはSHA-256で重複排除し、隔離されたバイナリパックにパックします。このアプローチはLinuxでのinodeを節約し、WindowsやNASでのファイルシステムを遅くしません。必要に応じて、これらのパックはメンテナンスコマンドでいつでも解凍できます。

Webインターフェース、ターミナル、ベクトル検索

データをプルした後、3つの方法で操作できます。

最初のオプション:組み込みのWebインターフェース。デーモンがNode.jsのような外部ランタイムを必要としないアプリケーションでHTTPサーバーを起動します。インターフェースは高速なキーボードナビゲーションに最適化されています。ドメイン別にメールをグループ化したり、連絡先を追跡したり、ファイルを表示したりするのに便利です。

2番目のパス:コンソール内のTUI。全メッセージ履歴全体の詳細な分析結果を出力します。数回のキーストロークで特定の年の特定の受信者からの会話をフィルタリングできます。

3番目のオプションは、完全に一致する単語だけでなく意味で検索したい人向けです。msgvaultはOllama、LM Studio、llama.cppなどのローカル埋め込みサーバーに接続できます。

ベクトルを生成した後、ハイブリッド検索が有効になります。古典的なBM25全文検索とReciprocal Rank Fusionによるベクトル検索を組み合わせます。「データベースアーキテクチャの変更についてどこで議論したか」などのクエリを入力すると、「アーキテクチャ」という単語がテキストに含まれていなくても、ユーティリティは関連するフラグメントを見つけます。

MCP経由でニューラルネットワークを接続する

Claude DesktopやコンソールAIエージェントを使用している人のために、msgvaultには組み込みのMCPサーバー(Model Context Protocol)が含まれています。

長いメールスレッドをニューラルネットワークのチャットウィンドウに手動でコピーする代わりに、エージェントにmsgvaultツールへのアクセス権を付与します。その後、Claudeは過去の会話からコンテキストを検索し、古い合意を呼び出し、カレンダーやSlackからのデータを相互参照できます。すべての検索クエリはローカルマシンで実行されます。

クイックスタート

ユーティリティは готовыйバイナリとして出荷されます。macOSとLinuxでは、インストールは1つのコマンドで完了します:

curl -fsSL https://msgvault.io/install.sh | bash

Homebrewユーザーはパッケージを直接インストールできます:

brew install msgvault

開始するには、データベースを初期化し、テスト用Gmailアカウントをリンクします:

msgvault init-db
msgvault add-account [email protected]
msgvault sync-full [email protected] --limit 100
msgvault serve

add-accountコマンドはOAuth認証用にブラウザを開きます。100件のメッセージをダウンロードした後、msgvault serveは検索付きのローカルWebサーバーを起動します。

継続的なスケジュール同期用のバックグラウンドプロセスを実行する必要がある場合、ユーティリティはデーモンモードで動作できます:

msgvault daemon start
msgvault daemon status

覚えておくべきこと

プロジェクトは積極的に開発中(アルファバージョン)です。開発者はストレージフォーマットとCLIフラグがリリース間で変更される可能性があると警告しているため、データベース自体を定期的にバックアップすることが最善です。

2番目のニュアンスは初期設定に関連しています。GmailやGoogleカレンダーを接続するには、Google Cloud Consoleで独自のOAuthクライアントを作成するのに約5分かかります。ただし、プロジェクトドキュメントには詳細なステップバイステップガイドがあります。

誰がこのプロジェクトを見つけるか

msgvaultは開発者、プライバシー愛好家、仕事 жизньが dozensのクラウドサービスに分散している人々に役立ちます。このツールは他のプラットフォームへの依存問題を解決し、分散したメッセージアーカイブを統合された高速なローカルナレッジベースに変換します。

関連プロジェクト