将数据连接器与 LlamaIndex on Vertex AI for RAG 搭配使用

本页面介绍了如何使用数据连接器访问存储在 Cloud Storage、Google 云端硬盘、Slack 或 Jira 中的数据,以及如何将这些数据与 LlamaIndex on Vertex AI for RAG 搭配使用。导入 RagFiles API 可为这些数据源提供数据连接器。

从 Cloud Storage 或 Google 云端硬盘导入文件

如需将 Cloud Storage 或 Google 云端硬盘中的文件导入到语料库中,请执行以下操作:

  1. 按照创建 RAG 语料库中的说明创建语料库。
  2. 使用模板从 Cloud Storage 或 Google 云端硬盘导入文件。

从 Slack 导入文件

如需将 Slack 中的文件导入到语料库中,请执行以下操作:

  1. 创建语料库,这是一种索引,可对您的数据进行结构化和优化,以便进行搜索。按照创建 RAG 语料库中的说明操作。
  2. 通过 Slack 频道 ID 获取 CHANNEL_ID
  3. 创建并设置一个应用,以便与 LlamaIndex on Vertex AI for RAG 搭配使用。
    1. 在 Slack 界面的添加特性和功能部分中,点击权限
    2. 添加以下权限:
      • channels:history
      • groups:history
      • im:history
      • mpim:history
    3. 点击安装到工作区,将应用安装到您的 Slack 工作区。
  4. 点击复制以获取 API 令牌,该令牌可验证您的身份并授予您对 API 的访问权限。
  5. 将您的 API 令牌添加到 Secret Manager。
  6. 如需查看存储的 Secret,请向项目的 LlamaIndex on Vertex AI for RAG 服务账号授予 Secret Manager Secret Accessor 角色。

以下 curl 和 Python 代码示例演示了如何从您的 Slack 资源导入文件。

curl

如果您想从特定频道获取消息,请更改 CHANNEL_ID

API_KEY_SECRET_VERSION=SLACK_API_KEY_SECRET_VERSION
CHANNEL_ID=SLACK_CHANNEL_ID
PROJECT_ID=us-central1

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://${ ENDPOINT }/v1beta1/projects/${ PROJECT_ID }/locations/${ PROJECT_ID }/ragCorpora/${ RAG_CORPUS_ID }/ragFiles:import \
-d '{
  "import_rag_files_config": {
    "slack_source": {
      "channels": [
        {
          "apiKeyConfig": {
            "apiKeySecretVersion": "'"${ API_KEY_SECRET_VERSION }"'"
          },
          "channels": [
            {
              "channel_id": "'"${ CHANNEL_ID }"'"
            }
          ]
        }
      ]
    }
  }
}'

Python

如果您想获取指定时间范围或特定渠道的消息,请更改以下任一字段:

  • START_TIME
  • END_TIME
  • CHANNEL1CHANNEL2
    # Slack example
    start_time = protobuf.timestamp_pb2.Timestamp()
    start_time.GetCurrentTime()
    end_time = protobuf.timestamp_pb2.Timestamp()
    end_time.GetCurrentTime()
    source = rag.SlackChannelsSource(
        channels = [
            SlackChannel("CHANNEL1", "api_key1"),
            SlackChannel("CHANNEL2", "api_key2", START_TIME, END_TIME)
        ],
    )

    response = rag.import_files(
        corpus_name="projects/my-project/locations/us-central1/ragCorpora/my-corpus-1",
        source=source,
        chunk_size=512,
        chunk_overlap=100,
    )

从 Jira 导入文件

如需将 Jira 中的文件导入到您的语料库中,请执行以下操作:

  1. 创建语料库,这是一种索引,可对您的数据进行结构化和优化,以便进行搜索。按照创建 RAG 语料库中的说明操作。
  2. 如需创建 API 令牌,请登录 Atlassian 网站
  3. 在请求中使用 {YOUR_ORG_ID}.atlassian.net 作为 SERVER_URI
  4. 在请求中使用您的 Atlassian 电子邮件地址作为 EMAIL
  5. 在请求中提供 projectscustomQueries。如需详细了解自定义查询,请参阅使用 Jira 查询语言 (JQL) 进行高级搜索

    导入 projects 时,projects 会展开为相应的查询,以获取整个项目。例如,MyProject 会展开为 project = MyProject

  6. 点击复制以获取 API 令牌,该令牌可验证您的身份并授予您对 API 的访问权限。
  7. 将您的 API 令牌添加到 Secret Manager。
  8. 向项目的 LlamaIndex on Vertex AI for RAG 服务账号授予 Secret Manager Secret Accessor 角色。

curl

EMAIL=JIRA_EMAIL
API_KEY_SECRET_VERSION=JIRA_API_KEY_SECRET_VERSION
SERVER_URI=JIRA_SERVER_URI
CUSTOM_QUERY=JIRA_CUSTOM_QUERY
PROJECT_ID=JIRA_PROJECT
REGION= "us-central1"

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://${ ENDPOINT }/v1beta1/projects/${ PROJECT_ID }/locations/REGION>/ragCorpora/${ RAG_CORPUS_ID }/ragFiles:import \
-d '{
  "import_rag_files_config": {
    "jiraSource": {
      "jiraQueries": [{
        "projects": ["'"${ PROJECT_ID }"'"],
        "customQueries": ["'"${ CUSTOM_QUERY }"'"],
        "email": "'"${ EMAIL }"'",
        "serverUri": "'"${ SERVER_URI }"'",
        "apiKeyConfig": {
          "apiKeySecretVersion": "'"${ API_KEY_SECRET_VERSION }"'"
        }
      }]
    }
  }
}'

Python

    # Jira Example
    jira_query = rag.JiraQuery(
        email="xxx@yyy.com",
        jira_projects=["project1", "project2"],
        custom_queries=["query1", "query2"],
        api_key="api_key",
        server_uri="server.atlassian.net"
    )
    source = rag.JiraSource(
        queries=[jira_query],
    )

    response = rag.import_files(
        corpus_name="projects/my-project/locations/REGION/ragCorpora/my-corpus-1",
        source=source,
        chunk_size=512,
        chunk_overlap=100,
    )

后续步骤