テック技報最新号へ →
インフラ

SQLite / DuckDB: Vaporetto で日本語フルテキスト検索拡張を載せる

組み込み DB(SQLite・DuckDB)に軽量トークナイザ Vaporetto を足し、trigram 任せではない日本語 FTS(bm25 等)をローカル/Wasm でも試せる。

@hotchpotch · 2026-10-11
#infra#sqlite#duckdb#fts#japanese#search

どんなときに使う?

  • エージェントやローカルアプリで SQLite / DuckDB に日本語検索を足したい
  • サーバレス/単一ファイル DB のまま検索したい(外部検索エンジンを立てたくない)
  • ブラウザ上(DuckDB Wasm)でデモや軽い検索 UI を出したい

やり方(概要)

拡張の入口:

Vaporetto は点予測ベースで辞書なしモデルも取れ、サイズを抑えやすい。著者ブログでは約 2700 記事の SQLite FTS5 + vaporetto で bm25 検索が数 ms 台、という手触りが報告されている。

手順の骨格は「拡張を入れる → トークナイズ付き FTS テーブル/インデックスを作る → bm25 等でランキング」だが、API は各リポジトリの README を正とする。

注意点

  • 形態素解析の観点では、点予測(とくに辞書なし)は文脈依存分割で検索漏れリスクがある、という指摘あり。本番の大規模検索では一貫性のある分割方式も検討する
  • 件数が少ないと FTS / bm25 の旨味は薄い
  • 拡張のビルド・ロード方法は OS/配布形態で異なる

出典

X の元の投稿を開く