
2026/10/02 1:01
さようなら、ベクトルデータベース
RSS: https://news.ycombinator.com/rss
要約▶
日本語訳:
2026 年 9 月 30 日に、前世代の主要なパフォーマンスボトルネックを解決するために設計された大幅なアーキテクチャ見直しの伴う turbopuffer v3 がローンチされます。以前のバージョンが ANN ベクトルインデックスをプライマリストレージ層として依存したのに対し、turbopuffer v3 ではベクトルを柔軟なデータ構造の一つの選択肢として位置づけます。この変更により、リバランス時に完全なドキュメント内容と逆参照インデックスを移動する必要が生じたために発生していたストレージ重複やライトアンプリフィケーションといった課題が解消されます。ANN アドレスに基づいた剛直な階層クラスタリングレイアウトからの決着により、v3 は複雑な集計や GROUP BY 操作を含む高度な SQL キャパビリティを解放し、これらは以前はベクトルプライマリの設計によって制限されていました。ユーザーは、数十兆という巨大なスケーリング規模でも、テキスト、正規表現、およびベクトルクエリに対して著しく高速化された検索速度を経験します。プラットフォームは現在、正確性を維持しつつ数万件/sec のクエリ処理を目標としており、今月初めに完全な CI パスが達成され、パフォーマンス最適化とパブリックベンチマークがその後に続きます。この進化により、turbopuffer は単純なサーバーレスベクトルデータベースから、インデックススループットやクラスタ数の人道的制限なしに多様なエンタープライズニーズを支援できる堅牢でスケーラブルなエンジンへと変容します。
本文
turbopuffer v3: ストレージアーキテクチャの革新と高速化
2026 年 9 月 30 日 | ダン・ハリスン(エンジニア)
turbopuffer はストレージアーキテクチャを変更し、検索機能を次のレベルへと引き上げます。v3 バージョンでは、ドキュメントやインデックスの配置方法、書き込み方式、圧縮処理、およびクエリ処理の方法が一新されます。これにより、以下の恩恵が得られます:
- 高速化: テキスト検索、正規表現検索、ベクトル検索など、あらゆる側面で性能向上を実現。
- SQL クエリの移行: 多くの SQL クエリを turbopuffer に移行可能にし、それらもまた高速に実行できる基盤を整備。
v1:ID とベクトルだけ(初期の設計)
turbopuffer は当初、極めて低コストで比較的高速なベクトル検索を提供することに特化したサーバーレス型ベクトルデータベース(vDB v1)としてリリースされました。
アーキテクチャの特徴
- 真理元: オブジェクトストレージを基盤とし経済性を確保。
- キャッシュ: ティアリングされた NVMe SSD メモリキャッシュでパフォーマンスを発揮。
- 検証: Cursor や Notion などの早期顧客によって、このトレードオフの価値が検証されました。
インデックス構造(階層クラスタリング)
グラフベースよりもオブジェクトストレージとの親和性が高い階層クラスタリングインデックスを採用しました。SPANN から増分型対応のための SPFresh へ移行する過程で、以下の木構造を形成します。
- ベクトルはクラスター(グループ)に集約される。
- クラスターの中心点(セントロイド)をさらに集約し、単一のルートノードを持つ木を作成。
┌───────────────────┐ │ root centroid │ └───────────────────┘ ╱ │ ╲ ╱ │ ╲ ┌───────────────────┐ ┌───────────────────┐ ┌───────────────────┐ │ leaf centroid │ │ leaf centroid │ │ leaf centroid │ └───────────────────┘ └───────────────────┘ └───────────────────┘ ╱ ╲ ╱ ╲ ╱ ╲ ╱ ╲ ╱ ╲ ╱ ╲ ┌────────┐ ┌────────┐ ┌────────┐ ┌────────┐ ┌────────┐ ┌────────┐ │ vector │ │ vector │ │ vector │ │ vector │ │ vector │ │ vector │ └────────┘ └────────┘ └────────┘ └────────┘ └────────┘ └────────┘
データのキー付け(ANN アドレス)
すべてのデータは
ClusterId と LocalId の組み合わせでキー付けられ、これを**「ANN アドレス」**と呼びます。これにより、ANN インデックスが主要なインデックスとして機能しました。
// リーフノードのベクトル例 K::Vector(C0L0) = vec![0.45, 0.32, ...] K::Id(C0L0) = 7 // クラスター C0 のセントロイドは、次のレベルの木で再度クラスタリングされる K::Vector(C1L4) = vec![0.64, -0.48, ...] K::Id(C1L4) = C0
v2:属性フィルタリングとフルテキスト検索
非公式な v1 から v2 への移行を象徴する二つの新しいクエリ計画が登場しました:属性フィルタリングとフルテキスト検索。
1. 属性フィルタリング
顧客は属性値を追加し、それに基づいてベクトル検索を絞り込みたいという要望がありました。高速性と高再現率を実現するため、逆インデックスとしてモデル化しました。
- マッピング: ドキュメントに含まれる特定の属性値に対して、その ANN アドレスへマッピング。
- 保存:
プロジェクションのため、属性情報は ID とベクトルと共に保存。include_attributes
// 逆インデックス例 K::AttrIndex("family", "Alcidae") -> vec![C0L3, C1L2, C1L3, ...] K::AttrIndex("genus", "Fratercula") -> vec![C0L3, C1L2, C1L9, ...] // ドキュメント内の保存データ K::Vector(C0L0) = vec![0.45, 0.32, ...] K::Id(C0L0) = 7 K::Attr(C0L0, "family") = "Alcidae" K::Attr(C0L0, "genus") = "Fratercula"
2.フルテキスト検索(FTS)
BM25 スコアリングによるフルテキスト検索も重要なクエリ計画の一つです。属性検索と同様に、まず出現するドキュメント(ポストイン)を見つけます。
- メタデータ: FTS インデックスには、スコアリングに必要な
を含む。(term count, document length) - 再構成: ポストインリストを ANN クラスター境界に沿わずに保存することで効率化。
// FTS インデックス例 K::FTS("description", "Atlantic") -> vec![(C0L0, 2, 37), (C9L4, 1, 42), ...] // 属性値への参照 K::Attr(C0L0, "description") -> "A sharply dressed black-and-white seabird with a \ huge, multicolored bill..."
v2 の成果と限界
これらに加え、集約処理やスパースベクトル検索など多様なインデックスがリリースされました。しかし、すべての基盤は**「ベクトル主体」のストレージ配置**でした。そのため以下のような制約がありました:
- GROUP BY や集約処理: 主要インデックスである ANN アドレスに依存するため計画が制限される。
- ブロックサイズの限界: CPU を飽和させる数千ドキュメントのブロックサイズが必要だが、クラスターサイズ(100〜200 ドキュメント)で停滞する。
ベクトル主要インデックスの問題点
ANN 主要インデックスが変更されなかった理由は、オブジェクトストレージ上での優位性でしたが、現在は3 つの重大な問題を抱えています。
- ストレージ増幅:
- ドキュメントの内容全体を ANN アドレスの下に格納するため、多ベクトル表現を持つ場合(ネステッド構造など)、内容を複製する必要が生じる。
- 書き込み増幅:
- SPFresh の再バランス(リバランシング)時、単一のベクトル更新で数百件の属性および逆インデックス(属性、FTS)も移動させられる。
- これにより書き込みスループットが低下し、逓減収益に達している。
- ベクトライゼーションの限界:
- モダンなクエリエンジン(DuckDB, ClickHouse など)は数千行級のブロックで動作するが、ANN インデックスはクラスターサイズに縛られ、CPU パイプラインや SIMD の効率化を損なう。
さようなら、主要ベクトルインデックス:turbopuffer v3
これらの問題に対する解決策はシンプルです:ANN アドレスでキー付けしないことが turbopuffer v3 です。これは大規模かつ複雑な変更ですが、以下を実現します。
新アーキテクチャのメリット
- 柔軟なブロックサイズ: クエリ計画ごとに最適なブロックサイズ(数千ドキュメント)を設定可能となり、CPU を飽和させる処理を効率化。
- 書き込み最適化: 再バランス時のインデックス移動コストを大幅に削減。
- ストレージ効率: データの複製を防ぎ、圧縮率向上を実現。
開発の状況とロードマップ
- マイルストーン: 先月末に「turbopuffer v3 における CI テストの 100% パス」を達成。
- 方針転換: 当初は「正しさ(correctness)」に焦点を当て、現在は**「正確かつ高速」**を目指しています。
- 公開予定: 公開環境でのロールアウトに向け、パフォーマンスパリティ(およびそれ以上)を示すベンチマーク結果を近いうちに一般公開。
turbopuffer について
turbopuffer は以下を実現した高速検索エンジンです。さらに大きな規模にも準備ができています。
- ホスト能力: 1T+ のドキュメントをホスト可能。
- 書き込み処理: 秒間 10M+ を処理可能。
- クエリ対応: 25k+ の同時クエリを扱える。
[今すぐ始める]