Method 与 URL
获取文件上传路径和授权签名:
POST https://{实例访问 IP 地址}:{实例网络端口}/ai/documentSet/uploadUrl
。说明:
获取授权签名后,您需使用 COS(对象存储)SDK 或 Restful API 将文档上传至 COS 服务器。文件上传完成的状态通知之后,向量数据库便会开始拉取文件并解析文件内容,进行拆分、向量化,创建索引并进行存储。
HTTP 上传文件的方式需要借助 COS 上传文件的接口,操作较繁琐,推荐使用向量数据库 Python SDK 的方式直接上传文件。
约束限制
每次仅能上传一个文件,上传之后,将自动进行拆分、向量化等。
该接口当前不支持使用别名获取文件的上传路径与授权。
请求参数
注意:
如下示例 api_key 的值 A5VOgsMpGWJhUI0WmUbY******************** 与 10.0.X.X,需要分别替换为具体实例的 API Key 以及访问地址。
说明:
curl -i -X POST \\-H 'Content-Type: application/json' \\-H 'Authorization: Bearer account=root&api_key=A5VOgsMpGWJhUI0WmUbY********************' \\http://10.0.X.X:80/ai/documentSet/uploadUrl \\-d '{"database":"db-test-ai","collectionView":"coll-ai-files","documentSetName":"腾讯云向量数据库.pdf"}'
参数名 | 是否必选 | 参数含义 |
database | 是 | 文件预上传的目标数据库名。 |
collectionView | 是 | 文件预上传的目标数据库的集合视图名。 说明: 该参数目前不支持配置为集合视图的别名,即该接口当前不支持使用别名获取文件的上传路径与授权。 |
documentSetName | 是 | 文件名称。 |
响应信息
{"code": 0,"msg": "operation success, requestId: eea021e910f89417****************","cosEndpoint": "https://gz-vector-test-cos-1257943044.cos.ap-guangzhou.myqcloud.com","cosRegion":"ap-guangzhou","cosBucket":"gz-vector-test-cos-1257943044","uploadPath": "embedding_file/vdb-jcrlbp46/db-test-ai/coll-ai-files/腾讯云向量数据库.md","credentials": {"TmpSecretId": "********************************************************************","TmpSecretKey": "pnIGo********+Jete***************************","Token": "4EGei**********************************************************************************************************************************************************"},"uploadCondition": {"maxSupportContentLength":1048576},"documentSetId": "MTE2ODgzNDAxNDU0MzYxMzk1Mg=="}
VDB 参数名 | 参数含义 | 子参数 | 子参数含义 | 对应 COS SDK 参数名 | COS 子参数 |
cosEndpoint | 腾讯云对象存储(COS)的服务端点(Endpoint),即 COS 服务的访问地址。 | - | - | cos_endpoint | - |
cosBucket
| COS 服务端存储桶名称。 | - | - | - | - |
cosRegion
| COS 服务端存储桶所属地域。 | - | - | cosRegion | - |
uploadPath | 依据数据库名、集合名、文件名拼接生成的 COS 端存放路径。 | - | - | upload_path
| - |
credentials | COS 给该文件上传分配的临时身份凭证,以便在上传文件时进行身份验证和授权访问。 | TmpSecretId | 密钥 ID | credentials | SecretId |
| | TmpSecretKey | 密钥信息 | | SecretKey |
| | Token | Token 信息 | | Token |
uploadCondition |
上传约束条件。
|
maxSupportContentLength
| 限制上传文件的最大字节数 | maxSupportContentLength | - |
documentSetId | COS 给文件分配的 ID 信息。 | - | | fileId | - |
使用 COS Python SDK 上传文件示例
如下示例为 COS Python SDK 上传文件的参考代码。您需要根据代码注释替换相关授权凭证,以及如下表所列参数,便可以通过 upload_file() 接口上传文件。更多信息,请参见 COS Python SDK。
参数 | 是否必须 | 参数含义 |
local_file_path | 是 | 本地上传路径 |
cos_metadata | 是 | 文件元数据库配置,配置方法,请参见如下代码示例注释。文件的 Metadata 元数据信息,可自定义扩展字段。例如:author、tags 等。 上传文件时,可为创建 CollectionView 设置的 Filter 索引的字段赋值,以便在检索时,使用该字段的 Filter 表达式检索文件。 上传文件时,可以新增标量字段,但新增字段不会构建 Filter 索引。 |
appendTitleToChunk | 否 | 在对文件拆分时,配置是否将 Title 追加到切分后的段落后面一并 Embedding。取值如下所示: 0:不追加。默认值为 0。 1:将段落 title 追加到切分后的段落。 |
appendKeywordsToChunk | 否 | 在对文件拆分时,配置是否将关键字 keywords 追加到切分后的段落一并 Embedding。取值如下所示: 0:不追加。 1:将全文的 keywords 追加到切分后的段落。默认值为 1。 |
chunkSplitter | 否 | 以正则表达式的方式配置文档拆分方式,例如: \\n{2,} 代表以两个及以上的换行进行拆分,常用在 QA 对文件拆分中。 |
parsingProcess | 否 | 通过参数 parsingType 指定 PDF 类型文件的解析方式,取值如下所示: VisionModelParsing:文件依据解析模型解析,推荐使用,可解析 PDF 中双栏、表格等复杂格式。 AlgorithmParsing:文件依据算法解析,系统默认解析方式。Markdown、Word、PPT 类型,无需配置该参数,默认使用 AlgorithmParsing 解析。 |
import requestsimport jsonimport osimport sysimport urllibimport base64from qcloud_cos import CosConfig, CosS3Clientlocal_file_path = "<your_local_file_path>"# 1. json解析 /ai/documentSet/uploadUrl 获得的签名结果:result = json.loads("<results from /ai/documentSet/uploadUrl>")# 2. 文件Size校验(支持1MB Markdown文件)limit_size = result["uploadCondition"]["maxSupportContentLength"]file_stat = os.stat(local_file_path)if limit_size < file_stat.st_size:print("The file exceeds its maximum permitted size")sys.exit(0)# 3. 设置COS上传签名credentials = result["credentials"]print(credentials)config = CosConfig(Region=result["cosRegion"],SecretId=credentials["TmpSecretId"],SecretKey=credentials["TmpSecretKey"],Token=credentials["Token"])# 4. 您可以自定义文件 Metadata 信息# 说明1:x-cos-meta-data,自定义属性及赋值,必填字段;{类型}支持string、uint64、array;{字段名}为元数据字段名,例如:author,page,city等。metadata = {"fieldStr": "v1", "fieldInt": 1024, "fieldList": ["a", "b", "c"]}# notice:必填字段,没有传:metadata = {}# 说明2:chunk embedding增强参数config = {"appendTitleToChunk": 1, "appendKeywordsToChunk": 1, "parsingProcess": {"parsingType": "VisionModelParsing"}} #上传文件时单独配置预处理逻辑cos_metadata = {'x-cos-meta-id': result.get('documentSetId'), # 文件唯一标识符,必填字段'x-cos-meta-config': urllib.parse.quote(base64.b64encode(json.dumps(config).encode('utf-8'))),'x-cos-meta-data': urllib.parse.quote(base64.b64encode(json.dumps(metadata).encode('utf-8')))}# 5. 上传文件:CosS3Client(config).upload_file(Bucket=result.get('cosBucket'),Key=result.get('uploadPath'),LocalFilePath=local_file_path, # 本地文件路径Metadata=cos_metadata)