ラベル matrix の投稿を表示しています。 すべての投稿を表示
ラベル matrix の投稿を表示しています。 すべての投稿を表示

2026年10月24日土曜日

Caddy + Matrx Synapse + 日本語検索

Hermes Agentを利用するとリモートで指示を出したくなってきます。
色々なメッセージサービスに対応してるのでDiscordと連携するように設定して使っていましたが、 調べ物をさせていると過去記事を確認する頻度があがり、データの持続性が気になるように。

LLMもローカルなのでメッセージサービスもローカルにするしかないね。
ということで下記を構築しました。
  • Reverse Proxy: Caddy
  • 分散SNS: Matrix Synapse
Hermes AgentはMatrixにも対応しているのでMatrix Synapseをスタンドアローン構成で構築。
コンテナも提供されてるので構築は簡単です。

ただ、非暗号化ルームを使用するとメッセージ検索で日本語が使えません。
暗号化ルームの場合、検索はクライアント側で行うのですが非暗号化の場合サーバ側で検索をする実装になっているようです。

調査するとsynapseのsearch.pyとsynapse_port_db.pyのSQLでto_tsvectorなどの呼び出しが'english'とハードコードされています。
PostgreSQLの日本語検索対応としては古いものになりますが、改造コストを考えると上記で'japanese'を指定できるtextsearch_ja を使うのが良さそうです。

コンテナビルド時にPostgreSQLにtextsearch_jpの組み込み、synapseの該当箇所を編集したもので非暗号化ルームの検索で日本語が使えるようにできています。
hermesにコンテナ作成などしてもらいましたが意外と優秀。


だがしかし、クライアントでメッセージスレッドに対応し、(非暗号化ルームの)検索がうまく動作するものがない...。
特にスレッドに対応しているものが少ない。
対応していて検索できてもスレッド内のメッセージにジャンプできないとか。
これは、日本語の検索とは関係ない話なので、スレッドはあまり使われれないのかな。
検索とかも。

非暗号化ルームを使用して
  • スレッドを使う。
  • メッセージを検索する。
  • 検索結果からメッセージを表示させる。
という使い方をしているだけなんですが。
MatrixはE2EEが売りの一つなので非暗号化ルームの使用はマイナーなんだろうか。

ローカル利用なのでサーバ側で暗号化されてないデータがある方が扱いやすいので何とかしたい。

参考)