用 Jev 做「按语义搜索」的 grep 工具
作者用 Jev 逐行判断是否匹配语义,做出支持 AND/NOT、递归和上下文行的 semgrep,200 行日志不到 1 秒返回。
Jevのキラーアプリ、「意味で探す grep」を作った。 semgrep -e "顧客が怒っている" と打つと、"angry" も「怒」も含まない行まで拾ってきます。 正規表現の代わりに、TypeSafe AI の Jev(System One モデル)に 1 行ずつ「この行は○○の意味に合うか」を yes/no 確率で答えさせる。Jevの特性を活かして30 行をまとめて 1 リクエスト、200 行のログが 1 秒弱で返ります。依存ゼロ、Node 1 ファイル。 grepに準じるオプション体系。 ・-e A -e B で OR、-a で AND、-v で AND NOT ・-r で再帰、-l でファイル名だけ、-A/-B/-C で前後の行、--color ・確率の閾値は --level loose / strict で調整 ベクトル検索と何が違うかというと、否定検索もできるし、話題の近さではなく「命題が成り立つか」を見るところです。「返金してほしい」と「返金処理が完了しました」は埋め込みではほぼ同じ距離ですが、「顧客が返金を求めている」という意味で引くと 0.98 と 0.10 に分かれます。だから AND や NOT がそのままブール演算として効きます。「返金の話だが要求ではない行」なども 1 コマンドで検索できます。 問合せは「意味」でおこなうので、多言語検索が普通に可能。日本語と英語の区別もフランス語もロシア語も、その混在文書からも検索できます。仏・露・独・西・中・韓14行を4言語(日・英・仏・露)の意味クエリで検証した結果、取りこぼしも誤爆もゼロで、どの言語で意味を書いても同様に機能します。 以下で試せます。 npx @uehaj/semgrep -e "ネットワーク障害" app.log GitHub: https://github.com/uehaj/jev-semgrep #Jev #TypeSafe #grep #ClaudeCode