实践手册:将SharePoint接入到DTS RAGFlow知识库

更新时间:
复制 MD 格式

本文为您介绍如何将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中注册应用程序

  1. 登录Azure门户

  2. 在左侧导航栏,选择Microsoft Entra ID

  3. 单击应用注册 > 新注册

  4. 填写应用信息,然后单击注册

    配置项

    说明

    名称

    输入应用名称,例如KBSync-SharePoint-Reader

    支持的账户类型

    选择仅此组织目录中的账户(单租户)。

    重定向URI

    可留空。客户端凭证流程不需要重定向URI。

  5. 注册完成后,在应用概述页面,记录以下信息。

    参数

    说明

    应用程序(客户端) ID

    应用的唯一标识,对应KBSync配置中的llamahubReader_client_id参数。

    目录(租户) ID

    Microsoft Entra租户标识,对应KBSync配置中的llamahubReader_tenant_id参数。

步骤二:创建客户端密钥

  1. 在应用页面,选择证书和密码 > 客户端密码

  2. 单击新客户端密钥

  3. 填写描述并选择过期时间(建议选择24个月从不)。

  4. 单击添加后,立即复制密钥值。

    重要

    离开页面后将无法再次查看该密钥值,请务必在创建后立即复制并妥善保存。该密钥对应KBSync配置中的llamahubReader_client_secret参数。

步骤三:配置API权限

  1. 在应用页面,选择API权限 > 添加权限

  2. 选择Microsoft Graph > 应用程序权限

  3. 搜索并添加以下权限。

    权限类型

    权限名称

    说明

    应用程序

    Sites.Read.AllSites.Selected

    • Sites.Read.All:读取所有SharePoint站点(推荐用于全站点访问)。

    • Sites.Selected:仅读取选定的SharePoint站点(更安全的选项)。

    说明

    若选择Sites.Selected权限,则需要通过Microsoft Graph API为您的应用显式授权访问特定SharePoint站点

    应用程序

    Files.Read.All

    读取所有文件。

    应用程序

    BrowserSiteLists.Read.All

    读取浏览器站点列表。

  4. 获取管理员同意。

    添加权限后,必须获得全局管理员的同意才能生效。

    1. API权限页面,单击代表<租户名称>授予管理员同意

    2. 确认状态列显示为已授予

    说明

    如果您没有管理员权限,请联系组织的Microsoft 365全局管理员完成此步骤。

步骤四:获取SharePoint站点信息

在配置KBSync之前,需要收集以下SharePoint信息。

参数

说明

获取方式

Site Name

SharePoint站点名称。

SharePoint URL中提取。例如URLhttps://contoso.sharepoint.com/sites/Marketing,则Site NameMarketing

Folder Path

文档库中的文件夹路径。

SharePoint中查看目标文档所在的文件夹路径。例如Reports

Host Name

SharePoint主机名。使用Sites.Selected权限时需要。

SharePoint URL中提取。例如contoso.sharepoint.com

Drive Name

SharePoint文档库名称。

SharePoint站点中查看文档库名称,默认文档库通常为Documents

操作步骤

步骤一:准备配置文件

  1. 获取KBSync程序并准备KBSync程序的运行环境。

    说明
    • 您可以添加钉钉群(群号:79690034672),联系技术支持人员以获取KBSync文件。

    • 运行KBSync程序需要为Linux环境,并且可以访问Microsoft Graph APIRAGFlow。

  2. 准备配置文件config

    1. 创建名为configLinux系统文件。

    2. 将以下代码复制到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=
    3. 替换config文件中的参数。

      重要
      • 无需配置的参数,将其取值设置为空值即可。

      • 参数blackList的优先级高于参数whiteList

      参数

      是否必填

      说明

      获取方式

      whiteList

      需要传输(白名单)和无需传输(黑名单)的路径。

      说明

      支持正则表达式,多个路径需使用空格分隔。

      自行在SharePoint中获取目标文件夹路径。

      blackList

      sourceType

      源端的类型。

      取值请保持LlamaHub

      sinkType

      目标端的类型。

      取值请保持RagFlowV2

      sleepTime

      增量扫描间隔。

      -

      documentSyncMode

      同步模式:

      • full:全量

      • inc:增量

      -

      llamahubReader_client_id

      Microsoft Entra ID中注册的应用程序(客户端) ID。

      步骤一:在Microsoft Entra ID中注册应用程序

      llamahubReader_tenant_id

      Microsoft Entra ID中的目录(租户) ID。

      llamahubReader_client_secret

      Microsoft Entra ID中创建的客户端密钥。

      步骤二:创建客户端密钥

      llamahubReader_sharepoint_site_name

      SharePoint站点名称。

      步骤四:获取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程序

  1. KBSync文件和配置文件config,放在Linux环境中的同一目录中。

  2. Linux环境中执行./KBSync --config config命令,运行KBSync程序。

故障排查

错误信息

可能原因

解决方案

Authentication failed

客户端密钥错误或已过期。

检查Client IDClient Secret是否正确。若密钥已过期,请在Azure门户中重新创建密钥。

Access denied

API权限未授予或管理员未同意。

确认API权限已添加并获得管理员同意。在Azure门户的API权限页面,检查状态是否显示为已授予

Site not found

Site NameURL配置错误。

验证SharePoint站点名称和路径是否正确,确保llamahubReader_sharepoint_site_name参数填写的是站点名称而非完整URL。

Insufficient privileges

应用无权限访问特定站点。

使用Sites.Selected权限时,需要通过Microsoft Graph API为应用显式授予目标站点的访问权限。请参见配置API权限中的说明完成站点级别授权。

附录:授权SharePoint站点级别权限

Sites.Selected权限需要通过Microsoft Graph API给具体的站点授权,Azure控制台不支持按站点授权操作。

  1. Graph Explorer中,使用全局管理员账号登录,并为当前会话授予Sites.FullControl.All权限。

    操作方式:输入任意请求后,单击上方的Modify permissions标签,找到Sites.FullControl.All并单击Consent完成授权。

  2. 获取目标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。

  3. 为应用授予特定站点的访问权限。在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(完全控制)。

  4. 验证权限是否生效。执行GET https://graph.microsoft.com/v1.0/sites/{site-id}/permissions,确认返回结果中包含您的应用及其角色信息。