フィードバックを送信
自然言語理解でフィルタする
コレクションでコンテンツを整理
必要に応じて、コンテンツの保存と分類を行います。
注: この機能はプレビュー版で、GCP サービス固有の規約 の「pre-GA サービス規約」が適用されます。
一般提供前のプロダクトと機能では、サポートが制限されることがあります。また、これらのプロダクトや機能には、他の一般提供前のバージョンと互換性のない変更が行われる場合があります。詳細については、リリース ステージの説明 をご覧ください。
さらに、この機能を使用すると、生成 AI プレビュー版の利用規約 (以下「プレビュー規約」)に同意したことになります。この機能については、お客様は Cloud のデータ処理に関する追加条項 に記載されているとおりに個人データを処理できます。その際、(プレビュー規約に定義されるとおり)本契約で規定されている制限と義務が適用されます。
このページでは、自然言語理解を適用して検索クエリのフィルタを自動的に作成し、返される結果の品質を向上させる方法について説明します。
この機能は、構造化データストアに接続されている検索アプリで使用できます。
自然言語クエリの理解について
構造化データを含む汎用検索アプリを使用している場合は、ユーザーの自然言語クエリをフィルタリングされたクエリとして再フォーマットできます。これにより、クエリ文字列内の単語を検索するよりも質の高い検索結果が得られます。
独自のフィルタ式を記述するよりも、自然言語クエリの理解を使用するほうが簡単で柔軟です。フィルタ式の記述については、構造化データまたは非構造化データの一般的な検索をフィルタする をご覧ください。
この機能は例で説明するとわかりやすいです。
例: クエリからのフィールドの抽出
この自然言語クエリ理解機能は、ホテルの検索の例で説明されています。
ホテル サイトの構造化データストアに対して行われた次のクエリを考えてみましょう。「1 泊 300 未満で、4 つ星以上の子供連れ向けホテルを探してください。犬を連れて行きたいですし、無料 Wi-Fi が必要です。」
自然言語クエリの理解がないと、検索アプリはクエリ内の単語を含むドキュメントを検索します。
自然言語クエリの理解と適切に構造化されたデータにより、クエリ内の自然言語の一部をフィルタに置き換えることで、検索の効率性が向上します。
構造化データに star_rating
(数値)、price
(数値)、amenities
(文字列)のフィールドがある場合、クエリは次のフィルタと残留クエリとして書き換えることができます。
自然言語クエリから抽出されたフィルタ:
{
"star_rating": ≥4,
"price": ≤300,
"amenities": "Wifi", "Pets Allowed"
}
フィルタの抽出後に再定義された残留クエリ:
family-friendly
例: 位置情報フィルタを使用
この例は前の例と似ていますが、抽出フィルタの特別な種類である位置情報 フィルタが含まれています。Vertex AI Search には、クエリ内の場所を認識し、場所の近接フィルタを作成する機能があります。
州全体のビジネス サイトに対して行われた次のクエリを考えてみましょう。「サンフランシスコにある、4 つ星以上のシックでスタイリッシュなホテルを探してください。」
自然言語クエリの理解と位置情報フィルタにより、検索はフィルタと残留クエリとして再定義されます。
自然言語クエリから抽出されたフィルタ。評価が 4 つ星以上で、サンフランシスコの半径 10 km 以内のもの:
{
"star_rating": ≥4,
"location": GEO_DISTANCE(\"San Francisco, CA\", 10000)
}
この例では、GEO_DISTANCE
は住所ですが、他のクエリでは、元のクエリに住所が含まれていても、緯度と経度として記述される場合があります。
フィルタの抽出後に再定義された残留クエリ:
chic and stylish in San Francisco
位置情報フィルタが作成されても、地名は残留クエリに残ります。これは、star_rating
などの他のフィルタとは異なります。
制限事項
自然言語クエリの理解には、次の制限が適用されます。
自然言語クエリの理解は、統合検索アプリ には適用できません。統合検索アプリで自然言語クエリの理解を使用すると、エラーが発生します。
自然言語クエリの理解は、構造化データを使用している一般的な検索アプリで機能します。ただし、次の種類の構造化データでは、この機能の使用はおすすめしません。
メタデータを含む非構造化データ
構造化データを含むウェブサイトのデータ
通常、このような構造化データにはコンテンツではなく、コンテンツの性質に関する情報が含まれているため、この機能が良好な結果をもたらす可能性は低いです。
自然言語クエリの理解を使用するとレイテンシが増加するため、レイテンシが問題になる場合は使用しないことをおすすめします。
位置情報の場合は、位置情報を明示的に記述する必要があります。「近く」や「家」などの場所は使用できません。
位置情報の半径は 10 km で、設定できません。
始める前に
自然言語クエリの理解を使用する前に、使用するアプリに接続されているデータストアで有効にする必要があります。
自然言語クエリの理解を有効にする手順は次のとおりです。
REST
データストア ID を確認します。データストア ID がすでにある場合は、次のステップに進みます。
Google Cloud コンソールで [Agent Builder ] ページに移動し、ナビゲーション メニューで [データストア ] をクリックします。
[データストア] ページに移動
データストアの名前をクリックします。
データストアの [データ ] ページで、データストア ID を取得します。
次の curl コマンドを実行します。
curl -X PATCH \
-H "Authorization: Bearer $( gcloud auth print-access-token) " \
-H "Content-Type: application/json" \
-H "X-Goog-User-Project: PROJECT_ID " \
"https://discoveryengine.googleapis.com/v1beta/projects/PROJECT_ID /locations/global/collections/default_collection/dataStores/DATA_STORE_ID ?update_mask=natural_language_query_understanding_config.mode" \
-d '{
"naturalLanguageQueryUnderstandingConfig": {
"mode": "ENABLED"
}
}'
PROJECT_ID
: Google Cloud プロジェクトの ID。
DATA_STORE_ID
: Vertex AI Search データストアの ID。
注: データストアで自然言語クエリの理解を無効にするには、上記のコマンドを実行し、ENABLED
を DISABLED
に置き換えます。
コマンドとレスポンスの例
curl -X PATCH
-H "Authorization: Bearer $(gcloud auth print-access-token)"
-H "Content-Type: application/json"
-H "X-Goog-User-Project: my-project-123"
"https://discoveryengine.googleapis.com/v1beta/projects/my-project-123/locations/global/collections/default_collection/dataStores/my-data-store?update_mask=natural_language_query_understanding_config.mode"
-d '{
"naturalLanguageQueryUnderstandingConfig": {
"mode": "ENABLED"
}
}'
{
"name": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store",
"displayName": "test_data_store",
"industryVertical": "GENERIC",
"createTime": "2024-07-10T18:50:01.673414Z",
"solutionTypes": [
"SOLUTION_TYPE_SEARCH"
],
"defaultSchemaId": "default_schema",
"documentProcessingConfig": {
"name": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/documentProcessingConfig",
"defaultParsingConfig": {
"digitalParsingConfig": {}
}
},
"servingConfigDataStore": {},
"naturalLanguageQueryUnderstandingConfig": {
"mode": "ENABLED"
}
}
データストアごとに手順 1 と 2 を繰り返します。
24 時間ほど待ちます。
データストアの準備が整う前に自然言語クエリの理解を使用しようとすると、filterExtractionCondition
が DISABLED
に設定された場合と同じレスポンスが返されます。
検索、自然言語クエリをフィルタに変換する
自然言語でクエリを検索し、自然言語クエリ用に最適化された結果を取得するには、次の操作を行います。
REST
search
メソッドを呼び出す次の curl コマンドを実行します。
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/engines/APP_ID /servingConfigs/default_search:search" \
-d '{
"query": "QUERY ",
"naturalLanguageQueryUnderstandingSpec": {
"filterExtractionCondition": "ENABLED"
}
}'
以下を置き換えます。
PROJECT_ID
: Google Cloud プロジェクトの ID。
APP_ID
: クエリする Vertex AI Search アプリの ID。アプリは、構造化データまたはメタデータを含むデータストアに接続する必要があります。統合検索アプリは使用できません。
QUERY
: クエリは自然言語で記述されています。
コマンドの例と結果
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)"
-H "Content-Type: application/json"
"https://discoveryengine.googleapis.com/v1beta/projects/123456
/locations/global/collections/default_collection/engines/my-app/servingConfigs/default_search:search"
-d '{
"query": "Find me a family-friendly hotel with at least four stars that costs less than 300 a night, lets me bring my dog, and has free Wi-Fi.",
"naturalLanguageQueryUnderstandingSpec": {
"filterExtractionCondition": "ENABLED"}
}'
{
"results": [
{
"id": "b2617d862",
"document": {
"name": "projects/123456/locations/us/collections/default_collection/dataStores/my-data-store/branches/0/documents/b2617d862",
...
}
},
{
"id": "a51841841",
"document": {
"name": "projects/123456/locations/us/collections/default_collection/dataStores/my-data-store/branches/0/documents/a51841841",
...
}
}
],
"naturalLanguageQueryUnderstandingInfo": {
"extractedFilters": "(amenities: ANY(\"Pets Allowed\") AND amenities: ANY(\"Wifi\") AND star_rating: >= 4 AND price: < 300)",
"rewrittenQuery": "family-friendly",
"extractedFilterStructured": {
"expression": {
"andExpr": {
"expressions": [
{
"numberConstraint": {
"fieldName": "star_rating",
"value": 4,
"comparison": "GREATER_THAN_EQUALS",
}
},
{
"numberConstraint": {
"fieldName": "price",
"value": 300,
"comparison": "LESS_THAN",
}
},
{
"stringConstraint": {
"fieldName": "amenities",
"any": ["Pets Allowed"]
}
},
{
"stringConstraint": {
"fieldName": "amenities",
"any": ["Wifi"]
}
},
]
}
検索、クエリ内の場所を位置情報フィルタに変換
自然言語のクエリで検索し、場所の近さなど、自然言語のクエリ用に最適化された結果を取得するには、次の操作を行います。
REST
search
メソッドを呼び出す次の curl コマンドを実行します。
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/engines/APP_ID /servingConfigs/default_search:search" \
-d '{
"query": "QUERY ",
"naturalLanguageQueryUnderstandingSpec": {
"filterExtractionCondition": "ENABLED",
"geoSearchQueryDetectionFieldNames": ["GEO_FIELD_NAME_1 ", "GEO_FIELD_NAME_N "]"
}
}'
以下を置き換えます。
PROJECT_ID
: Google Cloud プロジェクトの ID。
APP_ID
: クエリする Vertex AI Search アプリの ID。アプリは、構造化データまたはメタデータを含むデータストアに接続する必要があります。統合検索アプリは使用できません。
QUERY
: クエリは自然言語で記述されています。
GEO_FIELD_NAME_1, GEO_FIELD_NAME_N
: geolocation
型の値のリスト。値の型が geolocation
でない場合、このフィールドは無視されます。
コマンドの例と結果
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)"
-H "Content-Type: application/json"
"https://discoveryengine.googleapis.com/v1beta/projects/123456
/locations/global/collections/default_collection/engines/my-app/servingConfigs/default_search:search"
-d '{
"query": "Find me a chic and stylish hotel with at least 4 stars that is in San Francisco.",
"naturalLanguageQueryUnderstandingSpec": {
"filterExtractionCondition": "ENABLED",
"geoSearchQueryDetectionFieldNames": ["location"]}
}'
{
"results": [
{
"id": "b2617d862",
"document": {
"name": "projects/123456/locations/us/collections/default_collection/dataStores/my-data-store/branches/0/documents/b2617d862",
...
}
},
{
"id": "a51841841",
"document": {
"name": "projects/123456/locations/us/collections/default_collection/dataStores/my-data-store/branches/0/documents/a51841841",
...
}
}
],
"naturalLanguageQueryUnderstandingInfo": {
"extractedFilters": "(star_rating: >= 4 AND GEO_DISTANCE("location", "San Francisco", 10000))",
"rewrittenQuery": "chic and stylish",
"extractedFilterStructured": {
"expression": {
"andExpr": {
"expressions": [
{
"numberConstraint": {
"fieldName": "star_rating",
"value": 4,
"comparison": "GREATER_THAN_EQUALS",
}
},
{
"geolocationConstraint": {
"fieldName": "location",
"address": "San Francisco",
"radius_in_meters": 10000,
}
},
]
}
フィードバックを送信
特に記載のない限り、このページのコンテンツはクリエイティブ・コモンズの表示 4.0 ライセンス により使用許諾されます。コードサンプルは Apache 2.0 ライセンス により使用許諾されます。詳しくは、Google Developers サイトのポリシー をご覧ください。Java は Oracle および関連会社の登録商標です。
最終更新日 2024-12-24 UTC。
ご意見をお聞かせください
[[["わかりやすい","easyToUnderstand","thumb-up"],["問題の解決に役立った","solvedMyProblem","thumb-up"],["その他","otherUp","thumb-up"]],[["わかりにくい","hardToUnderstand","thumb-down"],["情報またはサンプルコードが不正確","incorrectInformationOrSampleCode","thumb-down"],["必要な情報 / サンプルがない","missingTheInformationSamplesINeed","thumb-down"],["翻訳に関する問題","translationIssue","thumb-down"],["その他","otherDown","thumb-down"]],["最終更新日 2024-12-24 UTC。"],[[["This feature, in preview, uses natural-language understanding to convert user queries into filters, enhancing search results for apps connected to structured data."],["By extracting fields, such as star ratings, prices, and amenities, natural-language queries can be transformed into structured filters to refine searches beyond keyword matching."],["Geolocation is supported as a special case of filter extraction, where natural-language locations in queries are converted into proximity filters with a default radius of 10km."],["Natural-language query understanding is limited to generic search apps using structured data, cannot be applied to blended search apps, and is subject to increased latency, and requires explicitly described locations."],["To enable natural-language query understanding for a data store, you must use a REST API command to set it to `ENABLED`, then wait approximately 24 hours for the changes to become effective."]]],[]]