Hacker Newsの2,800万件のコメントをベクトル埋め込み検索データセットとして提供
(clickhouse.com)- Hacker News データセットは2,874万件の投稿とコメントを含み、各テキストは SentenceTransformers all-MiniLM-L6-v2 モデルで生成された384次元のベクトル埋め込みで構成
- データは ClickHouse が提供する単一の **Parquet ファイル(S3 バケット)**として公開されており、 大規模な ベクトル検索アプリケーションの設計と性能評価 に活用可能
- 例示の SQL コードでは、テーブル作成、データロード、HNSW ベースのベクトル類似度インデックス構築、検索クエリ実行の流れを段階的に説明
- Python の例では SentenceTransformers を使ってクエリ埋め込みを生成し、ClickHouse の cosineDistance() 関数で意味ベースの検索を実行
- 続く 要約デモアプリケーションでは LangChain と OpenAI GPT-3.5-turbo を活用し、検索された投稿を要約し、エンタープライズ向け生成AI活用事例への拡張可能性を提示
Hacker News ベクトル検索データセットの概要
- このデータセットはHacker News の2,874万件の投稿とコメントを含み、各エントリは SentenceTransformers all-MiniLM-L6-v2 モデルで生成された 384次元ベクトル埋め込みを含む
- 埋め込みは文と段落の意味を捉えるためのローカル埋め込みモデルを使用
- このデータセットはユーザー生成テキストデータを用いた大規模ベクトル検索アプリケーションの設計、規模算定、性能分析に利用できる
データセットの詳細
- 全データは ClickHouse が提供する 単一 Parquet ファイルで、S3 バケット(
https://clickhouse-datasets.s3.amazonaws.com/hackernews-miniLM/…)からダウンロード可能 - ユーザーはデータ保存量とメモリ要件を見積もるために、ClickHouse ドキュメントの ANN インデックスガイドを参照することが推奨される
データロードとインデックス構築手順
hackernewsテーブルは投稿 ID、テキスト、ベクトル、作成者、時間、スコアなどのさまざまな属性を含むように作成- データロードは次の SQL コマンドで実行
INSERT INTO hackernews SELECT * FROM s3('https://clickhouse-datasets.s3.amazonaws.com/hackernews-miniLM/…');- 約2,874万行の挿入に数分かかる
- ベクトル類似度インデックスは HNSW アルゴリズムと cosineDistance を用いて作成
ALTER TABLE hackernews ADD INDEX vector_index vector TYPE vector_similarity('hnsw', 'cosineDistance', 384, 'bf16', 64, 512); ALTER TABLE hackernews MATERIALIZE INDEX vector_index SETTINGS mutations_sync = 2;M=64、ef_construction=512に設定され、CPU コア数とストレージ帯域幅によっては、インデックス構築に数分〜数時間かかる場合がある
- インデックス構築後、ベクトル検索クエリは自動的にインデックスを利用
SELECT id, title, text FROM hackernews ORDER BY cosineDistance(vector, <search vector>) LIMIT 10- インデックスメモリのロードには数秒〜数分かかる場合がある
Python ベースの意味検索例
- Python スクリプトはSentenceTransformersで入力クエリの埋め込みを生成し、 ClickHouse Connect を通じてクエリを実行
cosineDistance()関数を使って、入力ベクトルとデータセットベクトルの類似度を計算- 実行例では「Are OLAP cubes useful」クエリに対して、上位 20 件の関連投稿を出力
- 出力結果は各投稿の ID とテキストの一部(100文字)で構成
要約デモアプリケーション
- ClickHouse を利用した意味検索およびドキュメント検索の例の次に、生成AIベースの要約アプリケーションを紹介
- 主要なステップ
- ユーザーからテーマを入力
SentenceTransformers all-MiniLM-L6-v2でテーマの埋め込みを生成- ClickHouse でベクトル類似度検索により関連する投稿/コメントを取得
LangChainと OpenAIgpt-3.5-turboを使用して検索結果を要約
- 実行例では「ClickHouse performance experiences」をテーマに検索した後、GPT-3.5 が要約を生成
- 要約内容は ClickHouse の性能、シンプルさ、効率性、 大規模分析への適性を強調し、 一部の DML とバックアップの難しさ も触れている
- このアプリケーションは顧客感情分析、技術サポート自動化、議事録要約、金融文書分析 など、さまざまなエンタープライズ向け生成AI活用事例へ拡張可能
要約アプリケーションのコード構成
- Python コードで
SentenceTransformer、clickhouse_connect、LangChain、ChatOpenAIなどを使用 - 検索結果を結合して GPT-3.5 モデルに入力し、最大10文の要約文を生成
- 入力テキストのトークン数に応じて
stuffまたはmap_reduceチェーンを選択して処理 - 結果は「Summary from chatgpt-3.5:」形式で出力される
1件のコメント
Hacker Newsの意見
新しいベクトル埋め込みデータセットでは all-MiniLM-L6-v2 を使わないことを勧めている
このモデルは初期のチュートリアルでよく使われていた sentence-transformers ベースの実用的なモデルだったが、今では古く、最新の アーキテクチャと学習パイプライン を反映できていない
コンテキスト長も 512 と短い。代わりに EmbeddingGemma を推奨する。2k コンテキストウィンドウをサポートし、ベンチマーク性能も非常に高い
速度は遅いが、その価値はある。妥協案としては bge-base-en-v1.5 や nomic-embed-text-v1.5 も悪くない
オープンウェイト、多言語対応、32k コンテキストを提供している
約 70MB と小さいのでダウンロードしやすい。EmbeddingGemma は 300MB 以上あるので負担が大きい
100MB 以下で実用的なモデルがあるのか気になる
「Gemma ライセンス」は曖昧で、法務レビューが必要になるかもしれない
Google が「制限付き利用」の一覧を変えれば、いつでも使用禁止になるリスクがある
たとえば Cohere vs OpenAI small vs OpenAI large のような比較資料が不足している
どんな基準でベンチマークすべきか分からない
CPU でもよく動く
2023年からすべての HN コメントを BigQuery で埋め込み、hn.fiodorov.es でホスティングしている
ソースコードは GitHub で公開されている
「Who’s Gary Marcus」で検索したら、Google より 否定的 な結果が出てきた
運用コストがどれくらいかかるのか気になる
HN の Privacy および Data Policy によると、コメントの商用利用は禁止されている
ベクトル表現も技術的には 派生著作物 に当たる
サイトのコンテンツを商用目的で複製、配布、修正、派生物作成することなどが禁じられている
また データマイニング、スクレイピング などの行為も禁止されている
私は自分の記憶の 外部補助装置 としてベクトルデータベースを作る権利があると思う
HN に 「似た文を見る」 のような右クリックメニューがあればいいと思う
以前に同じ提案があったかどうかも分かるだろう
同じ議論が別の記事でどれだけ繰り返されているかも見られるし、
自分が書こうとしていることへの過去の反応を事前に確認することもできる
一種の semantic thread という概念になり得る
ベクトル検索 vs 通常のテキスト検索 を比較した論文があるのか気になる
ベクトル検索が本当にそれだけの価値があるのか悩ましい
HN の投稿と埋め込みメタデータを合わせて 55GB とのことだが、Parquet ファイルなら本当にそんなものなのか気になる
コメントが 商用モデルの学習 に使われることだけが唯一の目的なら、少し複雑な気分だ
こういう状況は今後の自分の参加意欲に影響するかもしれない
以前は見知らぬ人を助けている気分だったが、今は自分の好きではない相手を助けている感じがする
未来の巨大モデルのどこかで、自分の言葉がかすかに響くのかもしれない
アカウント/コメント削除機能 があればいいのに
事実上 永続的なデータ になっていて、いつか自分のコメントが古代の知恵のように残るかもしれない
やることリストから1つ消えた(このプロジェクトのおかげで)
友人に聞かれたとしたら……ここにコメントすると、それが ベクトルに変換 されるってこと?