将文件上传到向量存储
将文件内容批量上传到向量存储
Upload files to a vector store.
The ID of the vector store.
The API key for authentication.
The files to upload.
Files uploaded successfully.
Some files failed to upload.
示例请求
curl -X POST \
https://api.rememberizer.ai/api/v1/vector-stores/vs_abc123/documents/upload \
-H "x-api-key: YOUR_API_KEY" \
-F "files=@/path/to/document1.pdf" \
-F "files=@/path/to/document2.docx"const uploadFiles = async (vectorStoreId, files) => {
const formData = new FormData();
// 将多个文件添加到表单数据中
for (const file of files) {
formData.append('files', file);
}
const response = await fetch(`https://api.rememberizer.ai/api/v1/vector-stores/${vectorStoreId}/documents/upload`, {
method: 'POST',
headers: {
'x-api-key': 'YOUR_API_KEY'
// 注意:不要设置 Content-Type 头,它会自动设置为正确的边界
},
body: formData
});
const data = await response.json();
console.log(data);
};
// 使用文件输入元素的示例
const fileInput = document.getElementById('fileInput');
uploadFiles('vs_abc123', fileInput.files);```ruby require 'net/http' require 'uri' require 'json'
def upload_files(vector_store_id, file_paths) uri = URI("https://api.rememberizer.ai/api/v1/vector-stores/#{vector_store_id}/documents/upload")
创建一个新的 HTTP 对象
http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true
创建一个 multipart-form 请求
request = Net::HTTP::Post.new(uri) request['x-api-key'] = 'YOUR_API_KEY'
创建一个 multipart 边界
boundary = "RubyFormBoundary#{rand(1000000)}" request['Content-Type'] = "multipart/form-data; boundary=#{boundary}"
构建请求体
body = [] file_paths.each do |file_path| file_name = File.basename(file_path) file_content = File.read(file_path, mode: 'rb')
end body << "--#{boundary}--\r\n"
request.body = body.join
发送请求
response = http.request(request)
解析并返回响应
JSON.parse(response.body) end
{% hint style="info" %} 将 YOUR_API_KEY 替换为您的实际 Vector Store API 密钥,将 vs_abc123 替换为您的 Vector Store ID,并提供您本地文件的路径。 {% endhint %} {% endtab %} {% endtabs %}
路径参数
vector-store-id
字符串
必填。 要上传文件的向量存储的 ID。
请求体
此端点接受一个 multipart/form-data 请求,其中 files 字段包含一个或多个文件。
响应格式
如果某些文件上传失败,它们将被列在 errors 数组中:
认证
此端点需要使用 x-api-key 头中的 API 密钥进行认证。
支持的文件格式
PDF (
.pdf)Microsoft Word (
.doc,.docx)Microsoft Excel (
.xls,.xlsx)Microsoft PowerPoint (
.ppt,.pptx)文本文件 (
.txt)Markdown (
.md)JSON (
.json)HTML (
.html,.htm)
文件大小限制
单个文件大小限制:50MB
总请求大小限制:100MB
每个请求的最大文件数量:20
错误响应
400
错误请求 - 未提供文件或请求格式无效
401
未授权 - API 密钥无效或缺失
404
未找到 - 找不到向量存储
413
有效负载过大 - 文件超过大小限制
415
不支持的媒体类型 - 文件格式不受支持
500
服务器内部错误
207
多状态 - 一些文件上传成功,但其他文件失败
处理状态
文件最初以 processing 状态被接受。您可以使用 获取向量存储中的文档列表 端点检查文档的处理状态。最终状态将是以下之一:
done: 文档已成功处理error: 处理过程中发生错误processing: 文档仍在处理中
处理时间取决于文件大小和复杂性。典型的处理时间为每个文档 30 秒到 5 分钟之间。
批量操作
为了高效地将多个文件上传到您的向量存储,Rememberizer 支持批量操作。这种方法有助于在处理大量文档时优化性能。
批量上传实现
{% tabs %} {% tab title="Python" %}
{% endtab %}
{% tab title="JavaScript" %}
{% endtab %}
{% tab title="Ruby" %}
批量上传最佳实践
为了优化上传大量文件时的性能和可靠性:
管理批量大小:保持批量大小在5-10个文件之间以获得最佳性能。单个请求中的文件过多会增加超时的风险。
实施速率限制:在批次之间添加延迟(建议2-3秒)以避免触及API速率限制。
添加错误重试逻辑:对于生产系统,实施失败上传的重试逻辑,采用指数退避策略。
验证文件类型:在尝试上传之前,预先过滤文件以确保它们是支持的类型。
监控批次进度:对于面向用户的应用程序,提供批量操作的进度反馈。
处理部分成功:API可能会返回207状态码以表示部分成功。始终检查单个文档的状态。
清理资源:确保所有文件句柄在发生错误时正确关闭。
明智地并行化:对于非常大的上传(数千个文件),考虑多个并发批处理进程,针对不同的向量存储,然后在需要时合并结果。
实施校验和:对于关键数据,在上传前后使用校验和验证文件完整性。
记录全面结果:保持所有上传操作的详细日志以便于故障排除。
通过遵循这些最佳实践,您可以高效地管理大规模文档的摄取到您的向量存储中。
Last updated