Snowflake Connector for SharePoint でCortex Search Serviceをクエリする¶
注釈
Snowflake Connector for SharePoint は `コネクタ規約<https://www.snowflake.com/legal/snowflake-connector-terms/>`_ に従います。
重要
SharePoint 用Snowflakeコネクタにご興味をお持ちいただきありがとうございます。現在、大幅に改善されたエクスペリエンスを提供する次世代のソリューションに焦点を当てています。したがって、このコネクタを一般提供ステータスに移行することは、現在の製品ロードマップにはありません。このコネクタはプレビュー機能として引き続き使用できますが、将来のバグ修正および改善のサポートは保証されないことに注意してください。新しいソリューションは :doc:` SharePoint 用Openflowコネクタ</user-guide/data-integration/openflow/connectors/sharepoint/about>` として利用可能で、より優れたパフォーマンス、カスタマイズ性、強化された展開オプションが含まれます。
Cortex Search サービスを利用して、チャットや検索アプリケーションを構築し、 SharePoint のドキュメントとチャットしたり、クエリしたりすることができます。
Snowflake Connector for SharePoint をインストールして構成し、Sharepointからのコンテンツの取り込みを開始すると、Cortex Search Serviceにクエリできます。Cortex Search の使用に関する詳細については、Cortex Search serviceをクエリする をご参照ください。
応答をフィルターする¶
Cortex Searchサービスからの応答を特定のユーザーが SharePoint でアクセスできるドキュメントに制限するには、Cortex Searchのクエリ時に、そのユーザーのユーザー ID またはメールアドレスを含むフィルターを指定することができます。例えば、 filter.@contains.user_ids または filter.@contains.user_emails のようにします。コネクタによって作成されるCortex Searchサービスの名前は、スキーマ Cortex の search_service です。
SQL ワークシート内で以下の SQL コードを実行し、 SharePoint サイトから取り込んだファイルでCortex Searchサービスをクエリします。
以下を置き換えます。
application_instance_name: データベースとコネクタアプリケーションインスタンスの名前。user_emailID: 応答をフィルターしたいユーザーのメール ID。your_question: 応答を得たい質問。number_of_results: 応答で返す結果の最大数。最大値は1000で、デフォルト値は10です。
SELECT PARSE_JSON(
SNOWFLAKE.CORTEX.SEARCH_PREVIEW(
'<application_instance_name>.cortex.search_service',
'{
"query": "<your_question>",
"columns": ["chunk", "web_url"],
"filter": {"@contains": {"user_emails": "<user_emailID>"} },
"limit": <number_of_results>
}'
)
)['results'] AS results
columns に入力できる値の完全なリストを以下に示します。
列名 |
型 |
説明 |
|---|---|---|
|
String |
Sharepointサイトドキュメントルートからのファイルへのフルパス。例: |
|
String |
オリジナルのSharepointファイルをブラウザーで表示する URL。 |
|
String |
項目の最新変更日時。 |
|
String |
Cortex Searchのクエリにマッチしたドキュメントのテキスト。 |
|
配列 |
ドキュメントにアクセスできる Microsoft 365ユーザー IDs の配列。ドキュメントに割り当てられているすべてのMicrosoft 365グループのユーザー IDs も含まれます。特定のユーザー ID を探すには、 ユーザーを取得する をご参照ください。 |
|
配列 |
ドキュメントにアクセスできるMicrosoft 365ユーザーのメール IDs の配列。ドキュメントに割り当てられているすべてのMicrosoft 365グループのユーザーメール IDs も含まれます。 |
例:人事(HR)情報について AI アシスタントにクエリする¶
Cortex Searchを使用して、オンボーディング、行動規範、チームプロセス、組織ポリシーなど、 HR の最新バージョンの情報とチャットする従業員向けの AI アシスタントをクエリできます。応答フィルターを使用すると、 SharePoint で構成したアクセス制御を順守しながら、 HR チームメンバーに従業員契約のクエリを許可することもできます。
SharePoint から取り込んだファイルでCortex Searchサービスをクエリするために、 SQL ワークシート で以下を実行します。データベースをアプリケーションインスタンス名として、スキーマを Cortex として選択します。
以下を置き換えます。
application_instance_name: データベースとコネクタアプリケーションインスタンスの名前。user_emailID: 応答をフィルターしたいユーザーのメール ID。
SELECT PARSE_JSON(
SNOWFLAKE.CORTEX.SEARCH_PREVIEW(
'<application_instance_name>.cortex.search_service',
'{
"query": "What is my vacation carry over policy?",
"columns": ["chunk", "web_url"],
"filter": {"@contains": {"user_emails": "<user_emailID>"} },
"limit": 1
}'
)
)['results'] AS results
Pythonワークシート で以下のコードを実行し、 SharePoint から取り込んだファイルでCortex Searchサービスをクエリします。データベースに snowflake.core パッケージが追加されていることを確認します。
以下を置き換えます。
application_instance_name: データベースとコネクタアプリケーションインスタンスの名前。user_emailID: 応答をフィルターしたいユーザーのメール ID。
import snowflake.snowpark as snowpark
from snowflake.snowpark import Session
from snowflake.core import Root
def main(session: snowpark.Session):
root = Root(session)
# fetch service
my_service = (root
.databases["<application_instance_name>"]
.schemas["cortex"]
.cortex_search_services["search_service"]
)
# query service
resp = my_service.search(
query="What is my vacation carry over policy?",
columns = ["chunk", "web_url"],
filter = {"@contains": {"user_emails": "<user_emailID>"} },
limit=1
)
return (resp.to_json())
Execute the following code in a command-line interface to query the Cortex Search service with files ingested from your SharePoint. You will need to authentication through key pair authentication and OAuth to access the Snowflake REST APIs. For more information, see REST に API and Snowflakeでの Snowflake REST APIs 認証.
以下を置き換えます。
application_instance_name: データベースとコネクタアプリケーションインスタンスの名前。account_url:Snowflakeアカウント URL。アカウント URL の見つけ方については、 アカウントの組織名とアカウント名の検索 を参照してください。
curl --location "https://<account_url>/api/v2/databases/<application_instance_name>/schemas/cortex/cortex-search-services/search_service" \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header "Authorization: Bearer <CORTEX_SEARCH_JWT>" \
--data '{
"query": "What is my vacation carry over policy?",
"columns": ["chunk", "web_url"],
"limit": 1
}'
サンプル応答:
{
"results" : [ {
"web_url" : "https://<domain>.sharepoint.com/sites/<site_name>/<path_to_file>",
"chunk" : "Answer to the question asked."
} ]
}