Subir archivos a un Almacén de Vectores
Cargar contenido de archivos en Vector Store con operaciones por lotes
Ejemplos de Solicitudes
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();
// Agregar múltiples archivos a los datos del formulario
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'
// Nota: No establezca el encabezado Content-Type, se establecerá automáticamente con el límite correcto
},
body: formData
});
const data = await response.json();
console.log(data);
};
// Ejemplo de uso con el elemento de entrada de archivo
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")
Crear un nuevo objeto HTTP
http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true
Crear una solicitud de formulario multipart
request = Net::HTTP::Post.new(uri) request['x-api-key'] = 'YOUR_API_KEY'
Crear un límite multipart
boundary = "RubyFormBoundary#{rand(1000000)}" request['Content-Type'] = "multipart/form-data; boundary=#{boundary}"
Construir el cuerpo de la solicitud
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
Enviar la solicitud
response = http.request(request)
Analizar y devolver la respuesta
JSON.parse(response.body) end
{% hint style="info" %} Reemplace YOUR_API_KEY con su clave API real de Vector Store, vs_abc123 con su ID de Vector Store, y proporcione las rutas a sus archivos locales. {% endhint %} {% endtab %} {% endtabs %}
Parámetros de Ruta
vector-store-id
string
Requerido. El ID de la tienda de vectores a la que subir archivos.
Cuerpo de la Solicitud
Este endpoint acepta una solicitud multipart/form-data con uno o más archivos en el campo files.
Formato de Respuesta
Si algunos archivos no se pueden cargar, se enumerarán en el array errors:
Autenticación
Este endpoint requiere autenticación utilizando una clave API en el encabezado x-api-key.
Formatos de Archivo Soportados
PDF (
.pdf)Microsoft Word (
.doc,.docx)Microsoft Excel (
.xls,.xlsx)Microsoft PowerPoint (
.ppt,.pptx)Archivos de texto (
.txt)Markdown (
.md)JSON (
.json)HTML (
.html,.htm)
Límites de Tamaño de Archivo
Límite de tamaño de archivo individual: 50MB
Límite de tamaño total de solicitud: 100MB
Número máximo de archivos por solicitud: 20
Respuestas de Error
400
Solicitud Incorrecta - No se proporcionaron archivos o formato de solicitud inválido
401
No Autorizado - Clave API inválida o faltante
404
No Encontrado - Almacén de Vectores no encontrado
413
Carga Útil Demasiado Grande - Los archivos exceden el límite de tamaño
415
Tipo de Medio No Compatible - Formato de archivo no soportado
500
Error Interno del Servidor
207
Multi-Estado - Algunos archivos se subieron con éxito, pero otros fallaron
Estado del Procesamiento
Los archivos son aceptados inicialmente con un estado de processing. Puedes verificar el estado de procesamiento de los documentos utilizando el endpoint Get a List of Documents in a Vector Store. El estado final será uno de:
done: El documento fue procesado con éxitoerror: Ocurrió un error durante el procesamientoprocessing: El documento aún se está procesando
El tiempo de procesamiento depende del tamaño y la complejidad del archivo. El tiempo de procesamiento típico es de entre 30 segundos a 5 minutos por documento.
Operaciones por Lotes
Para cargar eficientemente múltiples archivos en su Almacén de Vectores, Rememberizer admite operaciones por lotes. Este enfoque ayuda a optimizar el rendimiento al tratar con grandes cantidades de documentos.
Implementación de Carga por Lotes
{% tabs %} {% tab title="Python" %}
{% endtab %}
{% tab title="JavaScript" %}
{% endtab %}
{% tab title="Ruby" %}
Mejores Prácticas para Cargas por Lotes
Para optimizar el rendimiento y la fiabilidad al cargar grandes volúmenes de archivos:
Gestionar el Tamaño del Lote: Mantenga los tamaños de lote entre 5-10 archivos para un rendimiento óptimo. Demasiados archivos en una sola solicitud aumentan el riesgo de tiempos de espera.
Implementar Limitación de Tasa: Agregue retrasos entre lotes (se recomiendan 2-3 segundos) para evitar alcanzar los límites de tasa de la API.
Agregar Lógica de Reintento de Errores: Para sistemas de producción, implemente lógica de reintento para cargas fallidas con retroceso exponencial.
Validar Tipos de Archivos: Pre-filtre los archivos para asegurarse de que sean tipos compatibles antes de intentar la carga.
Monitorear el Progreso del Lote: Para aplicaciones orientadas al usuario, proporcione retroalimentación sobre el progreso de las operaciones por lotes.
Manejar Éxitos Parciales: La API puede devolver un código de estado 207 para éxito parcial. Siempre verifique los estados de documentos individuales.
Limpiar Recursos: Asegúrese de que todos los manejadores de archivos estén cerrados correctamente, especialmente cuando ocurren errores.
Paralelizar con Sabiduría: Para cargas muy grandes (miles de archivos), considere múltiples procesos de lotes concurrentes que apunten a diferentes almacenes de vectores, luego combine los resultados más tarde si es necesario.
Implementar Sumas de Comprobación: Para datos críticos, verifique la integridad del archivo antes y después de la carga con sumas de comprobación.
Registrar Resultados Completos: Mantenga registros detallados de todas las operaciones de carga para la solución de problemas.
Siguiendo estas mejores prácticas, puede gestionar de manera eficiente la ingestión de documentos a gran escala en sus almacenes de vectores.
Last updated