Vector databases and AI data infrastructure
LanceDB 0.38、増分マテリアライズドビューと関数フィールドを追加、複数の SDK に破壊的変更も
LanceDB 0.38.0 は、マテリアライズドビュー、計算可能なフィールド、関数のリソース要件を Python や Node.js などのインターフェースに導入し、embedding とデータ変換をストレージ層に近づけた。同時に、テーブル判定、ブランチ操作、実行環境の要件も変更されているため、RAG システムはアップグレード前にクエリ結果を相互検証する必要がある。

LanceDB は8月31日に 0.38.0 をリリースし、ベクトルデータベースを特徴量変換も実行できるデータ層へとさらに拡張した。新バージョンでは、SQL 式を使用して computed columns を宣言および再計算できるほか、ローカルテーブル向けにマテリアライズドビューの宣言と refresh が可能になった。Python と Node.js の双方に対応するバインディングが提供されている。公式ドキュメントによると、マテリアライズドビューは文字起こし、embedding、その他の高コストな UDF の結果をクエリ可能なテーブルとして保存でき、以降の refresh ではデータセット全体を毎回再計算せず、新規または変更されたデータフラグメントのみを処理する。
関数インターフェースには、バージョン付き wire contract、フィールドバインディング、Conda 実行環境、GPU リソース要件も追加された。マルチモーダル RAG や学習データパイプラインでは、ドキュメント分割、画像処理、embedding 生成をデータバージョンや再計算ジョブと関連付けられるため、外部スケジューラーが担う接続処理を減らせる。StreamingDataset には、変換エラー処理、後処理キューの backpressure、sequence packing が追加され、大量のデータをモデルへ投入する前のフロー制御が改善された。
ただし、これは無痛のアップグレードではない。Python パッケージは Pydantic 2 が必須となり、Node.js の最低バージョンは 22 に引き上げられた。また、embedding 設定はベクトルフィールド単位で保存される。ブランチのマージ API は `cherry_pick` に改名され、テーブルの存在判定は manifest を基準とするようになり、リストのページネーションにもストレージ層の cursor が使用される。これらの変更は、独自にラップした管理ツール、旧バージョンの schema 検証、複数言語を組み合わせたデプロイに影響する可能性がある。
0.38.0 ではさらに、hybrid search で `.offset()` が無視される問題、リストのページをまたぐ際にテーブルが欠落する問題、Node.js 側の embedding metadata を Python から読み取れない問題も修正された。これらの不具合は検索対象の集合やソート後のページネーションを直接変化させるため、エンジニアリングチームは API 互換性テストに加え、固定したクエリセットを用いて、アップグレード前後のドキュメント ID、スコア、ページ境界を比較すべきである。マテリアライズドビューの増分処理の正確性、障害発生後の checkpoint の挙動、GPU UDF のリソース分離は、本番導入前に特に負荷テストすべき項目として残る。