Tải lên tệp vào Lưu Trữ Vector
Tải nội dung tệp lên Vector Store với các thao tác theo lô
Tải tệp lên một Vector Store
Upload files to a vector store.
The ID of the vector store.
The API key for authentication.
The files to upload.
POST /api/v1/vector-stores/{vector-store-id}/documents/upload HTTP/1.1
Host: api.rememberizer.ai
x-api-key: text
Content-Type: multipart/form-data
Accept: */*
Content-Length: 20
{
"files": [
"binary"
]
}
{
"documents": [
{
"id": 1,
"name": "text"
}
],
"errors": [
{
"file": "text",
"error": "text"
}
]
}
Ví dụ Yêu cầu
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"
Phương thức trợ giúp để xác định loại nội dung
def get_content_type(filename) ext = File.extname(filename).downcase case ext when '.pdf' then 'application/pdf' when '.doc' then 'application/msword' when '.docx' then 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' when '.txt' then 'text/plain' when '.md' then 'text/markdown' when '.json' then 'application/json' else 'application/octet-stream' end end
Ví dụ sử dụng
result = upload_files('vs_abc123', ['/path/to/document1.pdf', '/path/to/document2.docx']) puts result
<div data-gb-custom-block data-tag="hint" data-style='info'>
Thay thế `YOUR_API_KEY` bằng khóa API Vector Store thực tế của bạn, `vs_abc123` bằng ID Vector Store của bạn, và cung cấp các đường dẫn đến các tệp cục bộ của bạn.
</div>
</div>
</div>
## Tham số Đường dẫn
| Tham số | Loại | Mô tả |
|-------------------|--------|-------------------------------------------------------------|
| vector-store-id | chuỗi | **Bắt buộc.** ID của kho vector để tải lên tệp. |
## Thân Request
Điểm cuối này chấp nhận một yêu cầu `multipart/form-data` với một hoặc nhiều tệp trong trường `files`.
## Định dạng Phản hồi
```json
{
"documents": [
{
"id": 1234,
"name": "document1.pdf",
"type": "application/pdf",
"size": 250000,
"status": "đang xử lý",
"created": "2023-06-15T10:15:00Z",
"vector_store": "vs_abc123"
},
{
"id": 1235,
"name": "document2.docx",
"type": "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
"size": 180000,
"status": "đang xử lý",
"created": "2023-06-15T10:15:00Z",
"vector_store": "vs_abc123"
}
],
"errors": []
}
Nếu một số tệp không tải lên được, chúng sẽ được liệt kê trong mảng errors
:
{
"documents": [
{
"id": 1234,
"name": "document1.pdf",
"type": "application/pdf",
"size": 250000,
"status": "đang xử lý",
"created": "2023-06-15T10:15:00Z",
"vector_store": "vs_abc123"
}
],
"errors": [
{
"file": "document2.docx",
"error": "Định dạng tệp không được hỗ trợ"
}
]
}
Xác thực
Điểm cuối này yêu cầu xác thực bằng cách sử dụng khóa API trong tiêu đề x-api-key
.
Các định dạng tệp được hỗ trợ
PDF (
.pdf
)Microsoft Word (
.doc
,.docx
)Microsoft Excel (
.xls
,.xlsx
)Microsoft PowerPoint (
.ppt
,.pptx
)Tệp văn bản (
.txt
)Markdown (
.md
)JSON (
.json
)HTML (
.html
,.htm
)
Giới Hạn Kích Thước Tệp
Giới hạn kích thước tệp cá nhân: 50MB
Giới hạn kích thước yêu cầu tổng: 100MB
Số lượng tệp tối đa mỗi yêu cầu: 20
Phản hồi Lỗi
400
Yêu Cầu Không Hợp Lệ - Không có tệp nào được cung cấp hoặc định dạng yêu cầu không hợp lệ
401
Không Được Ủy Quyền - Khóa API không hợp lệ hoặc bị thiếu
404
Không Tìm Thấy - Không tìm thấy Vector Store
413
Tải Lượng Quá Lớn - Các tệp vượt quá giới hạn kích thước
415
Loại Phương Tiện Không Hỗ Trợ - Định dạng tệp không được hỗ trợ
500
Lỗi Máy Chủ Nội Bộ
207
Đa Trạng Thái - Một số tệp đã được tải lên thành công, nhưng một số khác đã thất bại
Trạng Thái Xử Lý
Các tệp được chấp nhận ban đầu với trạng thái processing
. Bạn có thể kiểm tra trạng thái xử lý của các tài liệu bằng cách sử dụng điểm cuối Lấy Danh Sách Tài Liệu Trong Một Vector Store. Trạng thái cuối cùng sẽ là một trong các trạng thái sau:
done
: Tài liệu đã được xử lý thành côngerror
: Đã xảy ra lỗi trong quá trình xử lýprocessing
: Tài liệu vẫn đang được xử lý
Thời gian xử lý phụ thuộc vào kích thước và độ phức tạp của tệp. Thời gian xử lý điển hình là từ 30 giây đến 5 phút cho mỗi tài liệu.
Các hoạt động theo lô
Để tải lên nhiều tệp đến Vector Store của bạn một cách hiệu quả, Rememberizer hỗ trợ các hoạt động theo lô. Cách tiếp cận này giúp tối ưu hóa hiệu suất khi xử lý một số lượng lớn tài liệu.
Triển Khai Tải Lên Theo Lô
import os
import requests
import time
import concurrent.futures
from pathlib import Path
def batch_upload_to_vector_store(vector_store_id, folder_path, batch_size=5, file_types=None):
"""
Tải tất cả các tệp từ một thư mục lên một Vector Store theo lô
Args:
vector_store_id: ID của vector store
folder_path: Đường dẫn đến thư mục chứa các tệp để tải lên
batch_size: Số lượng tệp để tải lên trong mỗi lô
file_types: Danh sách tùy chọn các phần mở rộng tệp để lọc (ví dụ: ['.pdf', '.docx'])
Returns:
Danh sách kết quả tải lên
"""
api_key = "YOUR_API_KEY"
headers = {"x-api-key": api_key}
# Lấy danh sách các tệp trong thư mục
files = []
for entry in os.scandir(folder_path):
if entry.is_file():
file_path = Path(entry.path)
# Lọc theo phần mở rộng tệp nếu được chỉ định
if file_types is None or file_path.suffix.lower() in file_types:
files.append(file_path)
print(f"Đã tìm thấy {len(files)} tệp để tải lên")
results = []
# Xử lý các tệp theo lô
for i in range(0, len(files), batch_size):
batch = files[i:i+batch_size]
print(f"Đang xử lý lô {i//batch_size + 1}/{(len(files) + batch_size - 1)//batch_size}: {len(batch)} tệp")
# Tải lên lô
upload_files = []
for file_path in batch:
upload_files.append(('files', (file_path.name, open(file_path, 'rb'))))
try:
response = requests.post(
f"https://api.rememberizer.ai/api/v1/vector-stores/{vector_store_id}/documents/upload",
headers=headers,
files=upload_files
)
# Đóng tất cả các tay cầm tệp
for _, (_, file_obj) in upload_files:
file_obj.close()
if response.status_code in (200, 201, 207):
batch_result = response.json()
results.append(batch_result)
print(f"Đã tải lên thành công lô - {len(batch_result.get('documents', []))} tài liệu đã được xử lý")
# Kiểm tra lỗi
if batch_result.get('errors') and len(batch_result['errors']) > 0:
print(f"Đã gặp lỗi: {len(batch_result['errors'])}")
for error in batch_result['errors']:
print(f"- {error['file']}: {error['error']}")
else:
print(f"Tải lên lô thất bại với mã trạng thái {response.status_code}: {response.text}")
results.append({"error": f"Tải lên lô thất bại: {response.text}"})
except Exception as e:
print(f"Đã xảy ra ngoại lệ trong quá trình tải lên lô: {str(e)}")
results.append({"error": str(e)})
# Đóng bất kỳ tay cầm tệp nào còn lại trong trường hợp có ngoại lệ
for _, (_, file_obj) in upload_files:
try:
file_obj.close()
except:
pass
# Giới hạn tốc độ - tạm dừng giữa các lô
if i + batch_size < len(files):
print("Tạm dừng trước lô tiếp theo...")
time.sleep(2)
return results
# Ví dụ sử dụng
results = batch_upload_to_vector_store(
'vs_abc123',
'/path/to/documents/folder',
batch_size=5,
file_types=['.pdf', '.docx', '.txt']
)
Thực Hành Tải Lên Theo Lô Tốt Nhất
Để tối ưu hóa hiệu suất và độ tin cậy khi tải lên khối lượng lớn tệp:
Quản Lý Kích Thước Lô: Giữ kích thước lô từ 5-10 tệp để đạt hiệu suất tối ưu. Quá nhiều tệp trong một yêu cầu duy nhất làm tăng nguy cơ bị hết thời gian chờ.
Thực Hiện Giới Hạn Tốc Độ: Thêm độ trễ giữa các lô (khuyến nghị 2-3 giây) để tránh chạm vào giới hạn tốc độ API.
Thêm Logic Thử Lại Lỗi: Đối với các hệ thống sản xuất, triển khai logic thử lại cho các tải lên thất bại với phương pháp tăng dần.
Xác Thực Loại Tệp: Lọc trước các tệp để đảm bảo chúng là loại được hỗ trợ trước khi cố gắng tải lên.
Giám Sát Tiến Trình Lô: Đối với các ứng dụng hướng tới người dùng, cung cấp phản hồi tiến trình về các hoạt động lô.
Xử Lý Thành Công Một Phần: API có thể trả về mã trạng thái 207 cho thành công một phần. Luôn kiểm tra trạng thái từng tài liệu.
Dọn Dẹp Tài Nguyên: Đảm bảo tất cả các tay cầm tệp được đóng đúng cách, đặc biệt khi xảy ra lỗi.
Tối Ưu Hóa Song Song: Đối với các tải lên rất lớn (nghìn tệp), xem xét nhiều quy trình lô đồng thời nhắm đến các kho vector khác nhau, sau đó kết hợp kết quả sau nếu cần.
Triển Khai Kiểm Tra Tính Toàn Vẹn: Đối với dữ liệu quan trọng, xác minh tính toàn vẹn của tệp trước và sau khi tải lên bằng cách sử dụng kiểm tra tính toàn vẹn.
Ghi Nhận Kết Quả Toàn Diện: Duy trì nhật ký chi tiết của tất cả các hoạt động tải lên để khắc phục sự cố.
Bằng cách tuân theo những thực hành tốt nhất này, bạn có thể quản lý hiệu quả việc tiếp nhận tài liệu quy mô lớn vào các kho vector của mình.
Last updated