データセットの詳細
Parquet ファイルが含まれています。ファイル名は 0.parquet、1.parquet、…、25.parquet です。データセット内のサンプル行をいくつか確認するには、Hugging Face ページ を参照してください。
テーブルを作成
dbpedia テーブルを作成します。
テーブルを読み込む
dbpedia テーブルに 100 万行あることを確認します:
セマンティック検索
- 自然言語の検索クエリ (例: “景色のよい鉄道の旅について教えて”, “ヨーロッパを舞台にしたサスペンス小説” など) をユーザーから受け取る
- LLM モデルを使用して、検索クエリの埋め込みベクトルを生成する
- データセット内で、その検索クエリの埋め込みベクトルに最も近い最近傍を見つける
総当たりのベクトル類似度検索を実行する
dbpedia データセットでは、セマンティック検索を手早く視覚的に確認する方法として、
データセット自体の埋め込みベクトルを検索ベクトルとして使うことができます。たとえば、次のようになります。
Query
Response
max_threads=1 の場合のクエリレイテンシも記録してください
(これを数百万ベクトル規模の本番データセットに外挿します!)
ベクトル類似度索引を構築する
vector カラムにベクトル類似度索引を定義し、構築します。
ANN 検索を実行する
Query
Response
検索クエリ用の埋め込みの生成
dbpedia
table 内にある既存のベクトルの 1 つを使用していました。実際のアプリケーションでは、検索ベクトルは
自然言語で入力される可能性のあるユーザーのクエリに対して生成する必要があります。検索ベクトル
は、データセットの埋め込みベクトルの生成に使用したものと同じ LLM モデルを使って生成する
必要があります。
以下に、OpenAI API をプログラムから呼び出して
text-embedding-3-large モデルを使用し、埋め込みベクトルを生成する方法を示す Python スクリプトの例を示します。検索用の埋め込みベクトル
は、その後 SELECT クエリ内の cosineDistance() 関数に引数として渡されます。
このスクリプトを実行するには、環境変数 OPENAI_API_KEY に OpenAI API キー を設定しておく必要があります。
OpenAI API キー は、https://platform.openai.com で登録すると取得できます。
Q&A デモアプリケーション
- ユーザーから トピック を入力として受け取る
- モデル
text-embedding-3-largeを指定して OpenAI API を呼び出し、トピック の埋め込みベクトルを生成する dbpediaテーブルに対してベクトル類似度検索を行い、関連性の高い Wikipedia の記事やドキュメントを取得する- トピック に関連する自然言語の自由形式の質問をユーザーから受け取る
- OpenAI の
gpt-3.5-turboChat API を使用して、手順 #3 で取得したドキュメント内の知識に基づいて質問に回答する。 手順 #3 で取得したドキュメントは Chat API に コンテキスト として渡され、これが Generative AI における重要なつながりとなります。
OPENAI_API_KEY に OpenAI API キーを設定しておく必要があります。OpenAI API キーは
https://platform.openai.com で登録すると取得できます。