第一篇:知识库资料入库与索引构建
记录时间:2026-04-28
适用场景:阿里云百炼 SDK 填坑实录
大神提示:此篇主要记录 SDK 调用的特殊写法,大神可略过,求轻喷 🙏
本篇记录如何基于阿里云百炼 SDK 实现文件的上传、解析及索引构建。重点在于官方文档与实际 SDK 源码的差异填坑。
1. 核心依赖
npm install @alicloud/openapi-client @alicloud/bailian20231229 @alicloud/tea-util axios
2. 关键参数准备
categoryId: 类目 ID(测试可用default)workspaceId: 业务空间 IDAccessKey/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 路由封装和环境变量配置,直接粘贴容易格式错乱。如果你需要完整的源码参考,可以私信我获取,欢迎交流讨论!