curl --request POST \
--url https://api.example.com/api/upload \
--header 'Content-Type: application/json' \
--data '{}'{
"success": true,
"document": {
"document.id": 123,
"document.filename": "<string>",
"document.chunks": 123
},
"error": "<string>"
}Upload and index a document for RAG-powered WhatsApp responses
curl --request POST \
--url https://api.example.com/api/upload \
--header 'Content-Type: application/json' \
--data '{}'{
"success": true,
"document": {
"document.id": 123,
"document.filename": "<string>",
"document.chunks": 123
},
"error": "<string>"
}uploads.max_size config.multipart/form-data
File Validation:
allowedTypes configuration (api/upload.php:24)maxSize limit (api/upload.php:25)$chunksIndexed = $rag->indexDocument(
$document['id'],
$document['text'],
Config::get('rag.chunk_size'),
Config::get('rag.chunk_overlap')
);
TextProcessor::extractText() (DocumentService.php:52):
rag.chunk_size (typically 500-1000 tokens)rag.chunk_overlap (typically 50-200 tokens)$openai = new OpenAIService(
$oaiCreds['api_key'],
$oaiCreds['model'],
$oaiCreds['embedding_model'],
$logger
);
vectors table with:
curl -X POST https://your-domain.com/api/upload \
-F "document=@./company-handbook.pdf"
{
"success": true,
"document": {
"id": 42,
"filename": "company-handbook.pdf",
"chunks": 127
}
}
{
"success": false,
"error": "Error al subir documento"
}
{
"success": false,
"error": "Documento duplicado: 'company-handbook.pdf' ya fue subido previamente"
}
{
"success": false,
"error": "Error al subir documento"
}
try {
$encryption = new EncryptionService();
$credentialService = new CredentialService($db, $encryption);
if ($credentialService->hasOpenAICredentials()) {
$oaiCreds = $credentialService->getOpenAICredentials();
$openai = new OpenAIService(
$oaiCreds['api_key'],
$oaiCreds['model'],
$oaiCreds['embedding_model'],
$logger
);
}
} catch (\Exception $credEx) {
// Fallback to config file credentials
$openai = new OpenAIService(
Config::get('openai.api_key'),
Config::get('openai.model'),
Config::get('openai.embedding_model'),
$logger
);
}
cosine - Cosine similarity (default)euclidean - Euclidean distancedot_product - Dot product similarity