上传文件

最近更新时间:2025-09-01 19:41:51

我的收藏

接口定义

upload_file() 接口用于上传文件于 Base 类向量数据库。文件上传后,其内容将被直接拆分并写入指定的 Collection 中,而非 CollectionView。
说明:
当前支持导入 Collection 的文件类型包含: Markdown、PDF、Word、PPT。其中,仅 PDF 类型支持解析图片信息。
def upload_file(self,
database_name: str,
collection_name: str,
local_file_path: str,
file_name: Optional[str] = None,
splitter_process: Optional[SplitterProcess] = None,
parsing_process: Optional[ParsingProcess] = None,
embedding_model: Optional[str] = None,
field_mappings: Optional[Dict[str, str]] = None,
metadata: Optional[dict] = None,
) -> dict:

约束限制

每次仅能上传一个文件,上传之后,将自动进行拆分、向量化等。
该接口当前不支持使用别名获取文件的上传路径与授权。
注意:
在创建存储文件内容的 Collection 时,索引字段的设计需遵循以下限制与建议,否则可能导致上传文件失败。
文件名字段(file_name):该字段必须定义为 string 类型的 filter 索引,以支持文件的过滤检索和处理同名文件覆盖的情况。字段名可以自定义,在上传文件时,需通过参数 field_mappings 的 filename 映射自定义的字段名。
文件内容字段(text):该字段用于存储知识点的原始文本内容。由于文本内容可能较大,不建议为该字段创建索引,以避免占用过多内存空间。数据库会自动写入该字段的内容。在查询时,只需要通过 output_fields 参数指定该字段即可返回原始文本。字段名可以自定义,但需通过参数 field_mappings 的 text 映射自定义的字段名。
文件图片信息字段(image_list):该字段存放 PDF 文件中图片的 Key 列表。在原始检索出的文本块中,图片位置将以 {key} 的形式进行占位。通过调用接口 get_image_url,可以获取图片 URL 地址列表,这些地址与 Key 一一对应,从而实现将原始 PDF 文档恢复并展示为 HTML 格式。
不建议为该字段创建索引。如果需要创建索引,必须确保其为数组(array)类型,否则接口将报错,导致文件无法上传。
字段名可以自定义,但需要在上传文件时通过参数 field_mappings 的 imageList 映射到自定义的字段名。

使用示例

说明:
如果需要进行腾讯云向量数据库的测试,请获取 腾讯云向量数据库.pdf 文档。
import tcvectordb
from tcvectordb.model.document import Filter, Document
from tcvectordb.model.enum import ReadConsistency
from tcvectordb.model.collection_view import SplitterProcess, ParsingProcess

#create a database client object
client = tcvectordb.RPCVectorDBClient(url='http://10.0.X.X:80', username='root', key='eC4bLRy2va******************************', read_consistency=ReadConsistency.EVENTUAL_CONSISTENCY, timeout=30)

# 上传文件
# 1. local_file_path:指定当前文件在客户端的路径
# 2. file_name:配置文件存储于向量数据库的名称,可不配置,从local_file_path获取
# 3. splitter_process:配置文件拆分规则
# 4. parsing_process:指定文件解析方式
# 5. metadata:定义文件 meta 信息字段,示例中指定了author 与 tags
# 6. field_mappings:文件与数据库中存储的映射字段
# 7. embedding_model:Embedding 模型
res = client.upload_file(
database_name='db-test',
collection_name='coll-file-test',
local_file_path="/data/home/********/腾讯云向量数据库.pdf",
metadata={
'author': 'Tencent',
'tags': ['向量', 'Embedding', 'AI']
},
splitter_process=SplitterProcess(
append_keywords_to_chunk=True,
append_title_to_chunk=False,
# chunk_splitter 参数以正则表达式的方式配置文档拆分方式,如下:\\n{2,} 代表以两个及以上的换行进行拆分,常用在QA对文件拆分中。
# chunk_splitter="\\n{2,}",
),
parsing_process=ParsingProcess(
parsing_type='VisionModelParsing'
),
embedding_model='bge-base-zh',
field_mappings={
"filename": "file_name",
"text": "text",
"imageList": "image_list",
"chunkNum": "chunk_num",
"sectionNum": "section_num",
},
)
print(res)
输出信息,如下所示。
{
"database": "db-test",
"collection": "coll-files-test",
"fileName": "腾讯云向量数据库.pdf",
"splitterPreprocess": {
"appendTitleToChunk": false,
"appendKeywordsToChunk": true
},
"parsingProcess": {
"parsingType": "VisionModelParsing"
},
"embeddingModel": "bge-base-zh",
"fieldMappings": {
"filename": "file_name",
"text": "text",
"imageList": "image_list"
"chunkNum": "chunk_num",
"sectionNum": "section_num"
},
"id": "腾讯云向量数据库.pdf"
}

入参描述

参数名
子参数
是否必选
参数含义
database_name
-
指定 Database 名称。
collection_name
-
指定 Collection 的名称。
file_name
-
指定文件名。若不指定,从 local_file_path 获取文件名。
local_file_path
-
本地上传文件路径。
metadata
-
文件的 Metadata 元数据信息,可自定义扩展字段。例如:author、tags 等。
上传文件时,可为创建 Collection 设置的 Filter 索引的字段赋值,以便在检索时,使用该字段的 Filter 表达式检索文件。
上传文件时,可以新增标量字段,但新增字段不会构建 Filter 索引。
splitter_process
append_title_to_chunk
在对文件拆分时,配置是否将 Title 追加到切分后的段落后面一并 Embedding。取值如下所示:
False:不追加。默认值为 False。
True:将段落 Title 追加到切分后的段落。
append_keywords_to_chunk
在对文件拆分时,配置是否将关键字 keywords 追加到切分后的段落一并 Embedding。取值如下所示:
False:不追加。
True:将全文的 keywords 追加到切分后的段落。默认值为 True。
chunk_splitter
以正则表达式的方式配置文档拆分方式,如下:\\n{2,} 代表以两个及以上的换行进行拆分,常用在 QA 对文件拆分中。
parsing_process
parsing_type
指定 PDF 类型文件的解析方式,取值如下所示:
VisionModelParsing:文件依据解析模型解析,推荐使用,可解析 PDF 中双栏、表格等复杂格式。
AlgorithmParsing:文件依据算法解析,系统默认解析方式。Markdown、Word、PPT 类型,无需配置该参数,默认使用 AlgorithmParsing 解析。
embedding_model
-
指定使用的 Embedding 模型的名称。您需根据业务的语言类型、数据维度要求等综合选择合适的模型。具体信息,参见 Embedding 介绍。取值如下所示:
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维。
field_mappings
-
指定文件字段在数据库中映射关系。
filename:指定文件名映射的字段。例如:"filename": "file_name",其中,file_name 为用户自定义字段,以在数据库中存储文件名数据。
注意:
必须定义为 string 类型的 filter 索引,以支持文件的过滤检索和处理同名文件覆盖的情况。
text:指定文件内容文本映射的字段,存储知识点的原始文本内容。例如:"text": "text",其中,text 为用户自定义字段,以在数据库中存储文件的原始文本内容。
说明:
由于文本内容可能较大,不建议为该字段创建索引,以避免占用过多内存空间。数据库会自动写入该字段的内容。在查询时,只需要通过 output_fields 参数指定该字段即可返回原始文本。
imageList:指定图片信息存放的字段。例如:"imageList": "image_list",其中,image_list 为用户自定义的字段,以在数据库中存储图片 Key 列表。
说明:
不建议为该字段创建索引。如果需要创建索引,必须确保其为数组(array)类型,否则接口将报错,导致文件无法上传。
chunkNum:指定数据库中存放文件切分语块序号的字段。例如:"chunkNum": "chunk_num",其中,chunk_num 为用户自定义字段,其值为唯一标识语块片段的整数。
说明:
在创建 Collection 时若为该字段(如 chunk_num)创建索引,则查询文件内容时可通过 Filter 表达式指定语块范围,快速定位目标文件内容。
sectionNum:指定数据库中用于存储文件段落序号的字段名。例如:"sectionNum": "section_num",其中,section_num 为用户自定义的字段,其值为唯一标识段落的整数。
说明:
在创建 Collection 时若为该字段(如 section_num)创建索引,则查询文件内容时可通过 Filter 表达式指定段落范围内的语块,快速定位目标文件内容。