メインコンテンツへスキップ

はじめに

Hacker News dataset には、2,874 万件の投稿とそのベクトル埋め込みが含まれています。これらの埋め込みは、SentenceTransformers のモデル all-MiniLM-L6-v2 を使用して生成されています。各埋め込みベクトルの次元数は 384 です。 このデータセットは、ユーザー生成のテキストデータをもとに構築された大規模な実運用のベクトル検索アプリケーションについて、設計、サイジング、性能の各側面を確認するのに役立ちます。

データセットの詳細

ベクトル埋め込みを含む完全なデータセットは、ClickHouse により、単一の Parquet ファイルとして S3バケット で提供されています。 このデータセットに必要なストレージ容量とメモリ要件を見積もるため、まず ドキュメント を参照してサイジングを実施することを推奨します。

手順

1

テーブルを作成

投稿、その埋め込み、関連する属性を保存するための hackernews テーブルを作成します。
id は単なる連番の整数です。追加の属性は、ドキュメント で説明しているように、 後段フィルタリング/前段フィルタリングを組み合わせたベクトル類似度検索を理解するための述語に使用できます
2

データの読み込み

Parquetファイルからデータセットを読み込むには、次のSQLステートメントを実行します。
テーブルに2,874万行を挿入するには、数分かかります。
3

ベクトル類似度索引を構築する

次のSQLを実行して、hackernewsテーブルのvectorカラムにベクトル類似度索引を定義し、構築します。
索引の作成と検索に関するパラメータおよびパフォーマンス上の考慮事項については、ドキュメントで説明しています。 上記のステートメントでは、HNSW ハイパーパラメータ Mef_construction に、それぞれ 64 と 512 を使用しています。 これらのパラメータについては、索引のビルド時間と検索結果の品質を評価しながら、 選択した値に応じて最適な値を慎重に見極める必要があります。2,874 万件のデータセット全体では、利用可能な CPU コア数とストレージ帯域幅によっては、索引の構築と保存に数分から 1 時間程度かかることもあります。
4

ANN検索を実行する

ベクトル類似度索引が構築されると、ベクトル検索クエリでは自動的にこの索引が使用されます。
Query
ベクトル索引を初めてメモリに読み込む際には、数秒から数分かかることがあります。
5

検索クエリの埋め込みを生成する

Sentence Transformers は、文や段落のセマンティックな意味を捉えるための、ローカルで手軽に使える埋め込みモデルを提供します。このHackerNewsデータセットには、all-MiniLM-L6-v2モデルによって生成されたベクトル埋め込みが含まれています。以下に、sentence_transformers Pythonパッケージを使用して埋め込みベクトルをプログラム的に生成する方法を示すPythonスクリプトの例を示します。検索用の埋め込みベクトルは、SELECT クエリ内の cosineDistance() 関数に引数として渡されます。
上記の Python スクリプトの実行例と類似検索の結果を以下に示します (上位20件の投稿はそれぞれ先頭100文字のみを表示しています) :

要約デモアプリケーション

上記の例では、ClickHouse を使用したセマンティック検索とドキュメントの取得を実演しました。非常にシンプルながら高いポテンシャルを持つGenerative AIのサンプルアプリケーションを次に紹介します。アプリケーションは以下の手順を実行します:
  1. ユーザーからtopicの入力を受け付けます
  2. SentenceTransformers とモデル all-MiniLM-L6-v2 を使用して、topic の埋め込みベクトルを生成します
  3. hackernews テーブルでベクトル類似度検索を使用して、関連性の高い投稿やコメントを取得します
  4. LangChain と OpenAI gpt-3.5-turbo Chat API を使用して、ステップ #3 で取得した内容を要約します。 ステップ #3 で取得した投稿/コメントは、Chat API に コンテキスト として渡され、Generative AI における重要なつながりとなります。
要約アプリケーションの実行例を以下に示し、その後に要約アプリケーションのコードを掲載します。アプリケーションを実行するには、環境変数 OPENAI_API_KEY にOpenAI APIキーを設定する必要があります。OpenAI APIキーは、https://platform.openai.com に登録後に取得できます。このアプリケーションは、顧客感情分析、テクニカルサポートの自動化、ユーザー会話のマイニング、法的文書、医療記録、会議の議事録、財務諸表など、複数のエンタープライズ領域に適用できるGenerative AIのユースケースを示しています。
上記アプリケーションのコード:
最終更新日 2026年6月12日