接口定义
UploadFile() 接口用于上传文件于 Base 类向量数据库。文件上传后,其内容将被直接拆分并写入指定的 Collection,而非 CollectionView。
说明:
当前支持导入 Collection 的文件类型包含: Markdown、PDF、Word、PPT。其中,仅 PDF 类型支持解析图片信息。
public void UploadFile(String database,String collection,UploadFileParam collectionLoadAndSplitTextParam,Map<String, Object> metaDataMap)
约束限制
每次仅能上传一个文件,上传之后,将自动进行拆分、向量化等。
该接口当前不支持使用别名获取文件的上传路径与授权。
注意:
在创建存储文件内容的 Collection 时,索引字段的设计需遵循以下限制与建议,否则可能导致上传文件失败。
文件名字段(file_name):该字段必须定义为 string 类型的 filter 索引,以支持文件的过滤检索和处理同名文件覆盖的情况。字段名可以自定义,在上传文件时,需通过参数 FieldMappings 的 filename 映射自定义的字段名。
文件内容字段(text):该字段用于存储知识点的原始文本内容。由于文本内容可能较大,不建议为该字段创建索引,以避免占用过多内存空间。数据库会自动写入该字段的内容。在查询时,只需要通过 output_fields 参数指定该字段即可返回原始文本。字段名可以自定义,但需通过参数 FieldMappings 的 text 映射自定义的字段名。
文件图片信息字段(image_list):该字段存放 PDF 文件中图片的 Key 列表。在原始检索出的文本块中,图片位置将以 {key} 的形式进行占位。通过调用接口 GetImageUrl,可以获取图片 URL 地址列表,这些地址与 Key 一一对应,从而实现将原始 PDF 文档恢复并展示为 HTML 格式。
不建议为该字段创建索引。如果需要创建索引,必须确保其为数组(array)类型,否则接口将报错,导致文件无法上传。
字段名可以自定义,但需要在上传文件时通过参数 FieldMappings 的 imageList 映射到自定义的字段名。
使用示例
说明:
// 配置文件 matadata 信息,示例中指定了author 与 tagsMap<String, Object> metaDataMap = new HashMap<>();metaDataMap.put("author", "Tencent");metaDataMap.put("tags", Arrays.asList("Embedding", "向量", "AI"));// 配置文件与数据库中存储的映射字段Map<String,String> columnMap = new HashMap<>();columnMap.put("filename", "file_name");columnMap.put("text", "text");columnMap.put("imageList", "image_list");// 上传文件// 1. LocalFilePath:指定当前文件在客户端的路径// 2. FileName:指定文件名// 3. SplitterProcess:配置文件拆分规则// 4. ParsingProcess:指定文件解析方式// 5. metadata:定义文件 meta 信息字段,示例中指定了author 与 tags// 6. FieldMappings:文件与数据库中存储的映射字段// 7. EmbeddingModel:Embedding 模型UploadFileParam param = UploadFileParam.newBuilder().withLocalFilePath("/data/home/********/腾讯云向量数据库.pdf").withSplitterProcess(SplitterPreprocessParams.newBuilder().withAppendKeywordsToChunkEnum(true).Build())// parsingProcess is used for parsing pdf file by vision model.withParsingProcess(ParsingProcessParam.newBuilder().withParsingType(ParsingTypeEnum.VisionModel).build()).withFileName("腾讯云向量数据库.pdf").withFieldMappings(columnMap).withEmbeddingModel("bge-base-zh").Build();client.UploadFile("db-test", "coll-file-test", param, metaDataMap);
入参描述
参数名 | 子参数(-) | 子参数(二) | 是否必选 | 参数含义 |
database | | - | 是 | 指定 Database 名称。 |
collection | | - | 是 | 指定 Collection 的名称。 |
UploadFileParam | LocalFilePath | - | 是 | 本地上传文件路径。 |
| FileName | - | 否 | 指定上传的文件名。 |
| SplitterProcess | AppendTitleToChunkEnum | 否 | 在对文件拆分时,配置是否将 Title 追加到切分后的段落后面一并 Embedding。取值如下所示: false:不追加。默认值为 false。 true:将段落 Title 追加到切分后的段落。 |
| | AppendKeywordsToChunkEnum | 否 | 在对文件拆分时,配置是否将关键字 keywords 追加到切分后的段落一并 Embedding。取值如下所示: false:不追加。 true:将全文的 keywords 追加到切分后的段落。默认值为 true。 |
| | ChunkSplitter | 否 | 以正则表达式的方式配置文档拆分方式,如下: \\n{2,} 代表以两个及以上的换行进行拆分,常用在 QA 对文件拆分中。 |
| ParsingProcess | ParsingType | 否 | 指定 PDF 类型文件的解析方式,取值如下所示: VisionModelParsing:文件依据解析模型解析,推荐使用,可解析 PDF 中双栏、表格等复杂格式。 AlgorithmParsing:文件依据算法解析,系统默认解析方式。Markdown、Word、PPT 类型,无需配置该参数,默认使用 AlgorithmParsing 解析。 |
| EmbeddingModel | - | 是 | bge-large-zh-v1.5:适用中文,1024维,推荐使用。 bge-base-zh-v1.5:适用中文,768维。 bge-large-zh:适用中文,1024维。 bge-base-zh:适用中文,768维。 m3e-base:适用中文,768维。 e5-large-v2:适用英文,1024维。 text2vec-large-chinese:适用中文,1024维。 multilingual-e5-base:适用于多种语言类型,768维。 BAAI/bge-m3:适用于多种语言类型,1024维。 |
| FieldMappings | - | 是 | 指定文件字段在数据库中映射关系。 filename:指定文件名映射的字段。例如: columnMap.put("filename", "file_name") ,其中,file_name 为自定义字段,用于在数据库中存储文件名信息。注意: 必须定义为 string 类型的 filter 索引,以支持文件的过滤检索和处理同名文件覆盖的情况。 text:指定文件内容文本映射的字段,存储知识点的原始文本内容。例如: columnMap.put("text", "text") ,其中,text 为自定义字段,用于在数据库中存储文件的原始文本内容。说明: 由于文本内容可能较大,不建议为该字段创建索引,以避免占用过多内存空间。数据库会自动写入该字段的内容。在查询时,只需要通过 output_fields 参数指定该字段即可返回原始文本。 image_list:指定图片信息存放的字段,存放 PDF 文件中图片的 Key 列表。例如: columnMap.put("imageList", "image_list") ,其中,image_list 为自定义的字段,用于在数据库中存储图片列表。说明: 不建议为该字段创建索引。如果需要创建索引,必须确保其为数组(array)类型,否则接口将报错,导致文件无法上传。 |
| metaDataMap | - | 否 | 文件的 Metadata 元数据信息,可自定义扩展字段。例如:author、tags 等。 上传文件时,可为创建 Collection 设置的 Filter 索引的字段赋值,以便在检索时,使用该字段的 Filter 表达式检索文件。 上传文件时,可以新增标量字段,但新增字段不会构建 Filter 索引。 |