こんにちは!大嶋です!
今回はVertex AI Searchで地理データを取り扱ったので、その方法を紹介していきます。地理データでフィルタをしますが、フィルタリングの方法は他のデータでも応用が利くので、Vertex AI Searchで検索時にフィルタをかけたい場合の方の参考にもなると思います。ぜひご覧ください。
本記事でわかること
- 地理データの事前準備
- フィルタリングの方法
地理データの事前準備
まず、Vertex AI Searchのデータストアに地理データを事前に格納していきます。
データストアにインポートする際に、地理データは以下のどちらかの形でオブジェクト型として、インポートすることで、データストアに「geolocation」として登録がされます。「geolocation」として登録しておくとこで、Vertex AI Searchアプリが地理データの緯度経度情報等をもとにデータストアからデータを取得する際にフィルタをかけることが可能になります。
"myLocation": {"latitude":37.42, "longitude":-122.08}
"myLocation": {"address": "1600 Amphitheatre Pkwy, Mountain View, CA 94043"}
私は今回、BigQueryに緯度と経度がバラバラのカラムとして保存されていたため、SQLで一度オブジェクト型に変換してから、データをインポートしました。データストアに格納できるのであれば、BigQueryである必要はないため、ご都合に合わせてご利用ください。
struct(latitude, longitude) as geolocation
geolocation以外にも特殊な種類もあるので、気になる方は公式ドキュメントを参考にしてみてください。
実際にインポートをすると、データストアに「geolocation」で登録されていることが確認できると思います。登録が確認できたら、データストアに接続したアプリを作成してください。

また、各ドキュメントはJSON形式で格納され、「geolocation」はオブジェクト型で登録しているため、以下の様にデータストアのドキュメントには以下の様に格納されます。

フィルタリングの方法
データストアに接続したアプリを作成できたら、あとは、フィルタをするだけで地理データをもとにデータの検索が可能です。
地理データをフィルタリングする際には、以下の様に記載します。詳細は公式ドキュメントをご確認ください。
データストアに登録した名称: GEO_DISTANCE.({lat}, {lng}, {distance})
またそれぞれのパラメータの意味は以下の通りです。指定した緯度経度と緯度経度からの距離を決めることで、その範囲にあるデータを事前に登録したデータストア内から検索をしてくれます。
lat=指定した緯度
lng=指定した経度
distance=指定した緯度経度からの距離(メートル)
上記のフィルタリングを元に、作成したアプリから以下を実施いただくと、簡単にデータの検索が可能なので、ぜひ試してみてください。
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
"https://discoveryengine.googleapis.com/v1beta/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores/DATA_STORE_ID/servingConfigs/default_search:search" \
-d '{
"query": "QUERY",
"filter": "FILTER"
}'
まとめ
簡単に地理データでフィルタをかけ、データを検索できたかと思います。フィルタをする位置は現在地でもいいですし、特定の場所など、用途に合わせてデータを格納いただけたらと思います。
今回は地理データのみでフィルタリングをしましたが、他のフィルタを利用することで、さらにAIの精度を上げることが可能そうですね。他のフィルタに関しては、上記のリンクから確認することができるので、ぜひ試してみてください。
おわり。
Google および Google Cloud Platform™ service は Google LLC の商標であり、この記事は Google によって承認されたり、Google と提携したりするものではありません。
コメント