Def.:
Lance Formatは, Apache Arrowを基盤として設計された, 機械学習および検索ワークロード, とりわけベクトル検索とマルチモーダルデータ処理を第一級の目的として持つデータフォーマットである.単なる列指向ファイル形式ではなく, 高速なランダムアクセス, インデックス内包, 頻繁な更新を前提としたデータ構造を備え, ファイルフォーマットでありながらデータベース的性質を強く帯びている点に本質がある.
Lance Formatは, LanceDBによって開発されたオープンソースのデータフォーマットである.LanceDBは2022年に設立され, Chang SheとLei Xuを中心とする機械学習インフラの専門家チームが, 既存のデータフォーマットではAIワークロードの要求に応えられないという課題認識からLance Formatの開発に着手した.Lance FormatはRustで実装され, Apache License 2.0の下で公開されている.公式には「The Open Lakehouse Format for Multimodal AI」と位置づけられており, 高性能なベクトル検索, 全文検索, ランダムアクセス, 特徴量エンジニアリング機能をレイクハウスに提供することを明確な目標として掲げている.
特徴としては, データとインデックスを不可分なものとして同一フォーマット内に保持する点にある.一般的なデータレイク向けのファイルフォーマットでは, データはParquet等の列指向形式として保存され, 検索や最適化のためのインデックスは外部システムや別レイヤーに委ねられる.しかし, Lanceでは, ベクトル列に対するANNインデックス[IVF-PQ, HNSWなど]や多次元統計情報がファイル内部に直接格納される.これにより, 分析, 特徴量生成, 学習, 探索といった機械学習開発の各段階において, 同一のデータ実体を高速に扱うことが可能となり, 特に探索やトレーニング段階で問題となりやすいランダムアクセス性能の制約を根本から解消している.
この点は, ParquetやORCが分析や特徴量生成では高速である一方, 探索や学習用途では性能が低下しやすいこと, TFRecordが学習には適しているが探索や分析には向かないこと, JSONやXMLが探索には向くものの分析・学習では著しく不利であることと対照的である.Lanceは, これらが分断されがちなML開発段階全体を, 単一フォーマットで高い性能水準のまま横断できるよう設計されている点に特徴がある.
この設計思想は, Icebergのような既存のテーブルフォーマットと性能面で競合するというよりも, 解こうとしている問題の種類そのものが異なることを示す対照的な参照点として理解されるべきである.Icebergは分散データレイクにおける「表の管理」を第一義とするテーブルフォーマットであり, ParquetやORCといった実体ファイル群を, スナップショット, マニフェスト, パーティションというメタデータ構造によって統治する.Icebergにおける本体はメタデータ管理層であり, どのファイルをどの分析エンジンで読むかを安定的に制御することに価値がある.このため, 分析やETLといったワークロードでは極めて高い性能と信頼性を発揮するが, 探索的アクセスや学習時の細粒度I/Oを直接最適化する役割は担っていない.
これに対してLance Formatは, 分散トランザクション管理や多クライアント同時コミットを中心課題とはせず, 単一または限定的なデータセットに対して, 分析, 特徴量生成, 学習, 探索のすべてを高速に回せる物理表現を提供することに重心を置いている.Icebergが分析クエリの安定性やスキーマ進化を優先する結果, 探索やトレーニングでは「十分だが最適ではない」挙動になるのに対し, Lanceは探索と学習を第一級の前提として設計されているため, これらの段階で一貫して高速である.
データ配置の観点でも両者は明確に異なる.IcebergはParquetの大きな行グループと列チャンクを前提とし, 述語プッシュダウンやパーティションプルーニングによって分析時のスキャン効率を最大化する.一方Lanceは, より小さなページ単位での管理と, ベクトル検索に適したメモリアクセスパターンを重視する.その結果, Icebergでは構造的に不得意な「少量データへの反復的アクセス」や「対話的な探索」において, Lanceは優位性を持つ.
更新モデルも同様に, 対象とする開発段階の違いを反映している.IcebergはCopy-on-WriteやMerge-on-Readを用い, 分析結果の再現性と履歴の厳密な管理を保証する.一方,Lanceは, 特徴量の再計算や埋め込みの更新が頻繁に発生する学習・探索フェーズを前提とし, 軽量で局所的なupsertを自然に扱える設計となっている.これにより, RAGやエージェントシステムのように, 探索と学習が連続的に行われるワークロードに適合する.
Lanceはまた, タイムスタンプ付きのバージョン管理を内包しており, 学習実験や探索結果の再現性を確保できる.ただしこれは, Icebergが提供する大規模分散環境向けの楽観的並行制御とは異なり, ML開発サイクルに必要十分な範囲に絞った簡潔なモデルである.
技術的には, Lance FormatはApache Arrowと完全互換であり, Python, Rust, JavaScriptから直接利用できる.Pandas, Polars, DuckDB, PyArrowといった分析・探索ツールとシームレスに連携できる点は, データベースやデータウェアハウスが「分析は速いが学習には使えない」「探索は十分だがトレーニングには不向き」と評価されがちな点と対照的である.このようにLanceは, 既存のデータ基盤を置き換えるものではなく, Icebergが支える分析中心のレイクハウスの上に, ML開発全体を横断的に高速化するAI指向のデータ表現層として位置づけられる.
Mathematics is the language with which God has written the universe.