コンテンツにスキップ

Blog

技術ブログを再開します

しばらく更新が止まっていたこのブログを、今日から少しずつ再開します。

3月までは技術的な取り組みを継続的に発信していましたが、その後は研究や特許に関わる、公開範囲を慎重に判断すべきテーマを扱う時間が増えました。そのため、表に出せる情報が限られ、ブログの更新からしばらく遠ざかっていました。

Ploneサイト実データでベクトル検索の枝刈りアルゴリズムを比較した結果、Voronoi分割が有力だった

2026-03-16の記事 で、テキスト embedding に対して Voronoi 分割による事前枝刈りが有効そうだという話を書きました。 今回はその続きとして、Plone サイトの実データで collective.vectorsearch の検索アルゴリズムを比較し、Voronoi 方式が実運用に近い条件でも有望であることを確認しました。

あわせて、2026-02-14の記事 で紹介した ITQ-LSH 系アルゴリズムについても、今回のデータ規模では精度面に課題があることが見えてきました。

AI時代の研究運用を支えるSAENMという考え方

これまで CMScomLab では、ベクトル検索の実験Graph RAG のPoC のように、小さな実験や試作を積み重ねながら考えを前に進めてきました。その中で強く感じるようになったのは、最終的な成果だけでは残らない知見が多くあり、試行錯誤の過程そのものをどう記録し、共有し、振り返れる形にしておくかがますます重要になっているということです。

Voronoi分割によるテキストEmbeddingの事前枝刈り実験とPlone実装への展開

2026-02-14の記事 では、collective.vectorsearch の初期リリースと、LSH Cascade PoC から取り込んだ近似検索の仕組みを紹介しました。 その後、2026-03-14の記事 で、顔画像の embedding に対して Voronoi 分割による事前枝刈りが有効であることを確認しています。

今回はこの流れを受けて、同じアプローチを テキスト embedding に適用できるかを検証しました。 結論から言うと、テキスト側でも Voronoi 分割を前段フィルタとして使える見込みが見えてきました。

Image Vector PoC: Voronoi分割によるFirestoreのベクトル検索最適化

本日は Image Vector PoC プロジェクトにおける技術的なブレイクスルーについて報告します。 Firestore を利用したベクトル検索において、Voronoi(ボロノイ)分割を用いた事前フィルタリングを導入し、検索コストとパフォーマンスを劇的に改善することに成功しました。

軽量Embeddingモデルの可能性と現実:Gemma-300M vs CPU推論

lsh-cascade-poc プロジェクトでは、これまでスケーラブルな検索システムの構築を目指して様々な実験を行ってきました。 今回は、GitHubリポジトリの Notebooks 91番以降 で実施した、最新の 軽量Embeddingモデル に関する実験結果と、そこから得られた知見を共有します。

2026年に入り、Embeddingモデルのトレンドは大きく変化しています。

Graph RAG と Temporal Knowledge Graph の実験:点から線へ

これまでの実験では、テキストや画像の「ベクトル検索」によって、類似情報を高速に見つける技術を検証してきました。 しかし、ベクトル検索だけでは「AとBの関係は?」「前回の会議から何が変わった?」といった、構造や時間を伴う質問には弱いという課題がありました。

そこで新たに Graph RAG (Retrieval-Augmented Generation) の実験プロジェクトを立ち上げ、特に「時系列情報(Time)」をグラフに組み込むアプローチを検証しました。

画像からテキスト生成(キャプション生成)の実験報告

前回までの記事で、画像のベクトル検索の実験を進めてきましたが、今回は「画像からテキスト(キャプション)」を生成するモデルの実験を行いました。 画像の内容を言語化することで、検索のキーワードマッチングや、画像の内容説明(アクセシビリティ向上)などへの応用が期待できます。

実験の詳細な結果は以下のノートブックにまとめてあります。

cmscom/image-vector-poc - 78-captioning-summary.ipynb

Image Vector プロジェクト進捗: 顔認識、ブラウザ実行、そして SigLIP 2

前回 2026-02-13 での報告以降、Image Vector プロジェクトでは新たな可能性を探るためにいくつかの重要な実験を行いました。今回はその進捗と成果について共有します。

1. 顔認識機能の到達点

まず、顔認識(Face Recognition)の実装について検証を行いました。

結論として、現在のOSSモデルを利用した顔認識機能は 非常に高いレベル に達していることが確認できました。 CMSにおいて「誰が写っているか」を自動でタグ付けしたり、特定の人物の写真を瞬時に検索したりする機能の実装において、現在のモデルは十分実用的な性能を持っています。これにより、単なる「類似画像検索」だけでなく、「人物検索」という強力な軸をシステムに組み込む準備が整いました。

2. Python と JavaScript の架け橋: Transformers.js

次に、アーキテクチャ面での大きな収穫です。ONNX Runtime と Transformers.js を用いた検証を行いました。

重要な発見は、Transformers.jsを使ったJSでの実装も十分に可能である という点です。具体的には、Python (PyTorch) で生成した画像ベクトルと、JavaScript (Transformers.js) で生成したテキスト検索クエリの埋め込みベクトルが完全な互換性を持つ ことが確認されました。

これは、重い画像処理やインデックス作成はサーバーサイド(Python)でバッチ処理しておき、ユーザーが検索窓に入力したキーワードのベクトル化は、サーバーを介さずにユーザーのブラウザ上(JavaScript)で完結させるという構成が可能であることを意味します。サーバー負荷を抑えつつ、高速な検索体験を提供できる可能性があります。

3. モデルの再考: SigLIP 2

最後に、より高性能なモデルとして SigLIP 2 の検証を行いました。

検証の結果、SigLIP 2 は前モデルと比較しても明確に良くなっている ことが確認できました。特に画像のニュアンスを捉える能力や、多言語での検索精度において期待が持てます。これを ONNX 化して利用することで、推論速度とモデルサイズのバランスを取りながら、より高精度な検索システムを構築できる見込みです。

今後の展望

今回の実験を通じて、顔認識の実用性、クライアントサイドでの推論の可能性、そして最新モデルによる性能向上が確認できました。今後はこれらの要素を統合し、より高度な画像検索システムの構築を目指していきます。