Azure AI Searchの検索対象にSharePointを追加する手順をメモ。
AI Searchの検索対象にSharePoint Onlineを追加
プレビューだけど、AI Searchは検索対象にSharePointのドキュメントライブラリを設定することが可能。
- 拡張子制限あり
- リストは対象外
- ASPXも対象外 など
今回はAI Searchの検索対象にSharePointを追加するのが意外と大変だったので、その手順をめも。
手順
- 検索対象のSharePointサイトの作成
- AI Searchリソースの作成
- Entra IDにアプリを登録
- データソース、インデックス、インデクサの作成
以下詳細。
手順0 : SharePointサイトの作成


手順1 : AI Searchリソースの作成



※オブジェクトIDはメモる必要なし

Entra IDにアプリを登録














以上でEntra IDの登録は完了。
AI Search : データソースの追加
{
"name": "【任意のデータソース名(サンプルはsharepoint-datasource)】",
"type": "sharepoint",
"credentials": {
"connectionString": "SharePointOnlineEndpoint=【SPOサイトURL(~~/sites/サイト名まで)】;ApplicationId=【アプリID(メモ1)】;ApplicationSecret=【シークレット(メモ2)】;"
},
"container": {
"name": "【対象のドキュメントライブラリ(詳しくは後述)】"
}
}
■container/name
- defaultSiteLibrary:サイトの既定のドキュメント ライブラリにあるすべてのコンテンツのインデックスを作成
- allSiteLibraries:サイト内のすべてのドキュメント ライブラリにあるすべてのコンテンツのインデックスを作成
- useQuery:”query” で定義されているコンテンツのインデックスのみを作成
※クエリについてはこちら
インデックスの作成
今回は動作確認なので、最低限(ベクトル検索は埋め込みにお金かかるのでひとまず使用しない)。
{
"name" : "sharepoint-index",
"fields": [
{ "name": "id", "type": "Edm.String", "key": true, "searchable": false },
{ "name": "metadata_spo_item_name", "type": "Edm.String", "key": false, "searchable": true, "filterable": false, "sortable": false, "facetable": false },
{ "name": "metadata_spo_item_path", "type": "Edm.String", "key": false, "searchable": false, "filterable": false, "sortable": false, "facetable": false },
{ "name": "metadata_spo_item_content_type", "type": "Edm.String", "key": false, "searchable": false, "filterable": true, "sortable": false, "facetable": true },
{ "name": "metadata_spo_item_last_modified", "type": "Edm.DateTimeOffset", "key": false, "searchable": false, "filterable": false, "sortable": true, "facetable": false },
{ "name": "metadata_spo_item_size", "type": "Edm.Int64", "key": false, "searchable": false, "filterable": false, "sortable": false, "facetable": false },
{ "name": "content", "type": "Edm.String", "searchable": true, "filterable": false, "sortable": false, "facetable": false }
]
}
インデクサーの作成
※今回はサンプルなのでスキルセットはなし(チャンク化はPython側で実施済み)。
{
"name" : "sharepoint-indexer",
"dataSourceName" : "sharepoint-datasource",
"targetIndexName" : "sharepoint-index",
"parameters": {
"batchSize": null,
"maxFailedItems": null,
"maxFailedItemsPerBatch": null,
"base64EncodeKeys": null,
"configuration": {
"indexedFileNameExtensions" : ".txt, .pdf",
"excludedFileNameExtensions" : ".png, .jpg",
"dataToExtract": "contentAndMetadata",
"failOnUnsupportedContentType" : false,
"failOnUnprocessableDocument" : false
}
},
"fieldMappings" : [
{
"sourceFieldName" : "metadata_spo_site_library_item_id",
"targetFieldName" : "id",
"mappingFunction" : {
"name" : "base64Encode"
}
}
]
}
- indexedFileNameExtensions : 検索対象とする拡張子を指定する場合は設定(今回はPDFとtxtのみ)
- excludedFileNameExtensions:検索対象外とする拡張子(今回は画像は対象外)
- failOnUnsupportedContentType:falseにするとサポートされていないドキュメントを検出した際に停止せずスキップする
- failOnUnprocessableDocument:falseにすると識別できないコンテンツがあったときに無視する

動作確認


今後この検索を使用し、色々なRAGを試してみる。

コメント