本文為您介紹如何將SharePoint的資料轉送到Data Transmission Service的RAGFlow知識庫。DTS支援使用Microsoft Entra ID(原Azure AD)應用程式身分識別驗證方式,通過Microsoft Graph API訪問SharePoint網站中的文檔。該方式使用用戶端憑證流程(Client Credentials),以應用程式身份訪問資料,無需您互動授權。
適用範圍
已在DTS建立RAGFlow知識庫並設定IP白名單。
支援的資料類型
DTS RAGFlow支援接入SharePoint中的文件庫檔案(如Word、Excel、PDF、PowerPoint等)。
準備工作
步驟一:在Microsoft Entra ID中註冊應用程式
登入Azure門戶。
在左側導覽列,選擇Microsoft Entra ID。
單擊應用註冊 > 新註冊。
填寫應用資訊,然後單擊註冊。
配置項
說明
名稱
輸入應用程式名稱,例如
KBSync-SharePoint-Reader。支援的賬戶類型
選擇僅此組織目錄中的賬戶(單租戶)。
重新導向URI
可留空。用戶端憑證流程不需要重新導向URI。
註冊完成後,在應用概述頁面,記錄以下資訊。
參數
說明
應用程式(用戶端) ID
應用的唯一標識,對應KBSync配置中的
llamahubReader_client_id參數。目錄(租戶) ID
Microsoft Entra租戶標識,對應KBSync配置中的
llamahubReader_tenant_id參數。
步驟二:建立用戶端密鑰
在應用頁面,選擇認證和密碼 > 用戶端密碼。
單擊新用戶端密鑰。
填寫描述並選擇到期時間(建議選擇24個月或從不)。
單擊添加後,立即複製密鑰值。
重要離開頁面後將無法再次查看該密鑰值,請務必在建立後立即複製並妥善儲存。該金鑰組應KBSync配置中的
llamahubReader_client_secret參數。
步驟三:配置API許可權
在應用頁面,選擇API許可權 > 添加許可權。
選擇Microsoft Graph > 應用程式許可權。
搜尋並添加以下許可權。
權限類別型
許可權名稱
說明
應用程式
Sites.Read.All或Sites.SelectedSites.Read.All:讀取所有SharePoint網站(推薦用於全網站訪問)。Sites.Selected:僅讀取選定的SharePoint網站(更安全的選項)。
說明若選擇
Sites.Selected許可權,則需要通過Microsoft Graph API為您的應用顯式授權訪問特定SharePoint網站。應用程式
Files.Read.All讀取所有檔案。
應用程式
BrowserSiteLists.Read.All讀取瀏覽器網站列表。
擷取管理員同意。
添加許可權後,必須獲得全域管理員的同意才會生效。
在API許可權頁面,單擊代表<租戶名稱>授予管理員同意。
確認狀態列顯示為已授予。
說明如果您沒有管理員權限,請聯絡組織的Microsoft 365全域管理員完成此步驟。
步驟四:擷取SharePoint網站資訊
在配置KBSync之前,需要收集以下SharePoint資訊。
參數 | 說明 | 擷取方式 |
Site Name | SharePoint網站名稱。 | 從SharePoint URL中提取。例如URL為 |
Folder Path | 文件庫中的檔案夾路徑。 | 在SharePoint中查看目的文件所在的檔案夾路徑。例如 |
Host Name | SharePoint主機名稱。使用 | 從SharePoint URL中提取。例如 |
Drive Name | SharePoint文件庫名稱。 | 在SharePoint網站中查看文件庫名稱,預設文件庫通常為 |
操作步驟
步驟一:準備設定檔
擷取KBSync程式並準備KBSync程式的運行環境。
說明您可以提交工單,聯絡技術支援人員以擷取KBSync檔案。
運行KBSync程式需要為Linux環境,並且可以訪問Microsoft Graph API和RAGFlow。
準備設定檔config。
建立名為config的Linux系統檔案。
將以下代碼複製到config檔案中。
# 基礎配置 sourceType=LlamaHub sinkType=RagFlowV2 whiteList= blackList= sleepTime=600 jobId=dts_kbsync_llamahub_sharepoint_to_ragflow documentSyncMode=full # LlamaHub Reader 配置 llamahubReaderClass=llama_index.readers.microsoft_sharepoint.SharePointReader llamahubReader_client_id=96b75717-****-****-****-46b70e29bec1 llamahubReader_tenant_id=c2211d60-****-****-****-fd062b3f8c2b llamahubReader_client_secret=Xwd8Q***************DmpRTDmpRTw llamahubReader_sharepoint_host_name=contoso.sharepoint.com llamahubReader_sharepoint_site_name=Marketing llamahubReader_drive_name=Documents llamahubLoad_sharepoint_folder_path=Reports # Sink RAGFlow 配置 sinkOSSAccessKeyId= sinkOSSAccessKeySecret= sinkOSSRegion= sinkOSSBucket= sinkOSSEndpoint=替換config檔案中的參數。
重要無需配置的參數,將其取值設定為空白值即可。
參數
blackList的優先順序高於參數whiteList。
參數
是否必填
說明
擷取方式
whiteList否
需要傳輸(白名單)和無需傳輸(黑名單)的路徑。
說明支援Regex,多個路徑需使用空格分隔。
自行在SharePoint中擷取目標檔案夾路徑。
blackList否
sourceType是
源端的類型。
取值請保持
LlamaHub。sinkType是
目標端的類型。
取值請保持
RagFlowV2。sleepTime是
增量掃描間隔。
-
documentSyncMode是
同步模式:
full:全量
inc:增量
-
llamahubReader_client_id是
Microsoft Entra ID中註冊的應用程式(用戶端) ID。
llamahubReader_tenant_id是
Microsoft Entra ID中的目錄(租戶) ID。
llamahubReader_client_secret是
Microsoft Entra ID中建立的用戶端密鑰。
llamahubReader_sharepoint_site_name是
SharePoint網站名稱。
llamahubReader_sharepoint_host_name否
說明使用
Sites.Selected許可權時必填。SharePoint主機名稱。
llamahubReader_drive_name否
SharePoint文件庫名稱。預設為
Documents。llamahubLoad_sharepoint_folder_path否
文件庫中的檔案夾路徑。不填則傳輸文件庫根目錄下的全部內容。
sinkOSSAccessKeyId是
OSS Bucket相關資訊。
請前往OSSObject Storage Service控制台擷取。
sinkOSSAccessKeySecret是
sinkOSSRegion是
sinkOSSBucket是
sinkOSSEndpoint是
步驟二:運行KBSync程式
將KBSync檔案和設定檔config,放在Linux環境中的同一目錄中。
在Linux環境中執行
./KBSync --config config命令,運行KBSync程式。
故障排查
錯誤資訊 | 可能原因 | 解決方案 |
| 用戶端密鑰錯誤或已到期。 | 檢查Client ID和Client Secret是否正確。若密鑰已到期,請在Azure門戶中重新建立密鑰。 |
| API許可權未授予或管理員未同意。 | 確認API許可權已添加並獲得管理員同意。在Azure門戶的API許可權頁面,檢查狀態是否顯示為已授予。 |
| Site Name或URL配置錯誤。 | 驗證SharePoint網站名稱和路徑是否正確,確保 |
| 應用無許可權訪問特定網站。 | 使用 |
附錄:授權SharePoint網站層級許可權
Sites.Selected許可權需要通過Microsoft Graph API給具體的網站授權,Azure控制台不支援按網站授權操作。
在Graph Explorer中,使用全域管理員帳號登入,並為當前會話授予
Sites.FullControl.All許可權。操作方式:輸入任意請求後,單擊上方的Modify permissions標籤,找到
Sites.FullControl.All並單擊Consent完成授權。擷取目標SharePoint網站的Site ID。在Graph Explorer中執行以下請求:
GET https://graph.microsoft.com/v1.0/sites/{hostname}:/{site-path}例如:
GET https://graph.microsoft.com/v1.0/sites/contoso.sharepoint.com:/sites/project-alpha。響應中的id欄位即為Site ID。為應用授予特定網站的存取權限。在Graph Explorer中執行以下POST請求:
POST https://graph.microsoft.com/v1.0/sites/{site-id}/permissions Content-Type: application/json { "roles": ["write"], "grantedToIdentities": [ { "application": { "id": "<您的應用的Application (client) ID>", "displayName": "<應用程式名稱>" } } ] }roles可選值:read(唯讀)、write(讀寫)、owner(完全控制)。驗證許可權是否生效。執行
GET https://graph.microsoft.com/v1.0/sites/{site-id}/permissions,確認返回結果中包含您的應用及其角色資訊。