Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Elasticsearch の Search AI 技術 (2026.04)

Elasticsearch の Search AI 技術 (2026.04)

Elasticsearch が提供する Search AI 技術を解説したスライドです。
・Jina AI モデル: jina-embeddings-v5-text-small, jina-reranker-v3, jina-colbert-v2, jina-clip-v2
・モデル推論サービス: Elastic Inference Service
・疎な語彙拡張モデル: SPLADE と ELSER
・ベクトル量子化技術: RaBitQ, BBQ, DiskBBQ
・その他: ACORN, RRF, Linear Retriever, Diversify Retriever

Avatar for Masayuki Hiyama

Masayuki Hiyama

April 19, 2026

More Decks by Masayuki Hiyama

Other Decks in Technology

Transcript

  1. 全体像 検索インデックス 本コンテンツの内容 • 1. Jina AI の Search AI

    モデル - 埋め込みモデル - リランキングモデル • 2. 疎な語彙拡張モデル - SPLADE - ELSER • 3. ベクトル量子化技術 - RaBitQ - BBQ, DiskBBQ • 4. その他の技術 - ACORN - ランク融合 (RRF, Linear Retriever) - Diversify Retriever Elasticsearch の Search AI 技術 疎な語彙拡張モデル SPLADE, ELSER 埋め込みモデル jina-embeddings-v5 ベクトル量子化 RaBitQ, BBQ リランキング jina-reranker-v3 検索文書 検索結果 検索クエリ ランク融合 RRF, Linear Retriever Diversify Retriever ベクトルインデックス DiskBBQ, ACORN 転置インデックス Index Phase Search Phase
  2. 全体像 検索インデックス 本コンテンツの内容 • 1. Jina AI の Search AI

    モデル - 埋め込みモデル - リランキングモデル • 2. 疎な語彙拡張モデル - SPLADE - ELSER • 3. ベクトル量子化技術 - RaBitQ - BBQ, DiskBBQ • 4. その他の技術 - ACORN - ランク融合 (RRF, Linear Retriever) - Diversify Retriever Elasticsearch の Search AI 技術 疎な語彙拡張モデル SPLADE, ELSER 埋め込みモデル jina-embeddings-v5 ベクトル量子化 RaBitQ, BBQ リランキング jina-reranker-v3 検索文書 検索結果 検索クエリ ランク融合 RRF, Linear Retriever Diversify Retriever ベクトルインデックス DiskBBQ, ACORN 転置インデックス Index Phase Search Phase
  3. Elasticsearch がサポートする多彩な検索方式 Multi-Stage Retrieval: 複数ステージで複数 AI モデルを使い分ける 1. First-Stage Retrieval

    超大量の文書の中から関連文書のあたりをつける 2. Reranking 高精度モデルで検索結果として返す文書を選定 キーワード検索 BM25, TF-IDF など 語彙拡張検索 SPLADE, ELSER など 密ベクトル検索 Bi-Encoderモデルなど Learning to Rank ログからモデル生成 主に推薦用途 Cross-Encoder テキスト単位類似度 によるランク調整 ColBERT トークン単位類似度 によるランク調整 高速な検索 キーワード重視 高い説明可能性 高度な検索 意味/文脈重視 複数方式の組み合わせで ハイブリッド検索
  4. Jina AI の Search AI モデル - 2025年10月に Search AI

    モデル開発に特化した企業である Jina AI を M&A - コンパクトで高速、かつ高精度な検索を実現するモデルを開発していることが特徴 - 本連携により、高度なベクトル検索やリランキング処理を Elasticsearch に容易に統合できるように 検索プラットフォームサービスと Search AI モデルの融合 埋め込みモデル 高精度なベクトル検索を実現するためのモデル jina-embeddings-v5 テキスト埋め込み jina-embeddings-v3 テキスト埋め込み jina-clip-v2 画像検索用のテキスト/画像埋め込み jina-embeddings-v4 マルチモーダル埋め込み 埋め込みモデル 最終検索結果を並び替えるためのモデル jina-reranker-v3 多言語リランカー jina-reranker-m0 多言語マルチモーダルリランカー jina-colbert-v2 Late Interaction リランカー その他のモデル 多様な検索シチュエーションで使えるモデル jina-vlm 多言語マルチモーダルモデル ReaderLM-v2 HTML を Markdown に変換するモデル ELSER v2 疎の語彙拡張モデル (SPLADE)
  5. jina-embeddings-v5-text-small • 主な特徴 - 1B 未満モデルの中で業界標準ベンチマークで最上位 → コンパクト多言語モデルの中で最高性能 - 32,768

    トークンの長コンテキストに対応 • タスクごとに最適化した LoRA アダプタ - Retrieval (非対称検索) - STS (テキスト類似度) - Clustering (クラスタリング) - Classification (分類) • グローバル直交正則化(GOR)の適用 - ベクトルの分布を均一に (異方性問題への対処) - バイナリ量子化における精度劣化を最低限に → Elastic の BBQ/DiskBBQ と相性が良い コンパクトで高精度なテキスト埋め込みモデル [2602.15547] jina-embeddings-v5-text: Task-Targeted Embedding Distillation jina-embeddings-v5-text:コンパクトな多言語埋め込みモデル - Elasticsearch Labs 2026/02 # 開発元 モデル サイズ(B) 平均スコア 1 Microsoft harrier-oss-v1-27b 27 74.27 2 Tencent KaLM-Embedding-Gemma3-12B-2511 12 72.32 3 NVIDIA llama-embed-nemotron-8b 8 69.46 4 Alibaba Qwen3-Embedding-8B 8 70.58 5 Google gemini-embedding-001 非公開 68.37 6 Alibaba Qwen3-Embedding-4B 4 69.45 7 Octen Octen-Embedding-8B 8 67.84 8 CodeFuse AI F2LLM-v2-14B 14 68.74 9 CodeFuse AI F2LLM-v2-8B 8 68.09 10 Microsoft harrier-oss-v1-0.6b 0.6 69.01 11 ByteDance Seed1.6-embedding-1215 非公開 70.26 12 CodeFuse AI F2LLM-v2-4B 4 67.06 13 Jina AI jina-embeddings-v5-text-small 0.6 67 14 CodeFuse AI F2LLM-v2-1.7B 1.7 65.21 15 Microsoft harrier-oss-v1-270m 0.3 66.55 16 Alibaba Qwen3-Embedding-0.6B 0.6 64.34 17 Jina AI jina-embeddings-v5-text-nano 0.2 65.52 18 Alibaba gte-Qwen2-7B-instruct 7 62.51 MTEB Leaderboard (2026/04/10 時点)
  6. (参考) 異方性問題 (Anisotropy) • Isotropy (等方性) - ベクトル分布に偏りがない状態 - コサイン類似度が意味的に適切に機能

    - 近年の対照学習の進化で等方性が実現しやすい • Anisotropy (異方性) - ベクトルが空間の狭い範囲に密集している状態 - どのベクトル同士でも類似度が高くなる - バイナリ量子化をすると被害が顕著に - 多段階訓練やMRL対応などで対応しないと発生しがち ベクトル分布の偏りによる距離計算の精度劣化 Paper review: SimCSE: Simple Contrastive Learning of Sentence Embeddings | by CSI | Medium 程よく分散している 良い状態 コーン状に一部に密集 意味合いが異なるトークン の距離も近くなる
  7. (参考) GOR: Global Orthogonal Regularizer • GOR の効果 - 埋め込みが埋め込み空間上でより一様に分布するよう促す

    (等方化) - 無関係なサンプル同士の埋め込み内積が0付近(垂直)になるようにする • Jina AI での GOR 損失関数の使用 - Retrieval タスクの訓練で使用 - 異方性を緩和 • Elastic の BBQ との相性の良さ - バイナリ量子化の課題は異方性問題 → 細かな違いが判別しづらくなる - RaBitQ でのランダム直行変換をスキップしている BBQ と相性が良い グローバル直交正則化による異方性の緩和 [1708.06320] Learning Spread-out Local Feature Descriptors バッチ内の異なるクエリペア の内積の二乗平均 バッチ内の異なる正例文書ペ アの内積の二乗平均 GOR損失関数 Retrievalタスク用 の損失関数 InfoNCE損失 蒸留損失 GOR損失 Qwen3-Embedding-4B の出力との差異 異なるペアの内積 正例を近く負例を遠くする ための損失
  8. jina-reranker-v3 • 主な特徴 - Qwen3-0.6B をベースに訓練 (MLMではなく生成モデル) - 0.6B と小規模だが

    BEIR で当時の最高水準スコア(SOTA) を記録 → 高速で高精度 - 131Kトークンと長コンテキスト対応 • 複数の文章を同時にリランキング - 従来の Cross-Encoder リランカーは Pointwise エンコーディング - 本モデルは Listwise エンコーディングを採用 - 1回の推論で複数文書のスコアリングが可能 - 高速なリランキング - 他文章も考慮した相互作用付きの高精度スコアリング 高速で文章間相互作用を考慮したスコアリングを実現 [2509.25085] jina-reranker-v3: Last but Not Late Interaction for Listwise Document Reranking Jina Reranker v3: SOTA多言語検索向け0.6B Listwise 重排器 2025/10 jina-reranker-v3 検索クエリ 検索文書1 検索文書2 … 関連度スコア (クエリ×文書1) 関連度スコア (クエリ×文書2)
  9. jina-reranker-v3 のスコアリング方法 複数文書を同時にスコアリングが可能 [2509.25085] jina-reranker-v3: Last but Not Late Interaction

    for Listwise Document Reranking Jina Reranker v3: SOTA多言語検索向け0.6B Listwise 重排器 2025/10 検索クエリ 検索文書 Bi-Encoder Bi-Encoder ベクトル ベクトル 距離計算 (コサイン類似度など) 関連度スコア Cross-Encoder 関連度スコア 検索クエリ 検索文書 jina-reranker-v3 ※一般的なやつ 検索クエリ 検索文書1 検索文書2 … 関連度スコア (クエリ×文書1) 関連度スコア (クエリ×文書2) ベクトル検索 一般的なリランキング 今回の方式
  10. jina-colbert-v2 • ColBERT - 2020年にスタンフォード大学から発表された Late Interaction 技術 - トークン(単語)レベルで埋め込みを保持

    - 検索クエリと検索文書でトークンレベルの類似度を計算 - 最大類似度の総和をスコアにリランキング - 密な類似度計算(Cross-Encoder) +事前エンコード可能(Bi-Encoder)の組み合わせ • Jina AI の ColBERT - ベースモデルを BERT から XLM-RoBERTa に - 絶対一埋め込みから RoPE へ - コンテキスト長が 512 → 8192トークンへ - 英語のみ → 多言語(89言語)対応へ - Flash Attention 導入, MRL対応 など Late Interaction による高速かつ緻密な類似度計算 [2004.12832] ColBERT: Efficient and Effective Passage Search via Contextualized Late Interaction over BERT [2408.16672] Jina-ColBERT-v2: A General-Purpose Multilingual Late Interaction Retriever Jina ColBERT v2:多言語遅延インタラクション型エンベディング・リランキング検索システム 2024/08
  11. Bi-Encoder と ColBERT の違い ColBERT This [V1, ... Vn] is

    [V1, ... Vn] a [V1, ... Vn] cat [V1, ... Vn] Query [V1, ... Vn] [V1, ... Vn] [V1, ... Vn] [V1, ... Vn] I am a dog 埋め込み 埋め込み → 最大類似度を This の関連度 → 全クエリトークンの最大類似度の総和 = クエリ・文書間の関連度 Bi-Encoder This [V1, ...] is [V1, ..., Vn] a cat Query Pooling [V1, ... Vn] Document [V1, ... Vn] CLS [V1, ..., Vn] [V1, ..., Vn] [V1, ..., Vn] I am a dog CLS 埋め込み 類似度計算 (コサイン類似度など) Pooling Document 1文章を1埋め込みとして出力
  12. jina-clip-v2 - 多言語テキストと画像をサポートするマルチモーダル埋め込みモデル - 2021年に OpenAI によって発表された CLIP をベースとしている -

    0.9B と小規模モデルながら高いクロスモーダル検索性能 - 画像類似検索や、EC でのテキストから画像のクロスモーダル商品検索などで活用可能 コンパクトなマルチモーダル埋め込みモデル [2412.08802] jina-clip-v2: Multilingual Multimodal Embeddings for Text and Images Jina CLIP v2:テキストと画像のための多言語マルチモーダル埋め込み 2024/12 テキストと画像の埋め込みを 同じ表現空間に射影 (対象学習で訓練) テキストエンコーダ ビジョンエンコーダ ベクトル テキスト埋め込み 画像 街を駆け抜ける猫 テキスト 関連度スコア 0.89 ベクトル 画像埋め込み 距離計算 (コサイン類似度など)
  13. Elastic Inference Service リランキング 埋め込みモデル LLM Elastic Inference Service •

    マネージド GPU 推論サービス - Elastic 社が管理する推論環境をサービスとして利用 - ベクトル検索などでは GPU を使った AI モデル利用が必須 - ユーザは GPU 環境を自前での構築・スケールが不要に → 運用負荷・TCO の削減 - 様々なモデルの利用を簡単に切り替えることができる • 主な利用用途 - ベクトル検索: semantic_text フィールドタイプの指定による インデクシング&検索時に自動で埋め込み処理 - Elastic Agent Builder におけるエージェントの推論処理 - 検索結果のリランキング Elastic 社が提供する AI モデルの推論サービス Jina Embeddings v5 Small Jina Embeddings v5 Nano Jina CLIP v2 ELSER v2 Gemini Embedding 001 OpenAI Embedding 3 Large OpenAI Embedding 3 Small Multilingual E5 Large Jina Reranker v3 Jina Reranker v2 Claude Opus 4.6 Claude Opus 4.5 Claude Sonnet 4.6 Claude Sonnet 4.5 Claude Haiku 4.5 Claude Sonnet 3.7 Gemini 2.5 Pro Gemini 2.5 Flash GPT 5.2 GPT 4.1 GPT 4.1 Mini GPT-OSS 120B ユーザ AIエージェント 検索インデックス 推論・生成 ベクトル変換 AI エージェントの RAG 環境構築の基盤となるサービス
  14. semantic_text フィールドを使った Elastic Inference Service の利用 - フィールドタイプを text ではなく

    semantic_text とする - inference_id で指定した埋め込みモデルで自動でベクトル化をしてくれる - 自前でドキュメントの埋め込み処理を行う必要がなく、ベクトル検索導入を高速化できる 非常に容易にベクトル検索の導入が可能に Elastic Inference Service | Elastic Docs es.indices.create( index="sample-semantic-search-index", mappings={ "properties": { "content": { "type": "semantic_text", "inference_id": ".jina-embeddings-v5-text-small", }, } }, ) インデクシング時と検索時に このモデルで自動的にベクトル化をしてくれる フィールドタイプを変更するだけ
  15. 全体像 検索インデックス 本コンテンツの内容 • 1. Jina AI の Search AI

    モデル - 埋め込みモデル - リランキングモデル • 2. 疎な語彙拡張モデル - SPLADE - ELSER • 3. ベクトル量子化技術 - RaBitQ - BBQ, DiskBBQ • 4. その他の技術 - ACORN - ランク融合 (RRF, Linear Retriever) - Diversify Retriever Elasticsearch Search AI 技術勉強会 疎な語彙拡張モデル SPLADE, ELSER 埋め込みモデル jina-embeddings-v5 ベクトル量子化 RaBitQ, BBQ リランキング jina-reranker-v3 検索文書 検索結果 検索クエリ ランク融合 RRF, Linear Retriever Diversify Retriever ベクトルインデックス DiskBBQ, ACORN 転置インデックス Index Phase Search Phase
  16. SPLADE: SParse Lexical AnD Expansion model • 概要 - 2021年にNAVER

    Labs Europeが発表した、Transformer (BERT) ベースのニューラル検索モデル - 文書やクエリを 語彙ベースの疎 (スパース) ベクトル に変換し、文脈理解と高速検索を両立 • 仕組み - BERTの最終出力層から単語の重要度を計算して Poolingと対数飽和関数を通してスパース化 - 文脈から推測される同義語などを自動的に補完する 語彙拡張 の機能を持つ • 有効なシーン - 超大規模データを対象にした高速かつ高精度なセマンティック検索 - 既存のキーワード検索(BM25など)の拡張 - 説明可能性が高い検索が必要な場合 疎な語彙拡張モデル [2107.05720] SPLADE: Sparse Lexical and Expansion Model for First Stage Ranking [2109.10086] SPLADE v2: Sparse Lexical and Expansion Model for Information Retrieval [2403.06789] SPLADE-v3: New baselines for SPLADE 情報検索 検索 (1.86) 情報 (1.69) データ (0.98) 空間 (0.81) … SPLADE 疎な語彙拡張モデル
  17. 疎な語彙拡張モデルの動作 入力した文章中の単語と共起関係のある単語に重みを付けて出力するモデル 1 2 … 1024 1025 1026 1027 …

    5123 5124 … 32768 [PAD] [UNK] … 検索 情報 データ 空間 … 犬 猫 … Les 0 0 … 1.86 1.69 0.98 0.81 … 0 0 … 0 Query: 情報検索 疎な語彙拡張モデル SPLADE, ELSER など 語彙数分だけ出力 クエリの単語と関連単語に重みが付いたベクトルを出力 ほとんどの値がゼロ (疎ベクトル) 非ゼロのみを取得 検索 (1.86) 情報 (1.69) データ (0.98) インデックス (0.88) カフェ(0.01) … 疎な語彙拡張モデル Document: サーチ サーチ (1.66) 検索 (0.91) 都市 (0.61) 情報 (0.17) すすめ(0.06) … 拡張クエリ: 拡張文章: 元のトークンでも拡張語彙でもヒット Token ID: Token: Weights:
  18. 密ベクトルモデルとの訓練方法の違い SPLADE v2 (2021) 疎の語彙拡張モデル jina-embeddings-v3 (2024) よくある密ベクトルモデル ベースモデル DistilBERT-base

    BERTベースのモデル XLM-RoBERTa BERTベースのモデル 損失関数 InfoNCE + In-Batch Negatives 一般的な埋め込みモデルの対照学習で使われる関数 InfoNCE, Triplet損失, CoSent損失 一般的な埋め込みモデルの対照学習で使われる関数 正則化 FLOPS 正則化 ℓFLOPS = ෍ 𝑗∈𝑉 𝑎𝑗 2 = ෍ 𝑗∈𝑉 1 𝑁 ෍ 𝑖=1 𝑁 𝑤 𝑗 𝑑𝑖 2 バッチ内に多く登場するトークンほど大きなペナルティが課される設計 多くの文章で登場する単語は重みが0になるように → IDF のような 特別は正則化手法はなし 活性化関数 GeLU 関数 + 対数飽和付きの ReLU 関数 𝑤𝑗 = ෍ 𝑖∈𝑡 log 1 + ReLU 𝑤𝑖𝑗 ReLU 関数で負の重みが0に → スパース出力になる 対数関数(log)を使うことで強すぎる重みを飽和 → BM25のTF飽和のような GeLU 関数 𝑤𝑗 = ෍ 𝑖∈𝑡 GeLU 𝑤𝑖𝑗 一般的な Transformer モデルで使用される 出力内容 30,522次元の粗ベクトル 各語彙の重みが語彙数だけ出力される ほぼ0であり、0より大きい場合は入力と共起関係があるトークン 1,024次元の密ベクトル SPLADE v2: Sparse Lexical and Expansion Model for Information Retrieval Jina Embeddings V3: Multilingual Embeddings With Task LoRA
  19. 疎ベクトル検索と密ベクトル検索 キーワード検索 TF-IDF, BM25 など 学習済み疎検索 SPLADE, ELSER など 密ベクトル検索

    Bi-Encoder モデル など ベクトル 疎ベクトル 密ベクトル インデックス方式 転置インデックス 非ゼロ値は格納しない ベクトルインデックス 全ベクトル値を格納 トークン化方式 解析機 形態素解析機など Transformer ベース BERT など セマンティック検索 ✕ ◯ 検索方式 語彙一致 拡張された語彙も含む 意味的な類似度 コサイン類似度など 語順の考慮 ✕ Bag-of-Words ◯ Transformer の文脈理解次第 高速な検索, キーワード重視 高い説明可能性 高度な検索, 意味/文脈重視
  20. ELSER: Elastic Learned Sparse EncodeR • Elastic 社が開発した疎な語彙拡張モデル - SPLADE

    が非商用利用ライセンスのため、Elastic 社 が SPLADE をベースに開発 • SPLADE との違い - より高品質なモデルの motot5 3b を教師モデルとして蒸留 - 新たに約39万件の高品質な Q&A ペアを追加して追加学習 - ハイブリッド動的量子化によるメモリ使用量の削減 - クエリトークン刈り込みによる検索の高速化 - Intel Extension for PyTorch(IPEX)への対応 (x86-64 Optimized) • モデル情報 - モデルパラメータ: 100~110M (0.1B) - 最大コンテキスト長: 512 - 対応言語: 英語のみ SPLADEの理論をベースにしつつ実用性と導入ハードルを極限まで最適化 Elastic Learned Sparse Encoder (ELSER): Retrieval performance - Elasticsearch Labs ElSER v2: Improved information retrieval & inference performance - Elasticsearch Labs ELSER: Optimizing retrieval with ELSER v2 - Elasticsearch Labs
  21. 全体像 検索インデックス 本コンテンツの内容 • 1. Jina AI の Search AI

    モデル - 埋め込みモデル - リランキングモデル • 2. 疎な語彙拡張モデル - SPLADE - ELSER • 3. ベクトル量子化技術 - RaBitQ - BBQ, DiskBBQ • 4. その他の技術 - ACORN - ランク融合 (RRF, Linear Retriever) - Diversify Retriever Elasticsearch の Search AI 技術 疎な語彙拡張モデル SPLADE, ELSER 埋め込みモデル jina-embeddings-v5 ベクトル量子化 RaBitQ, BBQ リランキング jina-reranker-v3 検索文書 検索結果 検索クエリ ランク融合 RRF, Linear Retriever Diversify Retriever ベクトルインデックス DiskBBQ, ACORN 転置インデックス Index Phase Search Phase
  22. スカラー量子化 / バイナリ量子化 ベクトル量子化技術 • ベクトル量子化 (VQ) - ベクトルをk-meansなどでクラスタリング -

    各クラスタの代表ベクトル (セントロイド) のコードブックを構築 - 各データベクトルは最近傍セントロイドのインデックスに置き換え - 元ベクトルの近似表現として格納 • 直積量子化 (PQ) - 元の高次元ベクトルをM個のサブベクトルに分割 (直積) - 各部分空間ごとにk-meansで独立にコードブックを学習 • スカラー量子化 (SQ) - 各次元のfloat32値をint8等の低ビット表現に線形マッピング - 次元ごとに独立して圧縮 • バイナリ量子化 (BQ) - 各次元の値が正なら1、負なら0に変換し、1次元を1ビットで表現 0.8912345 -0.3574921 -0.7654321 114 -46 -98 1 0 0 INT8 1bit 埋め込みベクトル (32bit: FP32) … … … ベクトル量子化 [0.1, -0.2, ... ] [-0.5, -0.8, ... ] 埋め込みベクトル コードブック 0: [ 1.0, 0.2, ... ] 1: [ 0.2, -0.1, ... ] 2: 最も近い 2 これをインデックスに格納 (1次元/数bit) 検索時は[0.2, -0.1, ...]を使用 (セントロイドの値)
  23. ReBitQ • 概要 - ベクトルを正規化してランダム直交行列(JLT)で回転 → 雑に丸めても正確な距離計算ができるように異方性を除去 - 各次元の符号(±)のみを保存し 1次元1ビットに圧縮

    → FP32 比で32倍圧縮 - 補正係数を別途保存して距離推定の精度を維持 • 精度劣化を抑えたバイナリ量子化 - ベクトルを 1bit に圧縮すると誤差は最悪でも1/ 𝐷 程度と証明 → 誤差は平均するとゼロでとなるので一方向に偏らない → 次元数D が大きいほど誤差が小さくなる - CPU が得意なビット演算+スカラー補正でPQ 比で約3倍高速な距離計算 - VQ/PQのようにk-means等の学習が不要でインデックス構築も高速 D次元ベクトルを D ビットに圧縮するバイナリ量子化手法 [2405.12497] RaBitQ: Quantizing High-Dimensional Vectors with a Theoretical Error Bound for Approximate Nearest Neighbor Search RaBitQ Binary quantization 101: An Introduction - Elasticsearch Labs セントロイドを計算して正規化 ±1/ 𝐷で丸めて直交行列で回転
  24. ReBitQ の量子化プロセス [2405.12497] RaBitQ: Quantizing High-Dimensional Vectors with a Theoretical

    Error Bound for Approximate Nearest Neighbor Search RaBitQ Binary quantization 101: An Introduction - Elasticsearch Labs 元のベクトル分布 正規化 コードブックの構築 ランダム直交行列による回転 バイナリ量子化 • セントロイドを中心に 単位ベクトルに変換 • 単位超球面へ射影 • 𝑜 = 𝑜𝑟−𝑐 𝑜𝑟−𝑐 データの中心𝑐 (セントロイド) を計算 ( 1 𝐷 , 1 𝐷 ) (− 1 𝐷 , 1 𝐷 ) (− 1 𝐷 , − 1 𝐷 ) ( 1 𝐷 , − 1 𝐷 ) • コードブック𝐶を構築 • 𝐶 = ± 1 𝐷 , … , ± 1 𝐷 • D次元超立方体の頂点 • いずれもノルムが常に1の 単位超球面上にある • bit の 1 は 1 𝐷 として 0 は− 1 𝐷 として距離計算に使用 • ランダム直交行列をかけて回転 • コードブックだけを使うと、 軸方向のベクトルはどの点からも遠い → 誤 差が0~0.77とバラつく • 回転ありだと誤差が均一化 • 量子化によるバラツキを抑える → 異方性への対応 • 最近傍のセントロイド(回転後) を探す • ベクトル [1, 0.022] は コード[1, 0] であり、 圧縮後ベクトル [0.974, -0.225] として距離計算に使用 • 推定値 = ത 𝑜,𝑞 ത 𝑜,𝑜 を使用 (圧縮後ベクトルと圧縮前ベクトルの内積で除算) • ランダム回転により、 量子化誤差が 1/ 𝐷 に収まる • 次元が大きいほど誤差が小さく
  25. (参考) PQ と RaBitQ と のコードブックの作り方の違い • サブベクトルごとにk-Means 等でクラスタリングしてセントロ イドを決定

    → コードブック作成 • クラスタリングの訓練コストがかかる • ベクトル分布に偏りがあると圧縮後の精度に影響 PQ (直積量子化) RaBitQ • セントロイドを𝐶 = ± 1 𝐷 , … , ± 1 𝐷 で固定 • インデクシングが高速、偏りの影響も少ない • ランダム回転させてベクトル分布を等方化 • コードブックの値から圧縮前後の内積で復元
  26. BBQ: Better Binary Quantization • 概要 - RaBitQの考え方を Elasticsearch に実戦投入できるよう再設計

    - ランダム回転を省略 → 速度重視 - リスコアを一括後処理にすることでI/O効率と速度を最優先 • RaBitQとの違い - ランダム直交行列での回転の省略でインデックス作成を高速化 → 最新の埋め込みモデルは異方性が小さいので問題ないと判断? - 量子化誤差に基づくリスコア処理を、グラフ探索後に一括で処理 → I/O 効率化, CPU キャッシュの最大利用のメリット - クエリベクトルは 4bit で量子化して検索 (文書は 1bit) • BBQ を使った探索処理 - バイナリ量子化で探索 → 元精度ベクトルでリスコアとされる - なのでインデックスサイズは小さくならない (むしろ微増) Elastic が開発したバイナリ量子化技術 Elastic BBQ: Better Binary Quantization in Lucene & Elasticsearch - Elasticsearch Labs Elasticsearch BBQ vs. OpenSearch FAISS: Vector search comparison - Elasticsearch Labs 精度劣化を最低限にしつつ高速な検索を実現 高いスループット
  27. BBQ: Better Binary Quantization • メモリ消費量 - 量子化なし: 4,162 MB

    - BBQ: 208 MB (約1/20) • 検索精度 - 3倍のオーバーサンプリングでRecall 90%超を達成 Cohere Embed V3 モデル (1024次元) で 1M ベクトルをインデクシングしたときの例 Index Time (ms) Force Merge Time (ms) Mem Required bbq 338.97 342.61 208MB 4 bit 398.71 480.78 578MB 7 bit 437.63 744.12 1094MB raw 408.75 798.11 4162MB Elastic BBQ: Better Binary Quantization in Lucene & Elasticsearch - Elasticsearch Labs
  28. DiskBBQ • 階層的K-Means + BBQ圧縮 + SOAR - IVF の進化系で階層的

    K-Means でベクトルを小さなクラスタに分割 → 検索時は最大2レイヤーの候補クラスタ選定して近傍探索 → 近傍探索時には元精度ベクトル(FP32)を用いる (高精度) - Google の SOAR を採用、ベクトルが複数クラスタに割り当て → クラスタ境界での取りこぼしを防止 - ベクトルもセントロイドも BBQ で圧縮 • 速度&コスト重視の大規模ベクトル検索 - HNSWが全ベクトルをRAMに常駐させる - DiskBBQは必要なクラスタだけディスクから読み込む → クラスタセントロイドと探索中クラスタのみ RAM へ - インデックス作成も bbq_hnsw 比で約10倍高速 全データ RAM 常駐を不要にしたディスクベースのBBQ量子化ベクトル検索 Elastic DiskBBQ introduction: An alternative to HNSW - Elasticsearch Labs 小メモリサイズてもインデクシングが早い 小メモリサイズても検索が早い
  29. Elastic での BBQ/DiskBBQ の使い方 Better Binary Quantization (BBQ): How &

    why to implement - Elasticsearch Labs PUT bbq_hnsw-index { "mappings": { "properties": { "my_vector": { "type": "dense_vector", "dims": 1024, "index": true, "index_options": { "type": "bbq_disk", "bits": 1 } } } } } インデックス定義の例 検索クエリの例 GET bbq-index/_search { "knn": { "field": "my_vector", "query_vector": [0.12, -0.45, ...], "k": 10, "rescore_vector": { “oversample": 3 } "num_candidates": 100, } } 検索結果 検索クエリ (Text) ベクトル (32bit) ベクトル (4bit) シャード シャード シャード オーバーサンプリング k * oversample 各シャードの候補 num_candidates * シャード数 埋め込みモデルでベクトル化 BBQで量子化 シャードごとに 1bit の文書で 候補を検索 ここでも1bit の文書で 候補を選定 ここで元精度(FP32)で 距離の再計算をしてリランキング 検索文書(1bit) 検索文書(32bit) 検索処理のイメージ ※ dims>383 の場合は bbq_hnsw が既定 ※ dims<384 の場合は int8_hnsw が既定
  30. 全体像 検索インデックス 本コンテンツの内容 • 1. Jina AI の Search AI

    モデル - 埋め込みモデル - リランキングモデル • 2. 疎な語彙拡張モデル - SPLADE - ELSER • 3. ベクトル量子化技術 - RaBitQ - BBQ, DiskBBQ • 4. その他の技術 - ACORN - ランク融合 (RRF, Linear Retriever) - Diversify Retriever Elasticsearch の Search AI 技術 疎な語彙拡張モデル SPLADE, ELSER 埋め込みモデル jina-embeddings-v5 ベクトル量子化 RaBitQ, BBQ リランキング jina-reranker-v3 検索文書 検索結果 検索クエリ ランク融合 RRF, Linear Retriever Diversify Retriever ベクトルインデックス DiskBBQ, ACORN 転置インデックス Index Phase Search Phase
  31. ACORN • HNSW でのフィルタ付きベクトル検索の問題点 - Pre-Filitering: 前フィルタ処理で検索時間が長い - Post-Filtering: 結果が足りないとやり直し

    → 検索時間長くなる • ACORN - HNSW をベースに探索中にフィルタリングを行う → HNSW だとフィルタのせいで2ホップ先に辿り着かないのが問題 - ACORN-γ - M × γ 倍の接続を持たせ、HNWS より密なネットワークを構築 - フィルタがあっても必ず2ホップ先にたどり着くように - ACORN-1 - 2ホップ先も探索対象とする - Elasticsearch の場合はこの方式をデフォルトで有効になっている HNSW で高速なフィルタ付きベクトル検索の実現 [2403.04871] ACORN: Performant and Predicate-Agnostic Search Over Vector Embeddings and Structured Data HNWS の問題 フィルタで2ホップ先の 近傍ノードを見つけられない ACORN-1 での探索 2ホップ先も探索対象とする
  32. Elasticsearch でのランク融合 • RRF: Reciprocal Rank Fusion - ランク(順位)基準で融合 -

    スコアを意識せず、複数検索手法を組み合わせたいときに • Linear Retriever - 正規化されたスコア基準で融合 - 各検索結果内での最大スコアと最低スコアでMin-Max正規化 - 各 Retriever の寄与度(Weights) 設定が有効 (※ RRF でも可能) 複数方式の検索結果を1つの結果として融合 Reciprocal rank fusion | Elasticsearch Reference Linear retriever | Elasticsearch Reference GET my_index/_search { "retriever": { "linear": { "retrievers": [ { "retriever": { "knn": { "field": "title_vector", "query_vector": [0.1, 0.2, 0.3], "k": 10, "num_candidates": 100 } }, "weight": 5 <1> }, { "retriever": { "standard": { "query": { "match": { "title": "elasticsearch“ } } } }, "weight": 1.5 <2> } ], "normalizer": "minmax" } } } Linear Retriever のクエリの例: 𝑅: 𝑅𝑒𝑡𝑟𝑖𝑒𝑣𝑒𝑟 𝑟 𝑑 : 特定𝑅𝑒𝑡𝑟𝑖𝑒𝑣𝑒での文書𝑑のランク 𝑘: 定数(𝑘 ≈ 58.999? )
  33. Diversify Retriever • MMR: Maximum Marginal Relevance の実現 - 検索結果として既に選択された文書から遠い文書を選択

    - λ が 0 になるほど多様性を重視した検索結果となる • 実現できること - 探索的検索 (Exploratory Search) の実現 → EC や製品検索での検索結果の多様化 - 検索結果の重複排除 → RAG におけるコンテキストの節約 (質問回答, 調査&要約) MMR による新規性向上のための多様な検索結果の実現 Diversify retriever | Elasticsearch Reference The Use of MMR, Diversity-Based Reranking for Reordering Documents and Producing Summaries GET my_index/_search { "retriever": { "diversify": { "type": "mmr", "field": "my_dense_vector_field", "lambda": 0.7, "size": 3, "query_vector": [0.1, 0.2, 0.3], "retriever": { "standard": { "query": { "match": { "title": "elasticsearch" } } } } } } } Diversify Retriever のクエリの例: クエリと対象文書の関連度 既に選ばれた文書と対象文書 の最大類似度
  34. 全体像 検索インデックス 本コンテンツの内容 • 1. Jina AI の Search AI

    モデル - 埋め込みモデル - リランキングモデル • 2. 疎な語彙拡張モデル - SPLADE - ELSER • 3. ベクトル量子化技術 - RaBitQ - BBQ, DiskBBQ • 4. その他の技術 - ACORN - ランク融合 (RRF, Linear Retriever) - Diversify Retriever Elasticsearch の Search AI 技術 疎な語彙拡張モデル SPLADE, ELSER 埋め込みモデル jina-embeddings-v5 ベクトル量子化 RaBitQ, BBQ リランキング jina-reranker-v3 検索文書 検索結果 検索クエリ ランク融合 RRF, Linear Retriever Diversify Retriever ベクトルインデックス DiskBBQ, ACORN 転置インデックス Index Phase Search Phase