
たいていは既定の選択が正しい
キーワード検索は、客が自社の言葉を使わないときに破綻します。「しわにならないシャツ」と入力されても、カタログには「イージーケア」と書いてある。セマンティック検索は文字ではなく意味を比較して、この隙間を埋めます。
最初の衝動は専用のベクトルデータベースの導入です。しかし多くの商品カタログや文書群では、PostgreSQLのpgvector拡張で足ります。しかも軽視されがちな利点があります。ベクトルがデータと同じトランザクションの中にあることです。
なぜそれが重要か
商品が在庫切れになったとき、一つのトランザクションで行と埋め込みを同時に更新できます。ベクトルストアを分けると同期の問題を抱え込みます。古いベクトルは、エラーログではなく顧客のクレームとして表面化する種類の不具合です。
卒業すべきとき
専用ベクトルデータベースが報われるのは、大規模、同時クエリ負荷が高い、あるいはPostgresにない索引方式が要るときです。それは実在する境界で、到達したら越える価値があります。ただ、この問いを立てている多くのチームは、まだそこから遠い場所にいます。
実務メモ
- 出典を示せるよう、ベクトルの隣に原文を保存する。
- 埋め込みモデルを変えたら埋め込み直す。異なるモデルのベクトルは比較できません。
- セマンティック検索とキーワード検索を併用する。商品コードの完全一致が、曖昧な意味一致に負けてはいけません。
ToolGo Team
プロダクト & エンジニアリング
私たちは実用的なSaaSツールを構築し、製品の意思決定から技術的な詳細まで、学んだことを共有しています。

