벡터 저장소에 파일 업로드
파일 내용을 배치 작업으로 벡터 스토어에 업로드
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
멀티파트 폼 요청 생성
request = Net::HTTP::Post.new(uri) request['x-api-key'] = 'YOUR_API_KEY'
멀티파트 경계 생성
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입니다.
요청 본문
이 엔드포인트는 files 필드에 하나 이상의 파일이 포함된 multipart/form-data 요청을 수락합니다.
응답 형식
파일 업로드에 실패한 경우, 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분 사이입니다.
배치 작업
여러 파일을 효율적으로 Vector Store에 업로드하기 위해 Rememberizer는 배치 작업을 지원합니다. 이 접근 방식은 많은 수의 문서를 처리할 때 성능을 최적화하는 데 도움이 됩니다.
배치 업로드 구현
{% tabs %} {% tab title="Python" %}
{% endtab %}
{% tab title="JavaScript" %}
{% endtab %}
{% tab title="Ruby" %}
배치 업로드 모범 사례
대량의 파일을 업로드할 때 성능과 신뢰성을 최적화하려면:
배치 크기 관리: 최적의 성능을 위해 배치 크기를 5-10 파일 사이로 유지하세요. 단일 요청에 너무 많은 파일이 포함되면 타임아웃 위험이 증가합니다.
요율 제한 구현: API 요율 제한에 도달하지 않도록 배치 간에 지연(2-3초 권장)을 추가하세요.
오류 재시도 로직 추가: 프로덕션 시스템의 경우, 지수 백오프를 사용하여 실패한 업로드에 대한 재시도 로직을 구현하세요.
파일 유형 검증: 업로드를 시도하기 전에 지원되는 유형인지 확인하기 위해 파일을 미리 필터링하세요.
배치 진행 상황 모니터링: 사용자 대면 애플리케이션의 경우, 배치 작업에 대한 진행 피드백을 제공하세요.
부분 성공 처리: API는 부분 성공에 대해 207 상태 코드를 반환할 수 있습니다. 항상 개별 문서 상태를 확인하세요.
자원 정리: 특히 오류가 발생할 때 모든 파일 핸들이 제대로 닫혔는지 확인하세요.
신중하게 병렬화: 매우 큰 업로드(수천 개의 파일)의 경우, 서로 다른 벡터 스토어를 대상으로 하는 여러 동시 배치 프로세스를 고려한 다음 필요에 따라 결과를 나중에 결합하세요.
체크섬 구현: 중요한 데이터의 경우, 체크섬을 사용하여 업로드 전후에 파일 무결성을 확인하세요.
포괄적인 결과 기록: 문제 해결을 위해 모든 업로드 작업에 대한 자세한 로그를 유지하세요.
이러한 모범 사례를 따르면 벡터 스토어에 대규모 문서 수집을 효율적으로 관리할 수 있습니다.
Last updated