本文为您介绍如何将SharePoint的数据传输到数据传输服务DTS(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程序的运行环境。
说明您可以添加钉钉群(群号:79690034672),联系技术支持人员以获取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否
需要传输(白名单)和无需传输(黑名单)的路径。
说明支持正则表达式,多个路径需使用空格分隔。
自行在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相关信息。
请前往OSS对象存储控制台获取。
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,确认返回结果中包含您的应用及其角色信息。