<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
    <channel>
        <title><![CDATA[A Day in the Life - 日記]]></title>
        <description><![CDATA[Yuichi Tateno による、日々の日記など]]></description>
        <link>https://secon.dev</link>
        <generator>RSS for Node</generator>
        <lastBuildDate>Sat, 03 Oct 2026 10:52:33 GMT</lastBuildDate>
        <atom:link href="https://secon.dev/feed" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[2026年10月3日]]></title>
            <description><![CDATA[<p>南が丘牧場へ。ベコ氏は歩けるようになって、牧場のどこでも楽しそう。犬を見つけては「わんわん」と指をさす、引き続き犬ブーム。ただ犬が近くに来すぎると、どうして良いのか分からず固まるのだが。</p>
<p>羊・ヤギふれあい広場的なところでは、怖がって泣いちゃうかもな、と思っていたのだが、羊のモフモフの毛並みが気に入ったのか、追いかけて果敢に触る。お気に入ったようで何より。休日だから、餌をあげる人が多く、餌を持っていると突進してくるのだが、餌がないと結構無関心、という距離感もちょうど良い感じだった。</p>
<p>土曜の開園直後は人もまだまばらで良いね。11時ごろには、もうだいぶ駐車場が混み始めていた。この日は天気も良く、近くてすぐ来れるのも最高である。</p>
<div class="photos photos-columns"><span itemscope="" itemtype="http://schema.org/Photograph"><a href="https://storage.googleapis.com/secons-site-images/photo/large/20261003_R0003405.webp"><img src="https://storage.googleapis.com/secons-site-images/photo/medium/20261003_R0003405.webp" class="photo" itemprop="image" /></a></span><span itemscope="" itemtype="http://schema.org/Photograph"><a href="https://storage.googleapis.com/secons-site-images/photo/large/20261003_R0003443.webp"><img src="https://storage.googleapis.com/secons-site-images/photo/medium/20261003_R0003443.webp" class="photo" itemprop="image" /></a></span></div>
<div class="photos photos-small"><span itemscope="" itemtype="http://schema.org/Photograph"><a href="https://storage.googleapis.com/secons-site-images/photo/large/20261003_R0003454.webp"><img src="https://storage.googleapis.com/secons-site-images/photo/medium/20261003_R0003454.webp" class="photo" itemprop="image" /></a></span></div>]]></description>
            <link>https://secon.dev/entry/2026/10/03/210000</link>
            <guid isPermaLink="false">/entry/2026/10/03/210000</guid>
            <dc:creator><![CDATA[secondlife / @hotchpotch / Yuichi Tateno]]></dc:creator>
            <pubDate>Sat, 03 Oct 2026 12:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[2026年10月2日]]></title>
            <description><![CDATA[<p>ベコ氏、親が飲んでいる炭酸水が気になっていたようで、一口飲むとなんだこれーと神妙な顔つき。口から溢れ出る水。かわいいなぁ。</p>
<hr>
<p>朝食。最近は八方だし、がよく食卓に並ぶ。</p>
<div class="photos photos-small"><span itemscope="" itemtype="http://schema.org/Photograph"><a href="https://storage.googleapis.com/secons-site-images/photo/large/20261003_L1005786.webp"><img src="https://storage.googleapis.com/secons-site-images/photo/medium/20261003_L1005786.webp" class="photo" itemprop="image" /></a></span></div>]]></description>
            <link>https://secon.dev/entry/2026/10/02/210000</link>
            <guid isPermaLink="false">/entry/2026/10/02/210000</guid>
            <dc:creator><![CDATA[secondlife / @hotchpotch / Yuichi Tateno]]></dc:creator>
            <pubDate>Fri, 02 Oct 2026 12:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[2026年10月1日]]></title>
            <description><![CDATA[<p>ここ数日、エーアイ中毒になっていたので、天気も良い日だしで、茶臼岳を散歩。山頂付近は風が強かったね。山頂には登らず、ロープウェイで山頂駅、鬼が首、峠の茶屋跡、歩いて下山、という私の定番ルート。はーデトックスデトックス。計2時間ほどの山散歩であった。</p>
<div class="photos photos-columns"><span itemscope="" itemtype="http://schema.org/Photograph"><a href="https://storage.googleapis.com/secons-site-images/photo/large/20261001_R0003369.webp"><img src="https://storage.googleapis.com/secons-site-images/photo/medium/20261001_R0003369.webp" class="photo" itemprop="image" /></a></span><span itemscope="" itemtype="http://schema.org/Photograph"><a href="https://storage.googleapis.com/secons-site-images/photo/large/20261001_R0003334.webp"><img src="https://storage.googleapis.com/secons-site-images/photo/medium/20261001_R0003334.webp" class="photo" itemprop="image" /></a></span></div>
<div class="photos photos-columns"><span itemscope="" itemtype="http://schema.org/Photograph"><a href="https://storage.googleapis.com/secons-site-images/photo/large/20261001_R0003347.webp"><img src="https://storage.googleapis.com/secons-site-images/photo/medium/20261001_R0003347.webp" class="photo" itemprop="image" /></a></span><span itemscope="" itemtype="http://schema.org/Photograph"><a href="https://storage.googleapis.com/secons-site-images/photo/large/20261001_R0003313.webp"><img src="https://storage.googleapis.com/secons-site-images/photo/medium/20261001_R0003313.webp" class="photo" itemprop="image" /></a></span></div>
<hr>
<p>鬼が首あたりからの、遠くの山々が連なるパノラマの風景も良いんだよなぁ。</p>
<div class="photos photos-medium"><span itemscope="" itemtype="http://schema.org/Photograph"><a href="https://storage.googleapis.com/secons-site-images/photo/large/20261001_R0003320.webp"><img src="https://storage.googleapis.com/secons-site-images/photo/medium/20261001_R0003320.webp" class="photo" itemprop="image" /></a></span></div>
<div class="photos photos-medium"><span itemscope="" itemtype="http://schema.org/Photograph"><a href="https://storage.googleapis.com/secons-site-images/photo/large/20261001_R0003354.webp"><img src="https://storage.googleapis.com/secons-site-images/photo/medium/20261001_R0003354.webp" class="photo" itemprop="image" /></a></span></div>
<hr>
<p>木々は徐々に葉が落ちたり、紅葉したりしだしていたり、小さなススキのような植物が見えたりと、すっかり秋の装い。</p>
<div class="photos photos-columns"><span itemscope="" itemtype="http://schema.org/Photograph"><a href="https://storage.googleapis.com/secons-site-images/photo/large/20261001_R0003365.webp"><img src="https://storage.googleapis.com/secons-site-images/photo/medium/20261001_R0003365.webp" class="photo" itemprop="image" /></a></span><span itemscope="" itemtype="http://schema.org/Photograph"><a href="https://storage.googleapis.com/secons-site-images/photo/large/20261001_R0003374.webp"><img src="https://storage.googleapis.com/secons-site-images/photo/medium/20261001_R0003374.webp" class="photo" itemprop="image" /></a></span></div>
<hr>
<p>下山後、子鹿の湯で温泉で疲れを癒す。昼食はお久しぶりのグリルシェフでハンバーグ。その後は那須SHOZOへ行く予定だったが、休業日だった、残念。基本休みなしなのだが、連休後などは休みがあったりする。ゆっくり休んでください。</p>
<div class="photos photos-small"><span itemscope="" itemtype="http://schema.org/Photograph"><a href="https://storage.googleapis.com/secons-site-images/photo/large/20261001_R0003388.webp"><img src="https://storage.googleapis.com/secons-site-images/photo/medium/20261001_R0003388.webp" class="photo" itemprop="image" /></a></span></div>
<hr>
<p>ベコ氏をお迎えに行った帰り道に、那須パラダイスヴィレッジへ。やたらとハローウィンに手が混んでいて、至る所でお化け屋敷のよう。ベコ氏はまだホラー物を「怖い」という認識ではなく、興味深そうにキョロキョロ見回っていた。</p>
<div class="photos photos-small"><span itemscope="" itemtype="http://schema.org/Photograph"><a href="https://storage.googleapis.com/secons-site-images/photo/large/20261001_R0003391.webp"><img src="https://storage.googleapis.com/secons-site-images/photo/medium/20261001_R0003391.webp" class="photo" itemprop="image" /></a></span></div>]]></description>
            <link>https://secon.dev/entry/2026/10/01/210000</link>
            <guid isPermaLink="false">/entry/2026/10/01/210000</guid>
            <dc:creator><![CDATA[secondlife / @hotchpotch / Yuichi Tateno]]></dc:creator>
            <pubDate>Thu, 01 Oct 2026 12:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[2026年9月30日]]></title>
            <description><![CDATA[<p>Jev っぽい System One Decision モデルを作るとするとどんな感じに作れるのじゃろうか、と小型のモデルをがっと作ってみる。英語だけだし幅広い汎化性能は持ち合わせて無いが、<a href="https://huggingface.co/spaces/hotchpotch/bekko-system-one-in-browser">ブラウザでもそこそこ動く</a>モデルが作れて満足。他にも<a href="https://huggingface.co/spaces/hotchpotch/S1MB-leaderboard">ベンチマーク作った</a>りデモサイト作ったり<a href="https://secon.dev/entry/2026/09/30/100000-bekko-system-one-v0-release/">記事書いた</a>りして、5日ぐらいかかってしまったのだけど、超小型のモデル制作だけなら2-3日で作れてしまった。エーアイ氏万歳である。</p>
<p>作ってみての感想は、そんなに難しくなくて、フロンティアLLMモデルを作っている各社なら、まぁ作れちゃうだろうなぁ。学習のための合成データセット作成がポイントなので、自分のところのモデル(成果物のライセンス気にしなくて良いし)と推論GPUを大量に使えリソースも潤沢だろうし。テキスト生成に比べたら確率生成は簡単なタスクだと思える。</p>
<p>画像への対応や、より安価で高速なモデルは予定調和として今後出てくるだろうけど、System One の使い道は、1 request でできることに閉じちゃう（だからこそ良い）ので、今の AI Agent のようなハーネス・環境含めて提供し学習のループを回し、といった付加価値を作ることが難しそう。とすると他のLLM 企業に模倣されて終わってしまうのでは。ちょうど OpenAI が Luna Decision 的なモデルを発表したようだしね。</p>
<p>TypeSafe AI は、Jev で、汎用 Classification モデルの需要があることを証明したことは価値があって素晴らしいと思うが、予定調和の進化だと他社に真似されて負けるだろうから、その先はどうなるんだろうね。自分が考えついてもないような視点でイノベーションを起こしてくれると面白いので、期待だね。</p>
<hr>
<p>K氏の日記を読んで作ろうと思った(妻が)、という長谷川あかり氏のレシピ、焦がし醤油のハヤシライス。シャバシャバ系。スープハヤシライスっぽい感じで、サラリと食べれる美味しさ。</p>
<div class="photos photos-small"><span itemscope="" itemtype="http://schema.org/Photograph"><a href="https://storage.googleapis.com/secons-site-images/photo/large/20260930_L1005782.webp"><img src="https://storage.googleapis.com/secons-site-images/photo/medium/20260930_L1005782.webp" class="photo" itemprop="image" /></a></span></div>]]></description>
            <link>https://secon.dev/entry/2026/09/30/210000</link>
            <guid isPermaLink="false">/entry/2026/09/30/210000</guid>
            <dc:creator><![CDATA[secondlife / @hotchpotch / Yuichi Tateno]]></dc:creator>
            <pubDate>Wed, 30 Sep 2026 12:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[ブラウザ上でも動く、超小型な System One Decision モデル bekko-system-one を公開]]></title>
            <description><![CDATA[<p>TypeSafe AI の System One Decision モデル、<a href="https://docs.typesafe.ai/concepts/system-one">Jev</a> が、汎用性能が非常に高く、いわゆる classification task で解ける課題なら LLM よりも圧倒的に安価・高速で話題ですね。</p>
<p>そこで今回、小型なモデルだとどれぐらいの性能が出せるのだろうと、System One Decision モデル の <a href="https://github.com/hotchpotch/bekko-system-one">bekko-system-one-v0</a>（以下 BS1）シリーズを制作してみました。汎化性能は Jev の方が圧倒的に上ですが、S1MB（System One Mosaic Benchmark）（注：著者作）では、小さなモデルながら、ほかの大きなサイズのモデル並みの結果が得られています。とりわけ、学習しているドメインのタスクでは、なかなかの精度で利用が可能です。</p>
<ul>
<li>🤗 <a href="https://huggingface.co/collections/hotchpotch/bekko-system-one-v0-6abc47eab9c4fe4ec83d9e30">bekko-system-one collection</a></li>
</ul>
<p>なお対応言語は、英語のみとなっています...。</p>
<h2>ブラウザ上で実行可能</h2>
<p>本モデル(英語のみ対応)は <a href="https://huggingface.co/hotchpotch/bekko-system-one-v0-17m">17M</a>、<a href="https://huggingface.co/hotchpotch/bekko-system-one-v0-68m">68M</a>、<a href="https://huggingface.co/hotchpotch/bekko-system-one-v0-400m">400M</a> パラメーターの3つのサイズのモデルを公開しており、とりわけ 17M や 68M の小型モデルは、ブラウザ上にモデルをロードし、CPU での推論も十分な速度で可能です。</p>
<ul>
<li><a href="https://huggingface.co/spaces/hotchpotch/bekko-system-one-in-browser">ブラウザ上でモデルを動かし、推論するデモ</a></li>
</ul>
<p><img src="https://storage.googleapis.com/secons-site-images/other/blog_images/20260930-bekko-s1-browser.webp" alt="bekko-system-one のブラウザデモ：17M モデルを CPU で実行した結果"></p>
<p>注意: なおこのデモは、BS1 モデルで解きやすいタスクを恣意的に選んでいるため、ぱっと見の性能は良さそうですが、Jev のような「幅広いタスクで高性能」なわけではないので、ご注意ください。</p>
<p>また、17M パラメーターというのは、総パラメーター数が約17Mで、そのうち埋め込みを除くパラメーター数は、たったの約4Mです（ここでは Active Parameters - AP と呼びます）。ブラウザ実行用に、token の lookup table だけを INT8 にしたものを ONNX へと変換しており、モデルファイル単体のサイズは、たったの約29MBとなります。</p>
<h2>評価ベンチマーク</h2>
<p>ブラウザで動いたとして、実際のモデルとしての性能はどんな感じでしょうか。というわけで評価をしてみました。<a href="https://huggingface.co/spaces/hotchpotch/S1MB-leaderboard">S1MB - System One Mosaic Benchmark</a> という、私作のベンチマークを使っています。このベンチマークは、後述のデータセットのうち、test set のデータを中心に、原則100ケースを抽出した、137個(Noul 59, Choice 57, Score 21)のベンチマークで構成されており、Noul、Choice、Score の3軸で評価しています。</p>
<p>S1MB については、<a href="https://huggingface.co/blog/hotchpotch/system-one-mosaic-benchmark/">S1MB記事</a>で書いているので、詳細は割愛しますが、総パラメーター数500M以下に絞ると以下のような結果です。BS1 も、超小型としては、かなり健闘しているのではないでしょうか。なお比較のために Jev 1.13 も載せています。</p>
<table>
<thead>
<tr>
<th>Model</th>
<th align="right">Avg</th>
<th align="right">Noul</th>
<th align="right">Choice</th>
<th align="right">Score</th>
<th align="right">Total Params</th>
<th align="right">Active Params</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="https://docs.typesafe.ai/models">Jev 1.13</a></td>
<td align="right">59.59</td>
<td align="right">64.63</td>
<td align="right">67.22</td>
<td align="right">46.92</td>
<td align="right">—</td>
<td align="right">—</td>
</tr>
<tr>
<td><a href="https://huggingface.co/hotchpotch/bekko-system-one-v0-400m">bekko-system-one-v0-400m</a></td>
<td align="right">50.60</td>
<td align="right">51.24</td>
<td align="right">61.32</td>
<td align="right">39.25</td>
<td align="right">395M</td>
<td align="right">343M</td>
</tr>
<tr>
<td><a href="https://huggingface.co/hotchpotch/bekko-system-one-v0-68m">bekko-system-one-v0-68m</a></td>
<td align="right">40.46</td>
<td align="right">42.91</td>
<td align="right">51.62</td>
<td align="right">26.85</td>
<td align="right">68M</td>
<td align="right">42M</td>
</tr>
<tr>
<td><a href="https://huggingface.co/hotchpotch/bekko-system-one-v0-17m">bekko-system-one-v0-17m</a></td>
<td align="right">27.57</td>
<td align="right">31.43</td>
<td align="right">35.57</td>
<td align="right">15.70</td>
<td align="right">17M</td>
<td align="right">4M</td>
</tr>
<tr>
<td><a href="https://huggingface.co/wfzyx/von">von</a></td>
<td align="right">16.21</td>
<td align="right">20.15</td>
<td align="right">23.99</td>
<td align="right">4.48</td>
<td align="right">395M</td>
<td align="right">343M</td>
</tr>
<tr>
<td><a href="https://huggingface.co/convaiinnovations/laya-typed-decisions">laya-typed-decisions</a></td>
<td align="right">15.00</td>
<td align="right">20.06</td>
<td align="right">18.93</td>
<td align="right">5.99</td>
<td align="right">421M</td>
<td align="right">370M</td>
</tr>
<tr>
<td><a href="https://huggingface.co/convaiinnovations/laya">laya</a></td>
<td align="right">13.36</td>
<td align="right">20.19</td>
<td align="right">16.31</td>
<td align="right">3.58</td>
<td align="right">421M</td>
<td align="right">370M</td>
</tr>
<tr>
<td><a href="https://huggingface.co/convaiinnovations/laya-multilingual">laya-multilingual</a></td>
<td align="right">9.28</td>
<td align="right">14.01</td>
<td align="right">13.03</td>
<td align="right">0.79</td>
<td align="right">322M</td>
<td align="right">125M</td>
</tr>
</tbody>
</table>
<p>AvgはNoul・Choice・Scoreの調整済みスコアを等重みで平均した値です。各スコアは高いほど良く、正解率そのものではありません。</p>
<p>しかしながら、S1MB に含まれる「汎化性能を計測する」ベンチマーク(GPT-6-Astra で生成した合成データセット)では、BS1 モデルは圧倒的に性能が悪いです。これは「特定ドメインを学習したデータセットなら、ある程度の性能は出るが、自由な指示や未知のドメインについては弱い」と言えるでしょう。なので、今回公開した BS1 も「汎化性能を持った System One Decision モデルに達していない」ことから version 0 として、<code>-v0</code> suffix をつけています。</p>
<p>全体評価と同じモデルについて、汎化性能の6ベンチマークに絞った結果です。Avg順に並べています。</p>
<table>
<thead>
<tr>
<th>Model</th>
<th align="right">Avg</th>
<th align="right">General Noul</th>
<th align="right">General Choice</th>
<th align="right">General Score</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="https://docs.typesafe.ai/models">Jev 1.13</a></td>
<td align="right">96.27</td>
<td align="right">99.00</td>
<td align="right">98.68</td>
<td align="right">91.14</td>
</tr>
<tr>
<td><a href="https://huggingface.co/hotchpotch/bekko-system-one-v0-400m">bekko-system-one-v0-400m</a></td>
<td align="right">54.48</td>
<td align="right">52.00</td>
<td align="right">80.30</td>
<td align="right">31.14</td>
</tr>
<tr>
<td><a href="https://huggingface.co/wfzyx/von">von</a></td>
<td align="right">43.19</td>
<td align="right">41.00</td>
<td align="right">65.89</td>
<td align="right">22.67</td>
</tr>
<tr>
<td><a href="https://huggingface.co/hotchpotch/bekko-system-one-v0-68m">bekko-system-one-v0-68m</a></td>
<td align="right">32.48</td>
<td align="right">31.00</td>
<td align="right">57.52</td>
<td align="right">8.90</td>
</tr>
<tr>
<td><a href="https://huggingface.co/convaiinnovations/laya-typed-decisions">laya-typed-decisions</a></td>
<td align="right">31.82</td>
<td align="right">22.00</td>
<td align="right">58.80</td>
<td align="right">14.67</td>
</tr>
<tr>
<td><a href="https://huggingface.co/convaiinnovations/laya">laya</a></td>
<td align="right">26.50</td>
<td align="right">9.00</td>
<td align="right">54.83</td>
<td align="right">15.67</td>
</tr>
<tr>
<td><a href="https://huggingface.co/hotchpotch/bekko-system-one-v0-17m">bekko-system-one-v0-17m</a></td>
<td align="right">18.96</td>
<td align="right">15.00</td>
<td align="right">39.11</td>
<td align="right">2.76</td>
</tr>
<tr>
<td><a href="https://huggingface.co/convaiinnovations/laya-multilingual">laya-multilingual</a></td>
<td align="right">14.47</td>
<td align="right">6.00</td>
<td align="right">36.67</td>
<td align="right">0.75</td>
</tr>
</tbody>
</table>
<p>なお、Jev はドメイン特化性能（特別にそのドメインを学習したわけではないのに、すごいですね）も、汎化性能も、特筆したスコアですね。とりわけ汎化性能のスコアについては、ほぼほぼ満点と言えるでしょう。つまり、汎化性能が高い System One Decision モデルを名乗るには、最低限この汎化性能ベンチマークで、Jev 並みのスコア（つまりほぼ満点）を出せないと、あまり意味がないと思っています。</p>
<h2>モデルサイズと推論速度</h2>
<p>BS1 モデルで、特筆すべきことはモデルサイズと推論速度です。GPU（RTX 5090）を使ったS1MBの26,269件の評価処理は、17Mで約13.33秒、68Mで約34.04秒、400Mで約132.97秒（約2分13秒）でした。17Mでは、モデルロードと各ベンチマークのデータ読み込みなどを含む計測区間の合計でも約21.38秒です。冒頭のデモのように、ブラウザ上でも現実的に動きます。</p>
<p>なおJevはAPI経由となり、通信待ちなどを含む各ベンチマークの評価時間の合計は約58分37秒でした。APIの応答時間はタイミングによって前後するでしょう。ここで示した値は評価処理の計測値で、純粋なモデル計算だけの時間ではありません。また、17Mの約21.38秒もwarmupなどを除く区間の合算で、コマンド開始から終了までの時間ではありません。</p>
<h2>技術アーキテクチャでの取り組み</h2>
<p>Bekko System One（以下 BS1）で工夫したのは、複数の選択肢を判定するときに、共通する入力の処理を使い回すことです。その方法の前に、まず一般的な encoder model で、Jev のような処理をする、よくある方法の二つを解説しましょう。</p>
<h3>cross encoder</h3>
<p>通常の双方向 encoder を使う cross encoder では、以下のように、共通する入力と選択肢を組み合わせて処理します。特殊トークンは模式的な表記です。</p>
<pre><code class="hljs language-text">[CLS] {state} {instruction} [SEP] {criteria A} [SEP]
[CLS] {state} {instruction} [SEP] {criteria B} [SEP]
[CLS] {state} {instruction} [SEP] {criteria C} [SEP]</code></pre>
<p>先頭の CLS トークンの表現や、トークンの表現を平均したベクトル（mean pooling）を、学習済みの head に渡してスコアを求めます。情報検索の reranker でも広く使われている方式です。</p>
<p>入力と選択肢がお互いを参照できるため、細かな対応関係を捉えられます。しかしながら、state が長いと、同じ文章を選択肢の数だけ処理することになります。前半の表現も後半の選択肢によって変わるため、前半が同じ文字列でも、途中の計算結果をそのまま使い回せないのです。</p>
<p>なお情報検索の reranker では、前半に配置する検索クエリが短いことがほとんどのため、共有による計算量削減の効果が小さく、cross encoder でも良いケースが多いですね。</p>
<h3>listwise encoder</h3>
<p>それなら、選択肢をまとめて一回で処理しちゃおう、という方法もあります。全候補を連結する listwise 方式では、例えば以下のように入力します。</p>
<pre><code class="hljs language-text">{state} {instruction} [SEP]
{criteria A} [SEP] {criteria B} [SEP] {criteria C} [SEP]</code></pre>
<p>候補ごとの表現や候補前後の特殊トークンを pooling するなどして、スコアを求めます。共通部分を一度で処理でき、選択肢同士も参照できるのが利点です。</p>
<p>一方、候補が多いと入力全体が長くなります。全トークン間で attention を計算する場合、その計算量は長さの二乗に比例するため、多数の候補をまとめると負担が増えます。cross encoder より常に遅いということではなく、文章の長さや候補数によって向き不向きがあります。</p>
<h3>BS1 の方法 - 共有 prefix</h3>
<p>BS1 では、state と instruction を一つの共有部分（prefix）として処理し、各層の Key/Value、いわゆる K/V を保存して使い回します。</p>
<pre><code class="hljs language-text">{state} {instruction} → 各層の共有 K/V
                          ├─ {criteria A} → score A
                          ├─ {criteria B} → score B
                          └─ {criteria C} → score C</code></pre>
<p>普通の cross encoder と何が違うの？と思われるかもしれませんが、ここでは参照できる範囲を変えています。共有 prefix は選択肢を参照せず、各選択肢は共有 prefix と自分自身だけを参照します。これなら、選択肢が変わっても共有部分の計算結果は変わらないため、一度計算した K/V を再利用できます。</p>
<p>LLM の KV cache と同じように K/V を保存しますが、次のトークンを一つずつ生成するわけではありません。共有部分を処理した後、各選択肢を並列に処理し、候補側の表現を mean pooling して head からスコアを求めます。</p>
<p>候補側だけを pooling していますが、候補の文章しか見ていないわけではありません。各候補は各層で共有部分を参照するため、state と instruction を踏まえた表現になっています。一方、共有部分の先頭に置いた CLS トークンは候補を参照できないので、その表現だけでは候補ごとの判定はできません。</p>
<p>これによって、長い state と instruction を選択肢ごとに処理し直す必要がなくなります。ただし、通常の cross encoder と同じ計算を、そのまま高速化したものではありません。通常の cross encoder では、候補に応じて入力側の表現も変わり、その情報を候補側が再び参照できます。BS1 では、この相互のやり取りを制限する代わりに、共有部分の計算を使い回しています。</p>
<p>そのぶん、細かな対応関係を捉える自由度は通常の cross encoder の方が高いと考えられます。ただ、実際の精度差はタスクや学習条件にもよるでしょう。</p>
<p>なお、state と instruction はまとめて双方向に処理しています。state だけを独立してキャッシュしているわけではないため、instruction を変えた場合は共有部分を再計算します。</p>
<p>また、今回は、criteria 同士が参照できるような attention は含めてません。本来、例えば Choice のようなケースですと、他の criteria を参照した上で回答した方が精度がありそうですが、短時間で試しただけでは、精度が上がる学習ができなかったです。なおこれは無理だ、と言っているわけではなく、私が試した方法でうまくいかなかっただけの可能性も十分あるでしょう。</p>
<h2>大元の base model</h2>
<p>大元の base model としては、<a href="https://huggingface.co/answerdotai/ModernBERT-base">ModernBERT</a> アーキテクチャの英語高性能モデルである <a href="https://arxiv.org/abs/2507.11412">Ettin-encoder</a> を、さらに教師 reranker モデルを用い cross encoder として学習した <a href="https://huggingface.co/cross-encoder/ettin-reranker-17m-v1">Ettin-reranker</a> を利用しています。</p>
<p>ModernBERT などの MLM、いわゆる pretrained model の状態では、検索クエリとドキュメントの関連度を直接スコア化するようには学習していません。情報検索向けデータを学習した Dense Embedding モデルや、cross encoder モデルでは、文章とドキュメントの関連性を理解しているため、今回はすでにそれらを学習済みの Ettin-reranker を使っています。小型ながら、英語 rerank 性能は非常に高いです。今回の BS1 では、Ettin-reranker を base model として用い、追加学習を行いました。</p>
<p>以下は Ettin-encoder、Ettin-reranker を base model とし、各データセットに上限を適用した学習データの全量を、同じ条件で学習させた対照実験の結果です。68Mではreranker初期化が総合CE・各型のaccuracyで良く、17Mでは総合CEは僅差で、Noul・Choiceはreranker、Scoreはencoderが良い結果でした。</p>
<table>
<thead>
<tr>
<th>サイズ</th>
<th>初期化モデル</th>
<th align="right">総合CE ↓</th>
<th align="right">Noul accuracy ↑</th>
<th align="right">Choice accuracy ↑</th>
<th align="right">Score accuracy ↑</th>
</tr>
</thead>
<tbody>
<tr>
<td>17M</td>
<td>Ettin-encoder</td>
<td align="right">0.8694</td>
<td align="right">68.71%</td>
<td align="right">60.14%</td>
<td align="right">56.57%</td>
</tr>
<tr>
<td>17M</td>
<td>Ettin-reranker</td>
<td align="right">0.8713</td>
<td align="right">69.88%</td>
<td align="right">60.77%</td>
<td align="right">53.88%</td>
</tr>
<tr>
<td>68M</td>
<td>Ettin-encoder</td>
<td align="right">0.7625</td>
<td align="right">72.87%</td>
<td align="right">69.78%</td>
<td align="right">58.16%</td>
</tr>
<tr>
<td>68M</td>
<td>Ettin-reranker</td>
<td align="right">0.7180</td>
<td align="right">77.01%</td>
<td align="right">71.13%</td>
<td align="right">61.34%</td>
</tr>
</tbody>
</table>
<p>CEは小さいほど良く、accuracyは大きいほど良い指標です。データセットごとに集計し、二つの入力順序の結果を平均しています。前掲の調整済みスコアとは指標が異なります。各条件1 seedでの比較です。</p>
<h2>データセット</h2>
<p>データセットでは <a href="https://huggingface.co/datasets/hotchpotch/bekko-system-one-dataset-v0">hotchpotch/bekko-system-one-dataset-v0</a> を利用しています。このデータセットは、既存の NLP や情報検索関連のデータセットを、Noul、Choice、Score の3形式として学習しやすいように変換した 153 個の学習データセットで、training set は約659万ケースとなっています。一部は合成データセットも追加してあります。なお、このデータセットの test set は S1MB のベンチマークにも転用しているので、同じドメインの training set で学習した BS1 は S1MB の一部ベンチマークのスコアが上がりやすくなっています。</p>
<p>BS1 では、このデータセットを用いて学習を行いました。学習には RTX 5090 を用い、17M の学習では、たった2時間で学習を終えました。なお 68M では5.5時間、400M では約25時間でした。</p>
<h2>学習のハイパーパラメーター</h2>
<p>学習のハイパーパラメーターやデータセットの件数などは、細かくは解説しませんが、<a href="https://arxiv.org/abs/2607.25180v1">bekko-embedding 論文</a>（私作の、超小型マルチリンガル dense retrieval model の論文です）で書かれている知見を主に、いくつかパラメーターを試し、その範囲で良い結果が得られた値を使っています。</p>
<table>
<thead>
<tr>
<th>項目</th>
<th>17M</th>
<th>68M</th>
<th>400M</th>
</tr>
</thead>
<tbody>
<tr>
<td>Optimizer</td>
<td>AdamW</td>
<td>AdamW</td>
<td>AdamW</td>
</tr>
<tr>
<td>Batch size</td>
<td>512</td>
<td>512</td>
<td>512</td>
</tr>
<tr>
<td>Encoder learning rate</td>
<td>1e-4</td>
<td>3e-5</td>
<td>1e-5</td>
</tr>
<tr>
<td>Head learning rate</td>
<td>5e-4</td>
<td>2e-4</td>
<td>2e-4</td>
</tr>
<tr>
<td>Weight decay</td>
<td>0.01</td>
<td>0.01</td>
<td>0.01</td>
</tr>
<tr>
<td>Warmup ratio</td>
<td>10%</td>
<td>10%</td>
<td>10%</td>
</tr>
<tr>
<td>Learning-rate schedule</td>
<td>Cosine</td>
<td>Cosine</td>
<td>Cosine</td>
</tr>
<tr>
<td>Query / candidate上限</td>
<td>4,096 / 2,048 tokens</td>
<td>4,096 / 2,048 tokens</td>
<td>4,096 / 2,048 tokens</td>
</tr>
</tbody>
</table>
<p>学習用の実装も公開しているので、この実装を使うことで、同様のモデルを学習可能です。興味がある方は、ご利用ください。</p>
<ul>
<li><a href="https://github.com/hotchpotch/bekko-system-one">bekko-system-one：学習・推論コード</a></li>
</ul>
<h2>超小型の System One Decision モデルは実現可能なのか？</h2>
<p>将来は、S1MB の汎化性能ベンチマークでも Jev 並みのスコアに達する、アクティブなパラメーターサイズが100M以下といった、超小型なモデルも可能である、と思っています。それを達成するための、最も重要なことは、学習に必要な高品質な合成データセットです。</p>
<p>TypeSafe AI CEO の Diogo Almeida 氏も「<a href="https://x.com/CompleteSkeptic/status/2100617775823966680">100% of our data is synthetic (but not the type of crap that is just spit out from an LLM obviously)</a>」と言っているように、Noul、Choice、Score で、ありとあらゆる質問と適切なスコアの合成データセットが用意できれば、超小型モデルも実現可能だと思っています。どうしても「モデルアーキテクチャ」に目線が行きがちですが、高品質で齟齬がない多様な合成データセットをどのように作り、それをどのように学習するか、が肝心でしょう。</p>
<p>実際に、私作のマルチリンガル情報検索モデルである <a href="https://huggingface.co/hotchpotch/bekko-embedding-v1-a8m">bekko-embedding</a> シリーズでは、10億以上のデータ（うち1.6億件が合成データセット）を、巨大バッチで学習させることにより、アクティブパラメーターサイズが 8M、25M という超小型サイズのモデルで数倍〜数十倍の情報検索モデルに匹敵する情報検索モデルが作れています。</p>
<p>続いての重要なことは、強力な base model の登場です。実用的なテキスト生成能力を持つ LLM（decoder）を超小型にするのは難しいため、文字列生成にこだわらなければ、もっと小型で性能が良い base model が作れるでしょう。ModernBERT はその例だと思いますが、現状のさらに発展し続けている LLM のモデルアーキテクチャを使い、さらに小型モデルでより良いアーキテクチャと、大量の多様なデータを学習させた base model があれば、その継続タスクの学習に効いてくるでしょう。ただし、合成データセットの方が重要度は非常に高いとは思っています。</p>
<h2>終わりに</h2>
<p>TypeSafe AI の System One Decision モデル、Jev の登場により、汎化性能が高い Classification model の有益性が証明されました。TypeSafe AI の素晴らしい点は、中途半端な汎化性能で出すのでなく、フロンティア LLM に並ぶ性能の超汎化性能を持つモデルを作り上げ、出したことでしょう。</p>
<p>Classification で解決できる課題は、思った以上に広いです。BERT 以降、分類やスコア付けなどの NLP タスクでは Transformer encoder が広く使われてきました。</p>
<p>本記事では、学習したタスクなら、ブラウザ上でも動くほど小さなモデルである程度の精度を出せる、bekko-system-one-v0 を作ったお話でした。学習済みのタスクで小型モデルを試したり、独自データで追加学習したりするための出発点として、モデル・データセット・学習コードを公開しています。</p>
<p>幅広い未知のタスクへの対応は、今後の課題です。前項で述べたとおり、大量の良質なデータセットや、小型モデルアーキテクチャの進化により、十分な汎化性能を持った System One Decision モデルは、きっと開発されるはずです。</p>
<p>この bekko-system-one-v0 が、何らかの価値につながれば幸いです。</p>
<h1>参考URL</h1>
<h2>bekko-system-one</h2>
<ul>
<li><a href="https://huggingface.co/collections/hotchpotch/bekko-system-one-v0-6abc47eab9c4fe4ec83d9e30">bekko-system-one collection</a></li>
<li><a href="https://huggingface.co/hotchpotch/bekko-system-one-v0-17m">bekko-system-one-v0-17m</a></li>
<li><a href="https://huggingface.co/hotchpotch/bekko-system-one-v0-68m">bekko-system-one-v0-68m</a></li>
<li><a href="https://huggingface.co/hotchpotch/bekko-system-one-v0-400m">bekko-system-one-v0-400m</a></li>
<li><a href="https://huggingface.co/spaces/hotchpotch/bekko-system-one-in-browser">ブラウザデモ</a></li>
<li><a href="https://github.com/hotchpotch/bekko-system-one">学習・推論コード</a></li>
<li><a href="https://huggingface.co/datasets/hotchpotch/bekko-system-one-dataset-v0">学習データセット</a></li>
</ul>
<h2>S1MB</h2>
<ul>
<li><a href="https://github.com/hotchpotch/S1MB">評価コード</a></li>
<li><a href="https://huggingface.co/datasets/hotchpotch/s1mb-dataset">評価データセット</a></li>
<li><a href="https://huggingface.co/datasets/hotchpotch/s1mb-result">評価結果リポジトリ</a></li>
<li><a href="https://huggingface.co/spaces/hotchpotch/S1MB-leaderboard">Leaderboard</a></li>
<li><a href="https://huggingface.co/blog/hotchpotch/system-one-mosaic-benchmark/">S1MB の紹介記事</a></li>
</ul>
<h2>base model・関連モデル・資料</h2>
<ul>
<li><a href="https://docs.typesafe.ai/concepts/system-one">TypeSafe AI — System One / Jev</a></li>
<li><a href="https://docs.typesafe.ai/models">TypeSafe AI — モデル一覧</a></li>
<li><a href="https://x.com/CompleteSkeptic/status/2100617775823966680">Diogo Almeida 氏の合成データについての投稿</a></li>
<li><a href="https://github.com/NandhaKishorM/laya">Laya：コード</a> / <a href="https://huggingface.co/convaiinnovations/laya">モデル</a></li>
<li><a href="https://huggingface.co/answerdotai/ModernBERT-base">ModernBERT-base</a></li>
<li><a href="https://arxiv.org/abs/2507.11412">Ettin：Seq vs Seq 論文</a></li>
<li><a href="https://huggingface.co/cross-encoder/ettin-reranker-17m-v1">Ettin-reranker-17m-v1</a></li>
<li><a href="https://huggingface.co/cross-encoder/ettin-reranker-68m-v1">Ettin-reranker-68m-v1</a></li>
<li><a href="https://huggingface.co/cross-encoder/ettin-reranker-400m-v1">Ettin-reranker-400m-v1</a></li>
<li><a href="https://huggingface.co/hotchpotch/bekko-embedding-v1-a8m">bekko-embedding-v1-a8m</a></li>
<li><a href="https://huggingface.co/hotchpotch/bekko-embedding-v1-a25m">bekko-embedding-v1-a25m</a></li>
<li><a href="https://arxiv.org/abs/2607.25180v1">Bekko Embedding 論文</a></li>
<li><a href="https://www.sbert.net/examples/cross_encoder/applications/README.html">Sentence Transformers — Cross-Encoders</a></li>
</ul>]]></description>
            <link>https://secon.dev/entry/2026/09/30/100000-bekko-system-one-v0-release</link>
            <guid isPermaLink="false">/entry/2026/09/30/100000-bekko-system-one-v0-release</guid>
            <dc:creator><![CDATA[secondlife / @hotchpotch / Yuichi Tateno]]></dc:creator>
            <pubDate>Wed, 30 Sep 2026 01:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[2026年9月29日]]></title>
            <description><![CDATA[<p>そろそろ免許更新に行かねばなー、と警察署へ。優良ドライバー講習ビデオを見る。最初に不幸な話があって、以前見た記憶では「人が亡くなってしまって、相手の家族も不幸、自分も不幸、慰謝料を払うために両親が自宅や土地を売って不幸の連鎖」みたいな話だった気がしていたが、今回は「小学校1年生の子どもが通学中、何気ない近所の道路で脇見運転で亡くなった。その後、家から亡くなった子どもが生前大切にしまっていた、朝顔の種が出てきた。子供の学校の校長先生に、交通安全を願ってこのタネを植えてほしいと話したら、その学校では交通安全の朝顔を植えるようになった。」みたいな話で、思わず涙が出そうになっちゃったよ。</p>
<p><a href="https://www.city.adachi.tokyo.jp/hodo/houdou240206.html">けんちゃんの朝顔（あさがお交通安全プロジェクト）</a>というんだね。襟を正して運転しないと。</p>
<hr>
<p>運転免許は、マイナ免許証を発行してもらう。普通の免許証も発行でき、マイナカードでも、免許書でも、どちらか携帯していればOKになって良いね。</p>
<hr>
<p>せっかくなので、警察署近く(ではないが)の那須パラダイスヴィレッジで作業する。WiFi 使えるし、平日はお客もそんなに多くないしで、快適。こっち方面で作業したい時は良い場所だなー。</p>
<div class="photos photos-small"><span itemscope="" itemtype="http://schema.org/Photograph"><a href="https://storage.googleapis.com/secons-site-images/photo/large/20260930_R0003295.webp"><img src="https://storage.googleapis.com/secons-site-images/photo/medium/20260930_R0003295.webp" class="photo" itemprop="image" /></a></span></div>
<hr>
<p>遅めの昼食は、麺'sラッキーパンチで、店名にもなっている「ラッキーパンチ」を始めていただく。辛いもつ入りラーメン。旨辛っ〜〜〜。</p>
<div class="photos photos-small"><span itemscope="" itemtype="http://schema.org/Photograph"><a href="https://storage.googleapis.com/secons-site-images/photo/large/20260930_R0003301.webp"><img src="https://storage.googleapis.com/secons-site-images/photo/medium/20260930_R0003301.webp" class="photo" itemprop="image" /></a></span></div>]]></description>
            <link>https://secon.dev/entry/2026/09/29/210000</link>
            <guid isPermaLink="false">/entry/2026/09/29/210000</guid>
            <dc:creator><![CDATA[secondlife / @hotchpotch / Yuichi Tateno]]></dc:creator>
            <pubDate>Tue, 29 Sep 2026 12:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[2026年9月28日]]></title>
            <description><![CDATA[<p>最近、さくらももこ氏のエッセイをよく読んでいるのだが、その中で子供の頃、夏祭りが無条件でめちゃくちゃ楽しみ、金魚すくい・買い食い、そしてその後家族で外で夕食を食べる、夏祭りは夏休みのうちに何回もある、ああ楽しみすぎる、という「しみじみとした、ふつうの幸せ」を書いた回があって、ほっこりする。エッセイの文章はもっと断然淡々とした上手さがあって良いんだけどね。</p>
<p>こういう、何気ない日々のふつうの幸せの話が、時々友人の日記などに書かれるのだけど、読むたびに心温まるのであった。</p>
<hr>
<p>そしてさくらももこ氏のエッセイ本はたくさん出ていて、どの本に書かれた話だっけ、というのが思い出せなかったが、エーアイ氏に雑に聞いたら速攻正解を出してきてすごいな…。<a href="https://ja.wikipedia.org/wiki/%E3%81%BE%E3%82%8B%E5%AD%90%E3%81%A0%E3%81%A3%E3%81%9F#cite_note-5">「まる子だった」の「七夕祭り」の回</a>だった。エーアイ氏もすごいが、wikipedia にエッセイの収録の概要をコツコツとまとめた人がすごいね。</p>
<hr>
<p>ボールプール。100均のボールなので、もっと増やししたいが、ベコ氏がプールごとひっくり返して毎度片付けが大変なのであまり増やせない。ひよこの形のボール（ではないが）も8つほどあって、形が認識できるので、取り出す遊びを楽しんでいる。</p>
<div class="photos photos-small"><span itemscope="" itemtype="http://schema.org/Photograph"><a href="https://storage.googleapis.com/secons-site-images/photo/large/20260930_L1005784.webp"><img src="https://storage.googleapis.com/secons-site-images/photo/medium/20260930_L1005784.webp" class="photo" itemprop="image" /></a></span></div>
<hr>
<p>白河ラーメンが食べたいぞ、ということで焔に。見た目油どっぷり、だがスルッと食べれちゃう。おいし〜〜。</p>
<div class="photos photos-small"><span itemscope="" itemtype="http://schema.org/Photograph"><a href="https://storage.googleapis.com/secons-site-images/photo/large/20260930_R0003294.webp"><img src="https://storage.googleapis.com/secons-site-images/photo/medium/20260930_R0003294.webp" class="photo" itemprop="image" /></a></span></div>]]></description>
            <link>https://secon.dev/entry/2026/09/28/210000</link>
            <guid isPermaLink="false">/entry/2026/09/28/210000</guid>
            <dc:creator><![CDATA[secondlife / @hotchpotch / Yuichi Tateno]]></dc:creator>
            <pubDate>Mon, 28 Sep 2026 12:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[2026年9月27日]]></title>
            <description><![CDATA[<p>天気が良さそうなら猪苗代へ、と考えていたが、曇り時々晴れな感じになったので、予定通り猪苗代へ。まずは猪苗代観光船に乗る。ベコ氏はすっかり歩けるようになったので、トテトテトテトテと楽しそう。窓から吹き込む風、水飛沫、外の景色、何もかもが新鮮で楽しそう。幸せである。</p>
<p>猪苗代観光船、何度も猪苗代湖に来ている割に一度も乗ったことがなかったのだけど、大満足だったなぁ。また乗りたいね。今度は晴れの日の磐梯山を船から眺めたいぞ（この日は曇りで、山頂付近は見えなかった）。</p>
<div class="photos photos-columns"><span itemscope="" itemtype="http://schema.org/Photograph"><a href="https://storage.googleapis.com/secons-site-images/photo/large/20260927_L1005703.webp"><img src="https://storage.googleapis.com/secons-site-images/photo/medium/20260927_L1005703.webp" class="photo" itemprop="image" /></a></span><span itemscope="" itemtype="http://schema.org/Photograph"><a href="https://storage.googleapis.com/secons-site-images/photo/large/20260927_L1005738.webp"><img src="https://storage.googleapis.com/secons-site-images/photo/medium/20260927_L1005738.webp" class="photo" itemprop="image" /></a></span></div>
<div class="photos photos-columns"><span itemscope="" itemtype="http://schema.org/Photograph"><a href="https://storage.googleapis.com/secons-site-images/photo/large/20260927_L1005580.webp"><img src="https://storage.googleapis.com/secons-site-images/photo/medium/20260927_L1005580.webp" class="photo" itemprop="image" /></a></span><span itemscope="" itemtype="http://schema.org/Photograph"><a href="https://storage.googleapis.com/secons-site-images/photo/large/20260927_L1005709.webp"><img src="https://storage.googleapis.com/secons-site-images/photo/medium/20260927_L1005709.webp" class="photo" itemprop="image" /></a></span></div>
<div class="photos photos-columns"><span itemscope="" itemtype="http://schema.org/Photograph"><a href="https://storage.googleapis.com/secons-site-images/photo/large/20260927_L1005593.webp"><img src="https://storage.googleapis.com/secons-site-images/photo/medium/20260927_L1005593.webp" class="photo" itemprop="image" /></a></span><span itemscope="" itemtype="http://schema.org/Photograph"><a href="https://storage.googleapis.com/secons-site-images/photo/large/20260927_L1005735.webp"><img src="https://storage.googleapis.com/secons-site-images/photo/medium/20260927_L1005735.webp" class="photo" itemprop="image" /></a></span></div>
<hr>
<p>早めの昼食は、猪苗代観光船のすぐそばのMINATOYAのパン屋、みなとやベーカリー猪苗代で。パンとエスプレッソ、という有名店が監修しているらしい。とりわけ、しらすパンが美味しいかったなー。たくさんある窓際の席からは、猪苗代湖が見れて素晴らし。横浜・湘南あたりのようだ。家からだと海は割と遠いが、海のような猪苗代にすぐ(?)来れてこれまた最高。</p>
<div class="photos photos-small"><span itemscope="" itemtype="http://schema.org/Photograph"><a href="https://storage.googleapis.com/secons-site-images/photo/large/20260927_L1005755.webp"><img src="https://storage.googleapis.com/secons-site-images/photo/medium/20260927_L1005755.webp" class="photo" itemprop="image" /></a></span></div>
<hr>
<p>亀ケ城公園散歩。散歩すると、興味があるものを立ち止まっては拾い、でなかなか進まない。ほんとどこでも楽しそうだ。</p>
<div class="photos photos-small"><span itemscope="" itemtype="http://schema.org/Photograph"><a href="https://storage.googleapis.com/secons-site-images/photo/large/20260927_R0003292.webp"><img src="https://storage.googleapis.com/secons-site-images/photo/medium/20260927_R0003292.webp" class="photo" itemprop="image" /></a></span></div>
<hr>
<p>毎度お馴染み、KUUHAKU に立ち寄り、今月の個展を見る。<a href="https://www.instagram.com/taro_ekakiya/">鈴木太郎氏</a>の素敵な作品があったので、お迎え入れすることに。ラッキー。KUUHAKU を知る前は、アート作品とは縁がないと思っていたが、「くらしに、アートを」がコンセプトなだけあって、自分が好きなものに出会え、自分で選んでお迎え入れして良いのだ、という気持ちが芽生えたので、ありたが嬉しいね。</p>
<div class="photos photos-small"><span itemscope="" itemtype="http://schema.org/Photograph"><a href="https://storage.googleapis.com/secons-site-images/photo/large/20260927_L1005777.webp"><img src="https://storage.googleapis.com/secons-site-images/photo/medium/20260927_L1005777.webp" class="photo" itemprop="image" /></a></span></div>
<hr>
<p>しゅっと15時過ぎには家に到着。今日の猪苗代も最高だったね。</p>
<p>ベコ氏が朝寝(8-9時ごろ)と、昼寝(13-14時ごろ)のタイミングに車移動すると、ベコ氏はスヤリと寝れる(車だと振動が良いのか、寝つきが良い)し、日帰りはこのリズムで出掛けることに慣れてきたなぁ。</p>]]></description>
            <link>https://secon.dev/entry/2026/09/27/210000</link>
            <guid isPermaLink="false">/entry/2026/09/27/210000</guid>
            <dc:creator><![CDATA[secondlife / @hotchpotch / Yuichi Tateno]]></dc:creator>
            <pubDate>Sun, 27 Sep 2026 12:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[2026年9月26日]]></title>
            <description><![CDATA[<p>ワタクシの誕生日。これで四捨五入したら五十路（いそじ）に突入ですね。あと人生も残りわずかなのかもしれないので楽しんでいきたい。妻作のマスカットケーキやチキンのオーブン焼きなどを食べる。ごちそうさまでした。</p>
<div class="photos photos-columns"><span itemscope="" itemtype="http://schema.org/Photograph"><a href="https://storage.googleapis.com/secons-site-images/photo/large/20260927_L1005559.webp"><img src="https://storage.googleapis.com/secons-site-images/photo/medium/20260927_L1005559.webp" class="photo" itemprop="image" /></a></span><span itemscope="" itemtype="http://schema.org/Photograph"><a href="https://storage.googleapis.com/secons-site-images/photo/large/20260927_L1005576.webp"><img src="https://storage.googleapis.com/secons-site-images/photo/medium/20260927_L1005576.webp" class="photo" itemprop="image" /></a></span></div>
<div class="photos photos-small"><span itemscope="" itemtype="http://schema.org/Photograph"><a href="https://storage.googleapis.com/secons-site-images/photo/large/20260927_L1005571.webp"><img src="https://storage.googleapis.com/secons-site-images/photo/medium/20260927_L1005571.webp" class="photo" itemprop="image" /></a></span></div>
<hr>
<p>お昼はHimal Curry tanrenでダルバート。ダールの深い味付けがしみじみ美味しい。ネパール帽子もかぶっていて、ヒマラヤへの愛も感じられるのもまた良し。</p>
<div class="photos photos-small"><span itemscope="" itemtype="http://schema.org/Photograph"><a href="https://storage.googleapis.com/secons-site-images/photo/large/20260927_RX009551.webp"><img src="https://storage.googleapis.com/secons-site-images/photo/medium/20260927_RX009551.webp" class="photo" itemprop="image" /></a></span></div>
<hr>
<p>ベコ氏の保育園の先生の個展が開かれている、ドライフルーツ屋のヴァーモスへ。ヴァーモスは土曜だけカフェが開いているようなんだけど、このカフェのロケーション、素晴らしいね。南米エクアドルにご縁があるというオーナーの、エクアドルドライフルーツ、とりわけドラゴンフルーツのドライフルーツが美味しくて、自分用にも購入しちゃった。店内は南米雑貨も置いてあり、3年前に行った南米を懐かしむ。</p>
<p>ベコ氏は、普段抱かれ慣れている保育園の先生なので安心、と思いきや泣いちゃう。先生曰く、小さい子供は場所とセットで人を覚えることが多く、別の場所で会うと別人だと思っちゃうことも多いらしい。なんと！</p>
<p>先生の個展は水彩画で彩りが美しい、ベコ氏をイメージしたイラストなども描いてもらう。絵を描くいたりして表現することを、とても楽しそうに話されて、こちらも温かい気持ちに慣れて感謝だ。</p>
<div class="photos photos-columns"><span itemscope="" itemtype="http://schema.org/Photograph"><a href="https://storage.googleapis.com/secons-site-images/photo/large/20260927_RX009555.webp"><img src="https://storage.googleapis.com/secons-site-images/photo/medium/20260927_RX009555.webp" class="photo" itemprop="image" /></a></span><span itemscope="" itemtype="http://schema.org/Photograph"><a href="https://storage.googleapis.com/secons-site-images/photo/large/20260927_RX009556.webp"><img src="https://storage.googleapis.com/secons-site-images/photo/medium/20260927_RX009556.webp" class="photo" itemprop="image" /></a></span></div>
<div class="photos photos-columns"><span itemscope="" itemtype="http://schema.org/Photograph"><a href="https://storage.googleapis.com/secons-site-images/photo/large/20260927_RX009569.webp"><img src="https://storage.googleapis.com/secons-site-images/photo/medium/20260927_RX009569.webp" class="photo" itemprop="image" /></a></span><span itemscope="" itemtype="http://schema.org/Photograph"><a href="https://storage.googleapis.com/secons-site-images/photo/large/20260927_RX009573.webp"><img src="https://storage.googleapis.com/secons-site-images/photo/medium/20260927_RX009573.webp" class="photo" itemprop="image" /></a></span></div>]]></description>
            <link>https://secon.dev/entry/2026/09/26/210000</link>
            <guid isPermaLink="false">/entry/2026/09/26/210000</guid>
            <dc:creator><![CDATA[secondlife / @hotchpotch / Yuichi Tateno]]></dc:creator>
            <pubDate>Sat, 26 Sep 2026 12:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[2026年9月25日]]></title>
            <description><![CDATA[<p>午前中は秋晴れの良い天気、というわけで昼は久しぶりに「にこにこ家」でほか弁を購入し、那珂川河畔公園で野外で昼食。うーん、気持ちの良い日だ。公園のでは、ちょこちょこ子連れの方々がいて楽しそう。ベコ氏と遊びに来たーい。公園を散歩して帰る。</p>
<div class="photos photos-columns"><span itemscope="" itemtype="http://schema.org/Photograph"><a href="https://storage.googleapis.com/secons-site-images/photo/large/20260925_RX009541.webp"><img src="https://storage.googleapis.com/secons-site-images/photo/medium/20260925_RX009541.webp" class="photo" itemprop="image" /></a></span><span itemscope="" itemtype="http://schema.org/Photograph"><a href="https://storage.googleapis.com/secons-site-images/photo/large/20260925_RX009549.webp"><img src="https://storage.googleapis.com/secons-site-images/photo/medium/20260925_RX009549.webp" class="photo" itemprop="image" /></a></span></div>ｓ
<hr>
<p>昨日今日、集中してエーアイ氏にお願いして、たくさん働いてもらったら、ChatGTP Pro(月200USDプラン)の weekly limit を24時間程度で75%も使ってしまった。大体 Astro low なのにね。こんな短期間にガッと減ったのは初めてだ。</p>
<p>リセットがあと2回残ってるから良いとはいえ、エーアイ氏が賢くなり、雑指示でも割と長期で働いてくれるようになっているため、エーアイ氏の仕事量がたくさん増えちゃったね。</p>]]></description>
            <link>https://secon.dev/entry/2026/09/25/210000</link>
            <guid isPermaLink="false">/entry/2026/09/25/210000</guid>
            <dc:creator><![CDATA[secondlife / @hotchpotch / Yuichi Tateno]]></dc:creator>
            <pubDate>Fri, 25 Sep 2026 12:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[2026年9月24日]]></title>
            <description><![CDATA[<p>ベコ氏の最近の言えるようになった言葉。はち（🐝）、ふわふわ。言えるようになると嬉しいのだろう、その言葉で会話するだけでとても楽しそうで可愛すぎる。</p>
<hr>
<p>朝、ベコ氏を抱え散歩をしていると、一年以上前にお話ししたことがある、ご高齢のおばあちゃん（犬連れ）と出会い、おしゃべりする。曰く、最近長年連れ添った夫が亡くなって悲しい、昔の人だから「おい」「お前」と呼ばれていたが、余命宣告を受けた今際に肉声を録音しようということになり、「{お名前}、一緒になってくれて、ありがとうな」と。名前なんて呼ばれてこなかったから嬉しかったと。こんなホロリと来る話が近所の散歩で聞けちゃうなんて。思わず自分も涙ぐむ。</p>
<hr>
<div class="photos photos-small"><span itemscope="" itemtype="http://schema.org/Photograph"><a href="https://storage.googleapis.com/secons-site-images/photo/large/20260925_RX009530.webp"><img src="https://storage.googleapis.com/secons-site-images/photo/medium/20260925_RX009530.webp" class="photo" itemprop="image" /></a></span></div>]]></description>
            <link>https://secon.dev/entry/2026/09/24/210000</link>
            <guid isPermaLink="false">/entry/2026/09/24/210000</guid>
            <dc:creator><![CDATA[secondlife / @hotchpotch / Yuichi Tateno]]></dc:creator>
            <pubDate>Thu, 24 Sep 2026 12:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[2026年9月23日]]></title>
            <description><![CDATA[<p>ベコ氏が最近ブーブー（車）がブームなので、姪が眠っていたラジコンを引っ張り出してきてくれ、ラジコンで遊ぶと、かつてないほど興奮している。他にもシャボン玉で遊んでくれたりと、この日もずっと楽しそうだ。もうちょっとすると、別れ際に寂しくなって泣いちゃったりするんだろうなぁ。</p>
<hr>
<p>妹一家が行った、東南アジア旅行動画を見る。あー楽しそう。海外旅行行きたいね。</p>
<hr>
<p>昼食、ドミノピザの宅配。宅配ピザ懐かし〜〜〜！！</p>
<div class="photos photos-small"><span itemscope="" itemtype="http://schema.org/Photograph"><a href="https://storage.googleapis.com/secons-site-images/photo/large/20260923_R0003288.webp"><img src="https://storage.googleapis.com/secons-site-images/photo/medium/20260923_R0003288.webp" class="photo" itemprop="image" /></a></span></div>
<hr>
<p>typo さん作の、<a href="https://typester.dev/blog/2026/09/21/diablo-on-mac">Play Diablo IV on Mac</a>の記事で書かれている<a href="https://github.com/typester/sake">typester/sake</a>、Mac で Windows Steam のゲームが普通に上手く動いちゃってびっくりする、すごい。steam.exe が立ち上がり、動くゲームは steam cloud save なども含めてサクッと動いちゃう。動かないゲームもあるけど、7-8割ぐらいは上手く動く感じがするぞい。</p>
<p>と言うわけで動作確認をしていたら、いつの間にかゲームをしてしまい時間が過ぎていったのであった…。</p>]]></description>
            <link>https://secon.dev/entry/2026/09/23/210000</link>
            <guid isPermaLink="false">/entry/2026/09/23/210000</guid>
            <dc:creator><![CDATA[secondlife / @hotchpotch / Yuichi Tateno]]></dc:creator>
            <pubDate>Wed, 23 Sep 2026 12:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[2026年9月22日]]></title>
            <description><![CDATA[<p>朝、強風の中、ベコ氏と雑木林を歩く。木々が大きく揺れて、ベコ氏も興味深そうだ。と、突然肩を木刀で叩かれたかのような衝撃で超痛い。風で折れた木(ちょうど木刀ぐらいのサイズ)が落ちてきたのであった。ベコ氏に当たらなくてよかった。これぐらいのサイズでよかった。太さ10-20cmぐらいなサイズもあったりするから、もし当たるとただでは済まなそう。強風の時は林を歩くと危険だね。</p>
<hr>
<p>実家へ。ベコ氏は実家のみんなにこれでもか、という程に可愛がられて、何をしても歓声が上がる。ずーっと楽しそう。寝る直前もハイテンション。みんながハイタッチをしまくるので、ハイタッチを覚える。</p>
<hr>
<p>夕食の豚しゃぶ。白だし + 天かすのタレとあって、めちゃうまだった。</p>
<div class="photos photos-small"><span itemscope="" itemtype="http://schema.org/Photograph"><a href="https://storage.googleapis.com/secons-site-images/photo/large/20260923_R0003276.webp"><img src="https://storage.googleapis.com/secons-site-images/photo/medium/20260923_R0003276.webp" class="photo" itemprop="image" /></a></span></div>]]></description>
            <link>https://secon.dev/entry/2026/09/22/210000</link>
            <guid isPermaLink="false">/entry/2026/09/22/210000</guid>
            <dc:creator><![CDATA[secondlife / @hotchpotch / Yuichi Tateno]]></dc:creator>
            <pubDate>Tue, 22 Sep 2026 12:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[2026年9月21日]]></title>
            <description><![CDATA[<p>台風接近のため大雨が予想され、祝日だが外出せずに一日仕事でもするかー、という日。</p>
<hr>
<p>ツリバナ、今年も可愛く実る。ベコ氏はツリバナがお気に入りで、赤い実を摘んでは潰してしまい赤に染まる…。</p>
<div class="photos photos-small"><span itemscope="" itemtype="http://schema.org/Photograph"><a href="https://storage.googleapis.com/secons-site-images/photo/large/20260919_L1005545.webp"><img src="https://storage.googleapis.com/secons-site-images/photo/medium/20260919_L1005545.webp" class="photo" itemprop="image" /></a></span></div>
<hr>
<p>一週間前に刺された山蛭の箇所が、猛烈に痒くなる。掻くと血が出て、かさぶたになり、また痒くなるを昨日から繰り返している。あーかゆい。</p>
<hr>
<p>玄関の安価なワイヤレスチャイムの母艦が壊れた(2年も使ってないのになぁ)ので、同じようなものを購入する。今回買ったのは、<a href="https://amzn.to/4dM4fe8">Umimile ワイヤレスチャイム 自動発電</a>なのだけど、電池不要(押した力で発電する)な物も、安価なものであるんだね。電池はどこだ？と届いた時探してしまった、商品名にそう書いてあるのに。耐久力は不明。</p>]]></description>
            <link>https://secon.dev/entry/2026/09/21/210000</link>
            <guid isPermaLink="false">/entry/2026/09/21/210000</guid>
            <dc:creator><![CDATA[secondlife / @hotchpotch / Yuichi Tateno]]></dc:creator>
            <pubDate>Mon, 21 Sep 2026 12:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[2026年9月20日]]></title>
            <description><![CDATA[<p>A氏の家に、家族でお邪魔する。A氏お手製の滷肉飯をいただいたり、妻作のケーキを食べたりしながらおいしく楽しくワイワイ。ベコ氏も普段と違う環境で、A氏一家に遊んでもらって楽しそうだったなぁ。</p>
<div class="photos photos-small"><span itemscope="" itemtype="http://schema.org/Photograph"><a href="https://storage.googleapis.com/secons-site-images/photo/large/20260923_R0003262.webp"><img src="https://storage.googleapis.com/secons-site-images/photo/medium/20260923_R0003262.webp" class="photo" itemprop="image" /></a></span></div>
<hr>
<p>庭の芝を追加で敷いてもらったり、石を敷き詰めてもらったりと外構工事をしてもらう。家を建てるタイミングでやっておくと、出戻りがないんだけど、実際に住んでみてもうちょっとここがこうなるったら良いな、というのが出てくるので、住んでみてから徐々に外構をやっていきである。</p>]]></description>
            <link>https://secon.dev/entry/2026/09/20/210000</link>
            <guid isPermaLink="false">/entry/2026/09/20/210000</guid>
            <dc:creator><![CDATA[secondlife / @hotchpotch / Yuichi Tateno]]></dc:creator>
            <pubDate>Sun, 20 Sep 2026 12:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Jev を用い rerank・関連度でフィルターできるライブラリ jev-reranker を公開]]></title>
            <description><![CDATA[<p>TypeSafe.AI の Jev を用いて、検索結果の rerank はもとより、検索に関連しない不要な情報を削除する relevance filter の機能も持った jev-reranker というライブラリを公開しました。</p>
<ul>
<li><a href="https://github.com/hotchpotch/jev-reranker/">https://github.com/hotchpotch/jev-reranker/</a></li>
</ul>
<p>RAG などで検索を利用している場合、検索結果には引っかかるが、回答生成には不要なデータが返ってくることが多くあります。この場合、LLM に全て不要な結果も含め渡すと、処理速度やトークンコストが余計にかかってしまい、場合によってはハルシネーションを起こしかねません。</p>
<p>また全く適切な検索結果がなかった場合は、LLM に渡す前に処理を切り上げたり、別の検索クエリを検討したりできるので、閾値によって不要なデータを削ることができる、スクリーニング用途にも使える relevance rerank filter は単純な並べ替えの rerank よりも重要になるケースが多々あります。本記事の後半でも述べますが、<a href="https://huggingface.co/datasets/hakari-bench/NanoBEIR-en">NanoHotpotQA</a> では、検索候補の約92%を削減しながら、nDCG@10で0.975を達成しています。</p>
<p><img src="https://raw.githubusercontent.com/hotchpotch/jev-reranker/main/assets/relevance_filter_performance.webp" alt="jev-reranker relevance filtering and performance comparison"></p>
<p>イメージとしてはこんな感じで、関連しないドキュメントはスコアがかなり低く出るので、閾値を使った足切りがしやすいですね。</p>
<h2>relevance rerank filter としての利用例</h2>
<p>以下のように簡単に利用ができます。</p>
<pre><code class="hljs language-sh">uv add jev-reranker</code></pre>
<pre><code class="hljs language-python"><span class="hljs-keyword">from</span> jev_reranker <span class="hljs-keyword">import</span> JevReranker

query = <span class="hljs-string">"How long do I have to return an online order to ACME Shop?"</span>
documents = [
    <span class="hljs-string">"ACME Shop accepts online returns within 30 days of delivery."</span>,
    <span class="hljs-string">"For ACME Shop online orders, submit your return request within 30 days of receiving the item."</span>,
    <span class="hljs-string">"ACME Shop in-store purchases can be returned within 14 days of purchase."</span>,
    <span class="hljs-string">"ACME Shop products come with a one-year repair warranty."</span>,
    <span class="hljs-string">"FooBar Shop accepts online returns within 60 days of delivery."</span>,
]

reranker = JevReranker(api_key=<span class="hljs-string">"YOUR-TYPESAFE-API-KEY..."</span>)
response = reranker.relevance_rerank(query, documents, threshold=<span class="hljs-number">0.2</span>)

<span class="hljs-keyword">for</span> item <span class="hljs-keyword">in</span> response[<span class="hljs-string">"results"</span>]:
    <span class="hljs-built_in">print</span>(<span class="hljs-string">f"<span class="hljs-subst">{item[<span class="hljs-string">'score'</span>]:<span class="hljs-number">.2</span>f}</span>  <span class="hljs-subst">{item[<span class="hljs-string">'text'</span>]}</span>"</span>)</code></pre>
<p>結果の出力例は以下です。後半の3つはなんとなく似ていますが、実際は紛らわしい回答なので、閾値未満のため削除されてます。</p>
<pre><code class="hljs language-text">0.98  ACME Shop accepts online returns within 30 days of delivery.
0.97  For ACME Shop online orders, submit your return request within 30 days of receiving the item.</code></pre>
<h2>relevance rerank と rerank は何が違うの？</h2>
<p>ここが Jev の面白いところで、異なるのは<a href="https://github.com/hotchpotch/jev-reranker/blob/main/src/jev_reranker/instructions.py">インストラクション（指示文）</a>のみです。query に強く関連があるかないかだけで評価すると、ソートに適した rerank になりますし、RAG の検索後処理で利用したいような「質問の回答に関連が低いものは極端に低スコア」のような指示文を入れれば、relevance rerank filter として使うことができます。これも Jev の汎化性能の高さゆえですね。</p>
<h2>Jev の評価結果</h2>
<p>今回は、マルチホップ QA データセットである、HotpotQA の情報検索用にサンプリングされたデータセットの NanoHotpotQA に対して、以下のような評価を行いました。</p>
<ul>
<li>NanoHotpotQA を BM25 と dense（<code>harrier-oss-v1-270m</code>）検索を用いて、Hybrid 検索を行い、Top-100 を抽出。もし Top-100 に正解がない場合は 101 件目に正解を挿入</li>
<li>その結果に対して、nDCG@10 の結果を取得</li>
</ul>
<p>つまり query 50 に対し、各々検索結果上位の 100（or 101）件に対して rerank するようなベンチマークタスクです。結果は以下です。</p>
<table>
<thead>
<tr>
<th>方式</th>
<th align="right">閾値</th>
<th align="right">nDCG@10</th>
<th align="right">残留文書 / query</th>
<th align="right">文書削減率</th>
</tr>
</thead>
<tbody>
<tr>
<td>Hybrid search</td>
<td align="right">—</td>
<td align="right">0.833</td>
<td align="right">100件</td>
<td align="right">0%</td>
</tr>
<tr>
<td><code>rerank</code></td>
<td align="right">0.0</td>
<td align="right">0.969</td>
<td align="right">100件</td>
<td align="right">0%</td>
</tr>
<tr>
<td><code>relevance_rerank</code></td>
<td align="right">0.2</td>
<td align="right"><strong>0.975</strong></td>
<td align="right">7.62件</td>
<td align="right"><strong>92.38%</strong></td>
</tr>
</tbody>
</table>
<p>評価方法と再現手順は、<a href="https://github.com/hotchpotch/jev-reranker/blob/main/docs/eval.md">評価スクリプトの利用ガイド</a> にまとめています。今回の評価では NanoBEIR-en の NanoHotpotQA を使い、候補数を制限せず、50クエリそれぞれの hybrid 検索結果100件を対象にしました。採点方式は listwise、閾値は <code>rerank</code> が <code>0.0</code>、<code>relevance_rerank</code> が <code>0.2</code> です。同じスクリプトで Hybrid search の nDCG@10 も確認できます。</p>
<p>特筆すべきは relevance rerank filter の文書の削減率です。これは、閾値（0.2）未満のスコアのものを全て関連しないとして削除した時の削除率で、1 query あたり、100件の検索結果を平均約7.6件にフィルターで効率よく削除・スクリーニングができています。検索ドキュメントのうち、質問に対する関連性が低いと判定された文書約92%も、この段階で削除ができてるのです。</p>
<p>さらに削除した結果の nDCG@10 も <code>0.975</code> と非常に高く、削除したからといって検索結果が劣化しているわけではありません。</p>
<p>RAG のパイプラインで、query に対して検索結果のドキュメント 100 件を取得して、全て後の LLM に渡すと、前述の通り非常に高コストです。しかしながら、この relevance filter を使うことで、1 query あたり平均約7.6件しか渡さずに済んで、かつその中に正解が含まれています。そのため、低い性能の LLM でもハルシネーションを起こす可能性がグッと低くなるでしょう。</p>
<p>このように、jev-reranker の、とりわけ relevance rerank filter を使うことで、query に関係がない検索結果を大幅に削減することが可能なのです。</p>
<p>また、この閾値も柔軟に変更が可能です。例えば見逃すと損害が大きいシステムでは <code>&#x3C;= 0.05</code> などにできますし、検索に関連しなそうなら大胆に結果を削除して良いなら、<code>&#x3C;= 0.5</code> なども考えられるでしょう。また前述の通り、インストラクション文章を変えれば、自分自身のシステムにあった relevance filter を作成することが可能なのです。これが Jev が注目されている、汎化性能の高さですね。</p>
<p>なお、この結果は、<code>jev-1.13.0</code> の結果に基づいています。Jev のモデルが更新されると、結果が異なる可能性が高いです。</p>
<p>余談ですが、高性能 reranker としてよく使われている、reranker に特化した cross-encoder である <a href="https://huggingface.co/BAAI/bge-reranker-v2-m3">bge-reranker-v2-m3</a> 並みの rerank 性能も、手元では確認できているので、気になる方は評価してみてはいかがでしょうか。</p>
<hr>
<h2>なぜ jev-reranker ライブラリを使うのか？</h2>
<p>実際のところ、Jev の API をそのまま叩いても十分機能するのですが、この jev-reranker は情報検索の実利用で便利な機能を最初から実装しています。</p>
<h3>listwise or pointwise（pairwise）</h3>
<p>Jev では、rerank する際に 2 つの手段が考えられます。1 つは <code>[query, doc1, doc2, ...]</code> など 1 つのコンテキストに全て埋め込む listwise の手法、もう 1 つは <code>[[query, doc1], [query, doc2], ...]</code> と、query と doc の pair を毎回リクエストする pointwise の手法、2 パターンがあります。</p>
<p>jev-reranker ではこの 2 つの方法、両方に対応しています。比較してみたところ、基本的に listwise の方が高速かつ精度が良いので、デフォルトは listwise にしていますが、pointwise の方が良いタスクもあるかもしれません。</p>
<p>また、Jev は現状最大で 32k token しか含めないため、とりわけ listwise の 1 req に全てを詰め込む方法では、max token になってしまいがちです。そのため、適切に文字列長 or token 長で分割してリクエストを送るようにしています。本当は Jev tokenizer が公開されていれば、事前に 32k token を超えていないかが観測できるのですが、残念ながらまだライブラリや API 共に token の長さを事前に測る方法は、公開されていないようです。</p>
<h3>並列性</h3>
<p>毎度 1 つ 1 つを直列で叩くと非常に遅いため、最初からある程度並列リクエストを叩きます。そのため、高速な処理が可能です。もちろん、設定で並列数は変えられますし、レートリミットでエラーになった場合は時間をおいて retry 等々の再開・例外処理も実装されています。</p>
<p>そのため、jev-reranker を使うことで、rerank、relevance filter に適したインストラクションプロンプトはもとより、これらの便利機能も利用可能なので、よかったら使ってみてくださいね。</p>
<ul>
<li><a href="https://github.com/hotchpotch/jev-reranker/">https://github.com/hotchpotch/jev-reranker/</a></li>
</ul>
<h2>Jev の感想というお気持ちというか</h2>
<p>Jev は、巷の評判の通り、LLM では遅く、かといってなんらかの特化 model を学習するにはコストが高すぎる、適切にモデルを作成できる人材がいない、ような用途の隙間にピッタリとハマる、汎化性能が高い structured decision モデルです。</p>
<p>また、汎化性能の高さ、というのも魅力です。検索結果はコンテキストによって優先すべき結果が異なるため、それを instruction により制御できることは、今後重宝されていくでしょう。情報検索タスクの一部である reranker や relevance filter としても、現時点でも性能の高さが窺い知れますね。</p>
<p>そんなわけで、Jev の出現は「今までになかった、隙間を埋める汎化モデル」として非常に喜ばしいですね。また Jev のようなモデルが流行ることによって、別の企業・研究機関なども同様の方向性のモデルを出してくる流れになることは間違い無いでしょうから、その点でも Jev の登場は嬉しいですね。今後の AI 関連技術の発展が見えるような、ワクワクするモデルの登場でした。</p>]]></description>
            <link>https://secon.dev/entry/2026/09/20/100000-jev-reranker</link>
            <guid isPermaLink="false">/entry/2026/09/20/100000-jev-reranker</guid>
            <dc:creator><![CDATA[secondlife / @hotchpotch / Yuichi Tateno]]></dc:creator>
            <pubDate>Sun, 20 Sep 2026 01:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[2026年9月19日]]></title>
            <description><![CDATA[<p>パラディの広い庭で遊ぶ。手を上げながらテトテト歩く。バランスをとっているのだろうか。ただ庭で歩いているだけで楽しそうなんだよなぁ。可愛すぎる。親はそれをにっこりと見守るのである。</p>
<div class="photos photos-small"><span itemscope="" itemtype="http://schema.org/Photograph"><a href="https://storage.googleapis.com/secons-site-images/photo/large/20260919_RX009494.webp"><img src="https://storage.googleapis.com/secons-site-images/photo/medium/20260919_RX009494.webp" class="photo" itemprop="image" /></a></span></div>
<hr>
<p>というわけで、昼はgarden AUX PARADIS。広いし、適度に騒がしい（子供が騒いでもあまり気にならない）し、料理は美味しいし、ベコ氏も食べれるものが増えてきたしで、引き続き最高である。ベコ氏はロールケーキのフルーツを少々与えると、気に入ったのか、幼児用スプーンでフルーツ1つをまるまるすくい上げ、口に方張る。フォークの使い方も上手になってきたなぁ。</p>
<div class="photos photos-columns"><span itemscope="" itemtype="http://schema.org/Photograph"><a href="https://storage.googleapis.com/secons-site-images/photo/large/20260919_RX009462.webp"><img src="https://storage.googleapis.com/secons-site-images/photo/medium/20260919_RX009462.webp" class="photo" itemprop="image" /></a></span><span itemscope="" itemtype="http://schema.org/Photograph"><a href="https://storage.googleapis.com/secons-site-images/photo/large/20260919_RX009474.webp"><img src="https://storage.googleapis.com/secons-site-images/photo/medium/20260919_RX009474.webp" class="photo" itemprop="image" /></a></span></div>
<hr>
<p>夜は久しぶりに夜鍋して、<a href="https://github.com/hotchpotch/jev-reranker">jev-reranker</a>などを作る。昨日作った Jev 評価用 reranker をライブラリとして切り出して、検索結果の足切りフィルターとしても使いやすくしたもの。はー Jev 面白いね。</p>]]></description>
            <link>https://secon.dev/entry/2026/09/19/210000</link>
            <guid isPermaLink="false">/entry/2026/09/19/210000</guid>
            <dc:creator><![CDATA[secondlife / @hotchpotch / Yuichi Tateno]]></dc:creator>
            <pubDate>Sat, 19 Sep 2026 12:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[2026年9月18日]]></title>
            <description><![CDATA[<p>巷でウワサの TypeSafe.AI の Jev、招待がやってきたので使ってみる。汎化性能がすこぶる高い classifier という感じで面白い。インストラクションも自由に書けるしね。情報検索好き、としては rerank タスク計測してみるかね〜と軽くベンチマークを取ると、結構高速で良好な面白い結果に。</p>
<p>これは本格的にベンチマークを取らねば！と<a href="https://github.com/hakari-bench/hakari-bench/pull/5">Jev を reranker として計測できる実装を書いて</a>、APIの無料枠を超えたので課金し、英語blog記事を書いて、みたいなことを進めていたら、エーアイ氏が「<a href="https://typesafe.ai/legal/mca">利用規約 Aug 27, 2026 2.3-f</a>ではベンチマーク結果の公開NGですよ？良いんですか？」と教えてくれる。まじか。確認するとちゃんと書いてあるね…。というわけでしばしお蔵入りとなったのであった。そのうち解禁されるだろうから、その時また…。</p>
<p>自分の仕事の1つは、特化性能が高いモデルを作ること(LLMにやらせるより100-1000倍ぐらい速く、かつ安価)だったりするが、Jev のような汎化性能が高くて速度も費用対効果も十分なモデルが溢れてきたら、その仕事の価値はだいぶ目減りしちゃうね。</p>
<hr>
<p>近隣の草木が身をつける。1つ目の球状に身をつけているのはウド。2つ目のブドウっぽいものはヨウシュヤマゴボウ、毒。</p>
<div class="photos photos-columns"><span itemscope="" itemtype="http://schema.org/Photograph"><a href="https://storage.googleapis.com/secons-site-images/photo/large/20260919_L1005550.webp"><img src="https://storage.googleapis.com/secons-site-images/photo/medium/20260919_L1005550.webp" class="photo" itemprop="image" /></a></span><span itemscope="" itemtype="http://schema.org/Photograph"><a href="https://storage.googleapis.com/secons-site-images/photo/large/20260919_L1005547.webp"><img src="https://storage.googleapis.com/secons-site-images/photo/medium/20260919_L1005547.webp" class="photo" itemprop="image" /></a></span></div>]]></description>
            <link>https://secon.dev/entry/2026/09/18/210000</link>
            <guid isPermaLink="false">/entry/2026/09/18/210000</guid>
            <dc:creator><![CDATA[secondlife / @hotchpotch / Yuichi Tateno]]></dc:creator>
            <pubDate>Fri, 18 Sep 2026 12:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[2026年9月17日]]></title>
            <description><![CDATA[<p>久しぶりに青空が見える。ここのところずっと雨、時々曇りな天気だったから、青空というだけで嬉しい。近所の蕎麦畑は花が満開。</p>
<div class="photos photos-small"><span itemscope="" itemtype="http://schema.org/Photograph"><a href="https://storage.googleapis.com/secons-site-images/photo/large/20260917_R0003250.webp"><img src="https://storage.googleapis.com/secons-site-images/photo/medium/20260917_R0003250.webp" class="photo" itemprop="image" /></a></span></div>
<hr>
<p>うーん、いい天気。これはベコ氏と朝散歩の時の一枚。</p>
<div class="photos photos-small"><span itemscope="" itemtype="http://schema.org/Photograph"><a href="https://storage.googleapis.com/secons-site-images/photo/large/20260917_R0003256.webp"><img src="https://storage.googleapis.com/secons-site-images/photo/medium/20260917_R0003256.webp" class="photo" itemprop="image" /></a></span></div>
<hr>
<p>夕方、良い天気に連れられて、千本松牧場へ。ベコ氏は靴を履いて歩けるようになったので、芝生の上で落ち葉を集めたり、石を集めたり。拾うと親のところに持ってきてかわいい。ただの枯葉も石も、ベコ氏にとっては見慣れぬアイテムで、見つけると嬉しそうに拾って楽しそう。自分もこのように、何もかも新鮮に感じていた時があったのだよなぁ…。</p>
<div class="photos photos-small"><span itemscope="" itemtype="http://schema.org/Photograph"><a href="https://storage.googleapis.com/secons-site-images/photo/large/20260917_L1005533.webp"><img src="https://storage.googleapis.com/secons-site-images/photo/medium/20260917_L1005533.webp" class="photo" itemprop="image" /></a></span></div>]]></description>
            <link>https://secon.dev/entry/2026/09/17/210000</link>
            <guid isPermaLink="false">/entry/2026/09/17/210000</guid>
            <dc:creator><![CDATA[secondlife / @hotchpotch / Yuichi Tateno]]></dc:creator>
            <pubDate>Thu, 17 Sep 2026 12:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[2026年9月16日]]></title>
            <description><![CDATA[<p>スパイスヤミーで、ビリヤニタコスセット。毎度食べると「ウマッ」と声をあげてしまう美味しさ。タコスは4バリエーションあって、毎度妻と自分で2つづつ、つまりどのバリエーションもたべれるのも良いのだよなぁ。</p>
<div class="photos photos-small"><span itemscope="" itemtype="http://schema.org/Photograph"><a href="https://storage.googleapis.com/secons-site-images/photo/large/20260917_R0003238.webp"><img src="https://storage.googleapis.com/secons-site-images/photo/medium/20260917_R0003238.webp" class="photo" itemprop="image" /></a></span></div>
<hr>
<p>N氏が日記で書いていた、脱法ドラッグについてのルポ「<a href="https://amzn.to/4hsRszz">脱法</a>」、読みやすく、内容もアングラカルチャーで一気に読んでしまった。脱法ドラッグ、どんなものかよく分かってなかったのだけどなるほどなぁ。と今 amazon を見ると、ちょうど kindle unlimited 配信してるじゃん！普通の価格で買ってしまったよ。</p>]]></description>
            <link>https://secon.dev/entry/2026/09/16/210000</link>
            <guid isPermaLink="false">/entry/2026/09/16/210000</guid>
            <dc:creator><![CDATA[secondlife / @hotchpotch / Yuichi Tateno]]></dc:creator>
            <pubDate>Wed, 16 Sep 2026 12:00:00 GMT</pubDate>
        </item>
    </channel>
</rss>