コンテンツにスキップ

200を超える実験Notebookを支えるSAENMの実践

以前、実験の過程を時系列で積み重ねていく研究運用モデルとして、SAENM(セーンモデル)を紹介しました。その後も複数の研究やPoCで実践を続け、現在進めている非公開のベクトル検索研究では、Notebookが200を超えています。

今回は、SAENMを実際の研究でどのように使ってきたのか、公開しているプロジェクトの例も交えて紹介します。

実験が増えるほど、結果だけでは足りなくなる

一つの実験だけであれば、Notebookにコードと結果を残すだけでも十分です。しかし、実験が数十、数百と続くと、「どの結果が良かったか」だけでは研究の流れを追えなくなります。

例えば、ある条件で精度が上がらなかったときには、次の実験でパラメーターを変えるのか、別の手法を試すのか、評価方法そのものを見直すのかを判断します。後から必要になるのは数値だけではなく、 その結果を見て、なぜ次の実験へ進んだのか というつながりです。

SAENMでは、過去のNotebookを新しい結果で上書きせず、次の実験を新しいNotebookとして追加します。それぞれのNotebookに目的、条件、結果、判断、次に確認することを残すことで、実験の連なりをたどれるようにしています。

LSH Cascade PoC:比較を積み重ねて方向を決める

LSH Cascade PoCでは、LSHを使ったベクトル検索について、パラメーター、射影方法、候補の絞り込み方、Embeddingモデルなどを変えながら検証しました。初期段階だけでも40パターン以上を試し、その後もNotebookを追加して、100番台まで実験が続いています。

具体的な例が、Notebook 84と85のつながりです。Notebook 84で得た結論に対して評価条件の公平性を見直す必要が生まれ、Notebook 85では、すべての比較対象で同じハッシュを使う条件にそろえて再評価しました。その結果、理論的には正しいと考えた三角不等式による下界が、実用上は十分に機能しないことが分かり、前の結論を修正しています。

さらに実験はそこで終わらず、画像検索側で得られた知見を受けて、Notebook 111ではVoronoi分割をテキストEmbeddingへ適用しました。LSHの改良を続けるだけでなく、別の方式と公平に比較し、より良い方向へ進んでいます。

この規模になると、最終的な構成だけを残しても、なぜその構成を選んだのかを説明できません。以前の結果を残したまま新しいNotebookで再検証することで、結論が変わった理由も研究の一部として追えます。

実験全体を振り返るための最終レポートも用意していますが、その結論を支えているのは、途中の比較や方針転換を記録した個々のNotebookです。

Image Vector PoC:関心が広がっても履歴をつなぐ

Image Vector PoCでは、画像とテキストのEmbeddingモデルの比較から始まり、日本語による画像検索、画像キャプション、顔認識、ブラウザーでの実行、Firestoreを使った検索へと検証対象が広がりました。

一見すると別々のテーマですが、それぞれは前の実験で見つかった課題や可能性からつながっています。Notebookを順番に追加しておくと、モデルの比較からアプリケーションの試作へ進み、さらに検索方法の検証へ向かった流れを後から確認できます。

ここでも、うまくいかなかった実験が次の発見につながっています。Notebook 120では、テキストと画像のEmbedding空間のずれを補正すれば検索を改善できると考えました。しかし、ベクトルを移動するとコサイン類似度の順序が崩れ、この補正方法は機能しませんでした。その一方で、候補を多めに取得して元のクエリで再ランキングする、より単純で有効な方法を確認できました。

続くNotebook 121では、Voronoi分割とHNSWを組み合わせましたが、単独方式を上回らず、複雑性だけが増えるため不採用としています。「組み合わせれば良くなるはず」という仮説を検証し、採用しない理由まで残した例です。

研究の途中で関心が広がること自体は悪いことではありません。大切なのは、話題が変わったときにも、どの結果を受けて次のテーマへ進んだのかを見失わないことです。

Graph RAG PoC:立ち止まった理由から再開する

Graph RAG PoCでは、ベクトル検索とナレッジグラフを組み合わせ、時系列を含む情報を扱う方法を検証しました。最初の13実験を終えたNotebook 14の振り返りでは、どこでGraph RAGが有効だったかだけでなく、グラフの品質、マルチホップによるノイズ、評価方法、処理時間という限界を整理しています。

この時点では、使っていたデータがGraph RAGの価値を示すのに適していない可能性があると判断し、そのまま同じ実験を続けることは勧めていません。一方で、明示的な関係を持つデータでの再挑戦や、既存フレームワークとの比較を次の選択肢として残しました。

その後はLightRAGとの比較や、会議の決定と話題の変化を扱う時系列グラフへ実験を展開しています。一度立ち止まった理由と次の選択肢が残っていたため、単に続きを作るのではなく、前の課題に対応する形で再開できました。

実験の価値は、そのまま開発を続けられる成果が出た場合だけにあるわけではありません。現時点では何が難しいのか、どこまで確認できたのかを残しておけば、技術や前提条件が変わったときに、再開すべき地点を判断できます。

正式なプロジェクトとして立ち上げなかった検討についても、同じように記録を残しています。成果として表に出なかった試行も、次の判断に使える研究資産になります。

200を超えて分かったこと

現在進めている非公開のベクトル検索研究では、Notebookが200を超えました。研究内容の詳細はまだ公開できませんが、複数のEmbeddingモデルや大規模なデータを使った実験を、数か月にわたって続けています。

Notebookが200を超えると、すべてを最初から読み直して現在地を把握することは現実的ではありません。それでも、番号と要約から関連する実験へ戻り、その時点の仮説、条件、結果、判断を確認できます。過去の実験を消さずにつないできたことが、新しい実験を組み立てる際にも役立っています。

また、論文としてまとめる段階では、良かった結果だけでなく、どの比較を行い、どの可能性を検討したのかを確認する必要があります。実験中に残した判断の記録が、そのまま論文になるわけではありませんが、主張を組み立て直すための材料になります。

いま実践している小さなルール

SAENMは、Notebookに連番を付けるだけの方法ではありません。実践では、少なくとも次の点を意識しています。

  • 一つのNotebookで確認する問いをできるだけ明確にする
  • 実験条件と、比較対象を残す
  • 結果だけでなく、その結果をどう判断したかを書く
  • 次に確認することを残し、新しいNotebookへつなぐ
  • 過去の実験は書き換えて整えるのではなく、新しい知見を次のNotebookへ追加する
  • 節目ではレポートを作り、関連するNotebookをたどれるようにする

最初から完全な形式を用意する必要はありません。実験を追加しながら、後から自分やほかの人が判断の流れを追えるかを確認し、必要な項目を整えていく方が実践的です。

SAENMは実践の中で育てている

最初にSAENMを紹介した記事では、その基本的な考え方を説明しました。今回は、公開・非公開を含む複数のプロジェクトで使い、長期間かつ200を超えるNotebookでも役立っているという実践面を紹介しました。

SAENMは、成功した実験だけを並べるためのものではありません。比較、失敗、保留、方向転換を含めて残すことで、研究の現在地を確認し、次の実験へ進むためのものです。

これからも実際の研究で使いながら、再現性や共有、論文化にどう役立てられるかを整理していきます。実験NotebookをGitで管理する最小構成は、saenm-notebook-templateで公開しています。