.env.example 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. # Servidor
  2. PORT=3001
  3. CORS_ORIGIN=http://localhost:5173
  4. # Autenticação (jwt ou none)
  5. AUTH_MODE=jwt
  6. JWT_SECRET=coloque-um-segredo-longo-e-aleatorio-aqui
  7. JWT_ISSUER=oraculo-api
  8. JWT_ACCESS_TTL_SECONDS=900
  9. JWT_REFRESH_TTL_SECONDS=2592000
  10. # TTL do refresh token quando rememberMe=false/ausente no login (default 1 dia).
  11. JWT_REFRESH_TTL_SHORT_SECONDS=86400
  12. # API Key alternativa (opcional, deixar vazio para usar só JWT)
  13. API_KEY=
  14. # Banco de dados MySQL
  15. DB_HOST=localhost
  16. DB_PORT=3306
  17. DB_USER=usuario
  18. DB_PASS=senha
  19. DB_SCHEMA=oraculo
  20. # SSL para conexão MySQL (recomendado em produção). Deixe ambos vazios para desativar
  21. # SSL (comportamento padrão em dev local). DB_SSL_REJECT_UNAUTHORIZED=true valida o
  22. # certificado do servidor; DB_SSL_CA aponta para um arquivo de certificado CA (ex.:
  23. # ./certs/rds-ca.pem) se o servidor usar um certificado não confiável publicamente.
  24. DB_SSL_REJECT_UNAUTHORIZED=true
  25. DB_SSL_CA=
  26. # Qdrant (vector DB)
  27. QDRANT_URL=http://localhost:6333
  28. QDRANT_COLLECTION=oraculo_docs
  29. QDRANT_API_KEY=
  30. # Ollama
  31. OLLAMA_URL=http://localhost:11434
  32. OLLAMA_EMBEDDINGS_MODEL=nomic-embed-text
  33. OLLAMA_CHAT_MODEL=llama3
  34. OLLAMA_VISION_MODEL=llava
  35. # Timeout (ms) para chamadas não-streaming ao Ollama (chat/embeddings). Sem isso, uma
  36. # chamada travada (modelo sobrecarregado, processo do Ollama pendurado) nunca resolve
  37. # nem rejeita — trava indefinidamente locks como o de avaliação em lote de atendimentos.
  38. OLLAMA_TIMEOUT_MS=180000
  39. # Prefixos opcionais prependados ao texto antes de gerar embedding (útil para modelos
  40. # assimétricos que recomendam prefixo diferente para query de busca e passagem indexada,
  41. # ex.: "search_query: "/"search_document: " no nomic-embed-text, "query: "/"passage: " em
  42. # modelos da família e5). Deixe vazio se o modelo não precisar. Validar empiricamente com
  43. # backend/scripts/evalRetrieval.mjs antes de habilitar em produção.
  44. OLLAMA_EMBED_QUERY_PREFIX=
  45. OLLAMA_EMBED_PASSAGE_PREFIX=
  46. # RAG (valores padrão se não definidos)
  47. RAG_TOP_K=8
  48. RAG_CHUNK_SIZE=900
  49. RAG_CHUNK_OVERLAP=150
  50. # Quantidade de mensagens recentes do histórico incluídas no prompt de rewrite/chat.
  51. RAG_HISTORY_LIMIT=6
  52. # Rate limiting por IP (0 = desativado). Recomendado manter >0 em produção — sem isso
  53. # o middleware de rate limit vira um no-op e o /api fica sem proteção contra abuso.
  54. RATE_LIMIT_PER_MINUTE=60
  55. # Ajuste fino das respostas do LLM
  56. LLM_TEMPERATURE=0.2
  57. LLM_TOP_P=0.9
  58. LLM_NUM_PREDICT=2048
  59. LLM_REPEAT_PENALTY=1.1
  60. # RAG avançado
  61. RAG_QUERY_REWRITE=false
  62. RAG_MIN_SCORE=0.40
  63. RAG_RERANK=false
  64. RAG_RERANK_TOP_N=8
  65. # HyDE (Hypothetical Document Embeddings): gera um trecho hipotético de resposta via LLM
  66. # e usa ele (em vez da query crua) para o embedding de busca, o que tende a elevar o score
  67. # de similaridade porque vira matching passagem-passagem. Custa uma chamada LLM extra por
  68. # pergunta. Validar com backend/scripts/evalRetrieval.mjs antes de habilitar em produção.
  69. RAG_HYDE=false
  70. # Chatbot ifbot (sincronização de atendimentos)
  71. IFBOT_BASE_URL=https://star.ifbot.com.br/api
  72. IFBOT_TOKEN=
  73. # IFBOT_AUTH_HEADER=Authorization
  74. ATENDIMENTOS_SYNC_INTERVAL_MINUTES=30