役にたつエレクトロニクスの総合誌

トランジスタ技術

同時収録{{ shelf.also }}

特集

あの記事、どこだっけ?

収録{{ shelf.range }}・{{ shelf.articles }} 記事

困惑しているエンジニアのイラスト
{{ ft.refused }}
{{ br.error }}
読み込み中…

使い方

1

打つ

覚えている言い回しや型番を、そのまま打って「検索」

2

絞る

誌のチェックを触ると、すぐ結果に反映

3

たどる

「この号の目次」で同じ号の記事へ。言葉が浮かばなければ「号から探す」

押すと、その言葉で探します

{{ g.label }}
検索{{ demo.q }} 探しています… {{ demo.total.toLocaleString('ja-JP') }} 件・{{ demo.ms }} ミリ秒

{{ demo.error }}

  1. {{ issueLabel(it.issue) }} {{ it.article.title }}

このツールについて

これまで目次データの検索に使われてきたツールの不便を、ブラウザで解決するために作りました。

このツールこれまでの検索ツール
使える場所PC・スマホのブラウザWindows だけ
言葉が違うと意味の近い記事も出る見つからない
書き方の違いまとめて探す別の言葉として扱う
探せる誌トラ技・Interface・トラ技Jrトランジスタ技術

できること

ブラウザですぐ

PC でもスマホでも。インストールは要りません

書き方の違いを吸収

OPアンプ=オペアンプ=演算増幅器、センサ=センサー

意味の近い記事も

言葉が一致しなくても、近い記事を順位を付けて

型番に強い

途中の文字列からでも当たります

3誌をまとめて

トラ技(1964〜)・Interface(2009〜)・トラ技Jr

号から目次

年と号を選んで、目次をたどれます

仕組み

キーワードと意味の2つの経路で探し、順位を混ぜてから記事にまとめます。

検索語正規化全角→半角・小文字キーワード同義語展開LLM で作った辞書bi-gram 索引SQLite FTS5意味埋め込みruri-v3-30m・256次元k 近傍探索sqlite-vec(誌で分割)RRF で統合Σ 1/(60+順位)記事に集約 検索語正規化全角→半角・小文字キーワード意味同義語展開LLM で作った辞書埋め込みruri-v3-30mbi-gram 索引SQLite FTS5k 近傍探索sqlite-vecRRF で統合Σ 1/(60+順位)記事に集約
キーワード検索
SQLite FTS5 の索引。日本語は形態素解析をせず、2文字ずつ区切った bi-gram で索引します。
FTS5 組み込みの trigram は3文字未満の語(「電源」「抵抗」)を引けず、形態素解析は辞書に無い型番や新語を取りこぼすためです。
英数字の連なり(NE5532 など)は1語のまま扱います。検索語も同じ規則で区切り、bi-gram の並び順まで含めたフレーズとして照合するので(位置情報つきの索引)、単純な AND で出る誤ヒットが出ません。
表記ゆれ
2段で吸収します。1段目は機械的な正規化で、全角英数を半角に、大文字・小文字を同一視し、中黒(・)を落とします(「ラズベリー・パイ」=「ラズベリーパイ」)。
NFKC は「①」→「1」のように誌面の表記から離れるので使いません。
2段目は同義語辞書で、頻出語を LLM(Claude Opus)に渡して「同じものを指す語の組」を挙げさせ、索引で実際に当たる数を数えて裏付けの取れた組だけを採りました。
検索時は、辞書の語を含む検索語を「(電磁両立性 OR emc) AND 対策」のような MATCH 式に展開します。
意味検索
日本語の文埋め込みモデル ruri-v3-30m(256次元)でベクトルにし、sqlite-vec の vec0 仮想テーブルで k 近傍探索します。
誌を分割キー(partition key)にしてあるので、誌の絞り込みは近傍探索の内側で効きます(近傍を取った後に絞ると、件数が欠けるため)。
検索語のベクトル化は、モデルを読み込んだまま常駐する Python のプロセスが行い、1本あたり数十ミリ秒です。
順位の統合
キーワードと意味の2系統から上位100件ずつを取り、RRF(Reciprocal Rank Fusion)でまとめます。
スコアは Σ 1/(60+順位)。BM25 のスコアとベクトルの距離のように尺度の違う結果を、順位だけで混ぜられるのが利点です。
最後に記事単位へ集約し、記事名の索引にも当たった記事を引き上げます。
LLM の活用
検索に使う同義語辞書を、LLM(Claude Opus)で作っています(上の「表記ゆれ」の2段目)。
特徴
検索のたびに LLM を呼ばない構造にしたので、応答は 0.5 秒前後です。
構成
PHP 8.4(Slim 4)・SQLite(FTS5/sqlite-vec)・Python(埋め込み)・Vue 3。