AI檢索、ほぼ完成。

今日はかなり進んだ。

というか、このプロジェクトが「家財管理アプリ」から「AIが探してくれるシステム」になった一日だった。

まず本番公開前の試験をやった。

RLS、RPC、同時実行、負荷試験。

セキュリティで致命傷はなし。

ただ、「たまたま問題が起きなかった」を「安全」とは書かないようにした。

こういうところはちゃんと現実を見る。

「今回の条件では再現しなかった。」

それだけ。

変に盛らない。


次は一万件のデータ。



最初は

「DBが遅いのか?」

と思ってた。

でも測ってみたら全然違った。

犯人はReactだった。

十五万個のDOM。

そりゃ重い。

だからデータベースはいじらず、

最初は50件だけ読むように変更。

「もっと読む」ボタンを押したら追加で読む。

結果、

2.4秒だった初回表示が0.18秒。

ほぼ一瞬。

やっぱり勘じゃなくて、測ってから直すのが一番強い。


そして今日の本命。

AI自然言語檢索。

これがずっと作りたかった。

「電子レンジ」

じゃなくて

「キッチンの温めるやつ」

で見つかる世界。

人間は正式名称で物を覚えてない。

だからAIに人間の言葉を理解させたかった。

EmbeddingにはGemini。

檢索はpgvector。

一致度も表示。

かなりそれっぽくなってきた。


もちろんセキュリティも忘れてない。

AI檢索だからって

「他人の家のデータまで見えました」

なんて笑えない。

だからRLSは最後まで守る。

秘密鍵も全部サーバー側。

メモもEmbeddingに送らない。

この辺は妥協なし。


最後はAI檢索の精度測定。

Accuracy@1

Accuracy@3

Accuracy@5

数字で評価しようとした。

でもここで止まった。

permission denied for table tenants

惜しい。

あと一歩。

ここまで全部作ったのに、最後の最後で権限に止められた。

でも逆に言えば、

問題はもうそこしか残ってない。

変に権限を全部開放して終わりにはしたくない。

原因を見つけて、

最小権限で直す。

商用で使うなら、それが当たり前。


最近思う。

このプロジェクトって、最初は部屋を整理するために始めたんだよね。

でも今作ってるのは、

家族で使える。

複数世帯で使える。

AIが探してくれる。

そんな一つのサービスになり始めてる。

ここまで来るとは正直思ってなかった。

まだ終わりじゃない。

次はAI檢索の精度を数字で証明する。

そこまでできたら、この機能は胸を張って「完成」と言える。