阿里云RAG问答

6 阅读2分钟

第一篇:知识库资料入库与索引构建

记录时间:2026-04-28
适用场景:阿里云百炼 SDK 填坑实录
大神提示:此篇主要记录 SDK 调用的特殊写法,大神可略过,求轻喷 🙏

本篇记录如何基于阿里云百炼 SDK 实现文件的上传、解析及索引构建。重点在于官方文档与实际 SDK 源码的差异填坑。

1. 核心依赖

npm install @alicloud/openapi-client @alicloud/bailian20231229 @alicloud/tea-util axios

2. 关键参数准备

  • categoryId: 类目 ID(测试可用 default
  • workspaceId: 业务空间 ID
  • AccessKey/Secret: 阿里云凭证

3. 核心流程 (Pipeline)

  • Step 1: 申请租约 -> ApplyFileUploadLease
  • Step 2: 上传文件 -> 利用 Step 1 返回的 URL + Headers,通过 axios 上传至百炼临时存储。
  • Step 3: 关联文件 -> AddFile,触发后台自动解析与切片。
  • Step 4: 轮询状态 -> DescribeFile,循环检测直至 PARSE_SUCCESS
  • Step 5: 提交索引 -> SubmitIndexAddDocumentsJob,写入向量索引。

4. ⚠️ 核心踩坑实录 (必读)
在实现 DescribeFile 轮询时,千万不要直接照搬官方示例,否则会报错!必须修正 SDK 的调用方式:

  • ❌ 官方示例 (错误写法)

    // 官方文档里的写法,直接用可能会报错
    return await client.describeFileWithOptions(workspaceId, fileId, headers, runtime);
    
  • ✅ 源码级修正 (正确写法)

    // 必须构造 DescribeFileRequest 对象
    const request = new Bailian.DescribeFileRequest({});
    // 注意参数顺序:workspaceId, fileId, request, headers, runtime
    const response = await client.describeFileWithOptions(WorkspaceId, fileId, request, {}, runtime);
    

5. 补充说明

  • SubmitIndexAddDocumentsJob 方法中,必须填写 sourceType 字段。
  • indexId 即为知识库 ID,需在控制台查看。

💡 总结
由于代码量较多,包含完整的 Express 路由封装和环境变量配置,直接粘贴容易格式错乱。如果你需要完整的源码参考,可以私信我获取,欢迎交流讨论!