[ 'max_file_size' => (int) env('KB_MAX_FILE_SIZE', 20480), // KB (20MB) 'allowed_mimes' => ['pdf'], 'storage_disk' => env('KB_STORAGE_DISK', 'local'), 'storage_path' => 'documents', // dalam storage/app/documents/ ], /* |-------------------------------------------------------------------------- | Chunking Configuration |-------------------------------------------------------------------------- */ 'chunking' => [ 'max_words' => (int) env('KB_CHUNK_MAX_WORDS', 500), // Max patah perkataan per chunk 'overlap_words' => (int) env('KB_CHUNK_OVERLAP_WORDS', 75), // Overlap antara chunk berturutan 'min_words' => (int) env('KB_CHUNK_MIN_WORDS', 30), // Chunk dengan < min_words akan digabung atau dibuang ], /* |-------------------------------------------------------------------------- | RAG Configuration |-------------------------------------------------------------------------- */ 'rag' => [ 'max_context_chunks' => (int) env('KB_RAG_MAX_CHUNKS', 5), // Max chunk yang dimasukkan dalam context untuk model 'max_context_words' => (int) env('KB_RAG_MAX_CONTEXT_WORDS', 2000), // Jika terlalu banyak words, potong context ], /* |-------------------------------------------------------------------------- | Rate Limiting |-------------------------------------------------------------------------- */ 'rate_limit' => [ 'chatbot_per_minute' => (int) env('KB_CHAT_RATE_LIMIT', 20), // Request chatbot per minit per IP ], /* |-------------------------------------------------------------------------- | Queue Configuration |-------------------------------------------------------------------------- */ 'queue' => [ 'ingestion' => env('KB_QUEUE_INGESTION', 'default'), 'embedding' => env('KB_QUEUE_EMBEDDING', 'default'), 'chat_log' => env('KB_QUEUE_CHAT_LOG', 'default'), ], ];