概要
- Web検索エンジン をゼロから構築した2ヶ月間の挑戦記録
- 従来の検索エンジン の問題点と Transformerベース技術 の活用動機
- 大規模クロール・埋め込み生成・分散インフラ の構築工程
- 正確な意味理解・高品質コンテンツ発見 を目指した設計思想
- 構成・正規化・チャンク化 など主要技術要素の詳細解説
Web検索エンジン自作プロジェクトの動機と全体像
- 従来検索エンジン の品質低下と SEOスパム 増加に対する課題意識
- Transformer系テキスト埋め込みモデル の自然言語理解力への期待
- なぜ「常に高品質なコンテンツが上位に出ないのか」という素朴な疑問
- キーワード一致中心の既存検索の限界と 人間的な知能 への憧れ
- NLP・ML・分散システム・パフォーマンス工学 など広範な分野への挑戦意欲
- 自作検索エンジン を持つことの面白さ・学びの場としての意義
2ヶ月間の構築ハイライト
- 200台GPUクラスター で 30億件 のSBERT埋め込み生成
- 数百台のクローラー で 毎秒5万ページ をクロール、最終 2.8億ページ のインデックス化
- クエリ応答遅延500ms 実現
- RocksDB・HNSW を 200コア/4TB RAM/82TB SSD に分散シャーディング
- ライブデモ として一般公開
システム全体構成(アーキテクチャマップ)
- Proving ground :ニューラル埋め込みによる検索精度検証環境
- Normalization :HTML正規化・ノイズ除去
- Chunking :文単位の分割
- Semantic context :文脈維持・意味的関連付け
- Statement chaining :文・段落の連鎖的意味理解
- Initial results :初期検索結果の評価
- Crawler/Pipeline/Storage/Service mesh/GPU buildout :分散処理基盤
- Sharded HNSW :高速近傍探索のシャーディング
- Optimizing latency :低遅延化
- Knowledge graph/SERP/AI assistant/State tracking :知識グラフ・対話型支援
- Search quality/Live demo/Costs/Conclusion :品質評価・コスト・まとめ
Proving Ground(検証環境)
- Webページを分割・埋め込み化 し、複雑な自然言語クエリへの精度を検証
- 例:S3ドキュメントに対する「人間的」な意図理解の比較
- 伝統的検索:キーワード一致・無関係な断片表示
- ニューラル検索:意図・文脈理解による正確な抜粋提示
- 意図理解型検索 の特徴
- クエリ全体の意味理解
- クエリエンジニアリング不要
- 暗黙的・概念的な複合クエリへの対応
- キーワードスパム・SEO対策に強い耐性
- 高品質・隠れた知見発見 や 価値観の近いコミュニティ探索 など新しい体験
Normalization(正規化)
- HTMLタグ の意図(レイアウト・テキスト・メディア・インタラクティブ等)から テキスト抽出 に特化
- WHATWGのセマンティック要素をサブセット化した独自ミニ仕様
- 一貫した構造化(table, ul, ol等)
- セマンティックなテキスト要素のみ保持(p, table, pre, blockquote, ul, ol, dl)
- テキストのトリミング・フラット化
- 不要ノード(script, head, comments等)の除去
- main > articleがあれば優先
- ノイズ除去 の具体例
- メニューバー・ナビゲーション・バナー・フッター等のサイトクローム
- コメント・関連記事リンク・UI要素・SNSボタン
- セマンティック要素未使用サイト への対応
- ヒューリスティック・NLPによる判別
- クラス名・ID等のパターンマッチは誤除去リスク
- DOM構造の視覚的分類や統計的テキストモデルも将来的に検討
- 大規模サイトの特別処理例 (Wikipedia等)
- 見出し・クラス・IDによる細かな除去ルール
- <sup class="reference">や"hatnote"等のメタ情報除去
- サイドバー・ナビボックス・参考文献リスト等の除去
- リッチ構造化データ の活用
- OpenGraph等<meta>タグ
- 検索エンジン用構造化データ(知識グラフ・リッチリザルト強化)
Chunking(チャンク化)
- 埋め込みモデル は長文入力が不得意なため、 ページ全体ではなく文単位 で分割
- n文字/単語ごとの単純分割は意味破壊リスク
- 文単位分割 のためspaCyのsentencizerを採用
- 文法・略語・小数点・URL・非形式的文体にも高精度
- 文単位チャンク の利点
- クエリへのピンポイントな回答抽出
- ダイレクトスニペットやハイライトへの活用
- 意味的まとまりを保ちつつパラグラフ単位への拡張も容易
Semantic Context(意味的文脈)
- チャンク化の課題 :文脈切断による意味損失("it"や"the"等の指示語問題)
- 正規化されたセマンティックドキュメントツリー を活用
- 見出しによるセクション分割・ラベル付け
- テーブル見出し・段落・説明リスト等の構造的関連付け
- リード文とリストの意味的結合
- 例:PostgreSQL Performance Tuning Guide
- 見出し・セクション・個別文を階層的に関連付けて保持
- 検索時に文脈情報を付加し、深い意味理解に活用
この後も、 Statement chaining や パイプライン設計、 HNSWインデックスの高速化、 知識グラフ連携 等、各要素の詳細解説が続く構成。全体として、 高品質・意味理解型の検索体験 を目指すための技術的工夫と設計思想を網羅的に整理。