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())
以下のコードをコマンドラインインターフェイスで実行し、 SharePoint から取り込んだファイルでCortex Searchサービスをクエリします。Snowflake REST APIs にアクセスするには、キーペア認証と OAuth による認証が必要です。詳細については、 REST に API および 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."
} ]
}