diff --git a/404.html b/404.html index 63d6acdb..4c0b14a7 100644 --- a/404.html +++ b/404.html @@ -4,7 +4,7 @@
.env file",id:"set-environment-variables",level:2},{value:"Model provider settings",id:"model-provider-settings",level:2},{value:"Document processing settings",id:"document-processing-settings",level:2},{value:"Langflow settings",id:"langflow-settings",level:2},{value:"OAuth provider settings",id:"oauth-provider-settings",level:2},{value:"OpenSearch settings",id:"opensearch-settings",level:2},{value:"System settings",id:"system-settings",level:2}];function a(e){const n={a:"a",admonition:"admonition",code:"code",em:"em",h2:"h2",li:"li",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,i.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(n.p,{children:["OpenRAG's ",(0,t.jsx)(n.code,{children:".env"})," file is the primary configuration file for OpenRAG.\nEnvironment variables in ",(0,t.jsx)(n.code,{children:".env"})," always take precedence over other sources."]}),"\n",(0,t.jsxs)(n.p,{children:["For deployments managed with the Terminal User Interface (TUI), this file is located at ",(0,t.jsx)(n.code,{children:"~/.openrag/tui"}),", and it can be created automatically during ",(0,t.jsx)(n.a,{href:"/install-options",children:"installation"}),"."]}),"\n",(0,t.jsxs)(n.p,{children:["For ",(0,t.jsx)(n.a,{href:"/docker",children:"self-managed deployments"}),", this file can be located at the root of your OpenRAG project directory or referenced from another location."]}),"\n",(0,t.jsxs)(n.p,{children:["For an example, see ",(0,t.jsxs)(n.a,{href:"https://github.com/langflow-ai/openrag/blob/main/.env.example",children:[(0,t.jsx)(n.code,{children:".env.example"})," in the OpenRAG repository"]}),"."]}),"\n",(0,t.jsx)(n.admonition,{type:"tip",children:(0,t.jsxs)(n.p,{children:["OpenRAG's Docker Compose files are populated automatically using values from the ",(0,t.jsx)(n.code,{children:".env"})," file, so you don't need to edit the Docker Compose files manually."]})}),"\n",(0,t.jsxs)(n.p,{children:["If a variable isn't set, OpenRAG uses default or fallback values where available.\nNot all variables have default values, and errors can occur if required variables aren't set.\nDefault values can be found in the reference tables on this page and in ",(0,t.jsx)(n.a,{href:"https://github.com/langflow-ai/openrag/blob/main/src/config/config_manager.py",children:(0,t.jsx)(n.code,{children:"config_manager.py"})}),", ",(0,t.jsx)(n.a,{href:"https://github.com/langflow-ai/openrag/blob/main/src/config/settings.py",children:(0,t.jsx)(n.code,{children:"settings.py"})}),", and ",(0,t.jsx)(n.a,{href:"https://github.com/langflow-ai/openrag/blob/main/src/utils/logging_config.py",children:(0,t.jsx)(n.code,{children:"logging_config.py"})}),"."]}),"\n",(0,t.jsxs)(n.p,{children:["You can ",(0,t.jsx)(n.a,{href:"/agents#modify-a-flow-at-runtime",children:"temporarily set Langflow variables at runtime"}),".\nHowever, these temporary overrides don't overlap with most OpenRAG environment variables.\nThe only exceptions are flow-level Langflow settings, such as the language model used in a flow."]}),"\n",(0,t.jsxs)(n.h2,{id:"set-environment-variables",children:["Edit the ",(0,t.jsx)(n.code,{children:".env"})," file"]}),"\n",(0,t.jsxs)(n.p,{children:["During ",(0,t.jsx)(n.a,{href:"/install-options",children:"installation"}),", an initial ",(0,t.jsx)(n.code,{children:".env"})," file is created automatically or manually.\nYou can edit this file to change OpenRAG configuration settings after installation."]}),"\n",(0,t.jsxs)(n.p,{children:["Each OpenRAG environment variable is either mutable or immutable.\nThis determines the actions you must take to apply changes after editing the ",(0,t.jsx)(n.code,{children:".env"})," file:"]}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Mutable environment variables"}),": You can apply changes to mutable environment variables by ",(0,t.jsx)(n.a,{href:"/manage-services",children:"stopping and restarting the OpenRAG services"})," after editing the ",(0,t.jsx)(n.code,{children:".env"})," file."]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Immutable environment variables"}),": You must ",(0,t.jsx)(n.a,{href:"/reinstall",children:"redeploy OpenRAG"})," with your modified ",(0,t.jsx)(n.code,{children:".env"})," file if you change immutable environment variables."]}),"\n"]}),"\n"]}),"\n",(0,t.jsx)(n.h2,{id:"model-provider-settings",children:"Model provider settings"}),"\n",(0,t.jsx)(n.p,{children:"Configure which models and providers OpenRAG uses to generate text and embeddings.\nYou only need to provide credentials for the providers you are using in OpenRAG."}),"\n",(0,t.jsxs)(n.p,{children:["These variables are initially set during the ",(0,t.jsx)(n.a,{href:"/install#application-onboarding",children:"application onboarding process"}),".\nSome of these variables are immutable and can only be changed by redeploying OpenRAG, as explained in ",(0,t.jsx)(n.a,{href:"#set-environment-variables",children:"Set environment variables"}),"."]}),"\n",(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Variable"}),(0,t.jsx)(n.th,{children:"Default"}),(0,t.jsx)(n.th,{children:"Description"})]})}),(0,t.jsxs)(n.tbody,{children:[(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"EMBEDDING_MODEL"})}),(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"text-embedding-3-small"})}),(0,t.jsx)(n.td,{children:"Embedding model for generating vector embeddings for documents in the knowledge base and similarity search queries. Can be changed after the application onboarding process. Accepts one or more models."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"LLM_MODEL"})}),(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"gpt-4o-mini"})}),(0,t.jsxs)(n.td,{children:["Language model for language processing and text generation in the ",(0,t.jsx)(n.strong,{children:"Chat"})," feature."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"MODEL_PROVIDER"})}),(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"openai"})}),(0,t.jsxs)(n.td,{children:["Model provider, as one of ",(0,t.jsx)(n.code,{children:"openai"}),", ",(0,t.jsx)(n.code,{children:"watsonx"}),", ",(0,t.jsx)(n.code,{children:"ollama"}),", or ",(0,t.jsx)(n.code,{children:"anthropic"}),"."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"ANTHROPIC_API_KEY"})}),(0,t.jsx)(n.td,{children:"Not set"}),(0,t.jsx)(n.td,{children:"API key for the Anthropic language model provider."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"OPENAI_API_KEY"})}),(0,t.jsx)(n.td,{children:"Not set"}),(0,t.jsx)(n.td,{children:"API key for the OpenAI model provider, which is also the default model provider."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"OLLAMA_ENDPOINT"})}),(0,t.jsx)(n.td,{children:"Not set"}),(0,t.jsx)(n.td,{children:"Custom provider endpoint for the Ollama model provider."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"WATSONX_API_KEY"})}),(0,t.jsx)(n.td,{children:"Not set"}),(0,t.jsx)(n.td,{children:"API key for the IBM watsonx.ai model provider."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"WATSONX_ENDPOINT"})}),(0,t.jsx)(n.td,{children:"Not set"}),(0,t.jsx)(n.td,{children:"Custom provider endpoint for the IBM watsonx.ai model provider."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"WATSONX_PROJECT_ID"})}),(0,t.jsx)(n.td,{children:"Not set"}),(0,t.jsx)(n.td,{children:"Project ID for the IBM watsonx.ai model provider."})]})]})]}),"\n",(0,t.jsx)(n.h2,{id:"document-processing-settings",children:"Document processing settings"}),"\n",(0,t.jsxs)(n.p,{children:["Control how OpenRAG ",(0,t.jsx)(n.a,{href:"/ingestion",children:"processes and ingests documents"})," into your knowledge base."]}),"\n",(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Variable"}),(0,t.jsx)(n.th,{children:"Default"}),(0,t.jsx)(n.th,{children:"Description"})]})}),(0,t.jsxs)(n.tbody,{children:[(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"CHUNK_OVERLAP"})}),(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"200"})}),(0,t.jsx)(n.td,{children:"Overlap between chunks."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"CHUNK_SIZE"})}),(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"1000"})}),(0,t.jsx)(n.td,{children:"Text chunk size for document processing."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"DISABLE_INGEST_WITH_LANGFLOW"})}),(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"false"})}),(0,t.jsx)(n.td,{children:"Disable Langflow ingestion pipeline."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"DOCLING_OCR_ENGINE"})}),(0,t.jsx)(n.td,{children:"Set by OS"}),(0,t.jsxs)(n.td,{children:["OCR engine for document processing. For macOS, ",(0,t.jsx)(n.code,{children:"ocrmac"}),". For any other OS, ",(0,t.jsx)(n.code,{children:"easyocr"}),"."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"OCR_ENABLED"})}),(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"false"})}),(0,t.jsx)(n.td,{children:"Enable OCR for image processing."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"OPENRAG_DOCUMENTS_PATHS"})}),(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"~/.openrag/documents"})}),(0,t.jsx)(n.td,{children:"Document paths for ingestion."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"PICTURE_DESCRIPTIONS_ENABLED"})}),(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"false"})}),(0,t.jsx)(n.td,{children:"Enable picture descriptions."})]})]})]}),"\n",(0,t.jsx)(n.h2,{id:"langflow-settings",children:"Langflow settings"}),"\n",(0,t.jsx)(n.p,{children:"Configure the OpenRAG Langflow server's authentication, contact point, and built-in flow definitions."}),"\n",(0,t.jsxs)(n.admonition,{type:"info",children:[(0,t.jsxs)(n.p,{children:["The ",(0,t.jsx)(n.code,{children:"LANGFLOW_SUPERUSER_PASSWORD"})," is set in your ",(0,t.jsx)(n.code,{children:".env"})," file, and this value determines the default values for several other Langflow authentication variables."]}),(0,t.jsxs)(n.p,{children:["If the ",(0,t.jsx)(n.code,{children:"LANGFLOW_SUPERUSER_PASSWORD"})," variable isn't set, then the Langflow server starts ",(0,t.jsx)(n.em,{children:"without"})," authentication enabled."]}),(0,t.jsxs)(n.p,{children:["For better security, it is recommended to set ",(0,t.jsx)(n.code,{children:"LANGFLOW_SUPERUSER_PASSWORD"})," so the ",(0,t.jsx)(n.a,{href:"https://docs.langflow.org/api-keys-and-authentication#start-a-langflow-server-with-authentication-enabled",children:"Langflow server starts with authentication enabled"}),"."]})]}),"\n",(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Variable"}),(0,t.jsx)(n.th,{children:"Default"}),(0,t.jsx)(n.th,{children:"Description"})]})}),(0,t.jsxs)(n.tbody,{children:[(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"LANGFLOW_AUTO_LOGIN"})}),(0,t.jsxs)(n.td,{children:["Determined by ",(0,t.jsx)(n.code,{children:"LANGFLOW_SUPERUSER_PASSWORD"})]}),(0,t.jsxs)(n.td,{children:["Whether to enable ",(0,t.jsx)(n.a,{href:"https://docs.langflow.org/api-keys-and-authentication#langflow-auto-login",children:"auto-login mode"})," for the Langflow visual editor and CLI. If ",(0,t.jsx)(n.code,{children:"LANGFLOW_SUPERUSER_PASSWORD"})," isn't set, then ",(0,t.jsx)(n.code,{children:"LANGFLOW_AUTO_LOGIN"})," is ",(0,t.jsx)(n.code,{children:"True"})," and auto-login mode is enabled. If ",(0,t.jsx)(n.code,{children:"LANGFLOW_SUPERUSER_PASSWORD"})," is set, then ",(0,t.jsx)(n.code,{children:"LANGFLOW_AUTO_LOGIN"})," is ",(0,t.jsx)(n.code,{children:"False"})," and auto-login mode is disabled. Langflow API calls always require authentication with a Langflow API key regardless of the auto-login setting."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"LANGFLOW_ENABLE_SUPERUSER_CLI"})}),(0,t.jsxs)(n.td,{children:["Determined by ",(0,t.jsx)(n.code,{children:"LANGFLOW_SUPERUSER_PASSWORD"})]}),(0,t.jsxs)(n.td,{children:["Whether to enable the ",(0,t.jsxs)(n.a,{href:"https://docs.langflow.org/api-keys-and-authentication#langflow-enable-superuser-cli",children:["Langflow CLI ",(0,t.jsx)(n.code,{children:"langflow superuser"})," command"]}),". If ",(0,t.jsx)(n.code,{children:"LANGFLOW_SUPERUSER_PASSWORD"})," isn't set, then ",(0,t.jsx)(n.code,{children:"LANGFLOW_ENABLE_SUPERUSER_CLI"})," is ",(0,t.jsx)(n.code,{children:"True"})," and superuser accounts can be created with the Langflow CLI. If ",(0,t.jsx)(n.code,{children:"LANGFLOW_SUPERUSER_PASSWORD"})," is set, then ",(0,t.jsx)(n.code,{children:"LANGFLOW_ENABLE_SUPERUSER_CLI"})," is ",(0,t.jsx)(n.code,{children:"False"})," and the ",(0,t.jsx)(n.code,{children:"langflow superuser"})," command is disabled."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"LANGFLOW_NEW_USER_IS_ACTIVE"})}),(0,t.jsxs)(n.td,{children:["Determined by ",(0,t.jsx)(n.code,{children:"LANGFLOW_SUPERUSER_PASSWORD"})]}),(0,t.jsxs)(n.td,{children:["Whether new ",(0,t.jsx)(n.a,{href:"https://docs.langflow.org/api-keys-and-authentication#langflow-new-user-is-active",children:"Langflow user accounts are active by default"}),". If ",(0,t.jsx)(n.code,{children:"LANGFLOW_SUPERUSER_PASSWORD"})," isn't set, then ",(0,t.jsx)(n.code,{children:"LANGFLOW_NEW_USER_IS_ACTIVE"})," is ",(0,t.jsx)(n.code,{children:"True"})," and new user accounts are active by default. If ",(0,t.jsx)(n.code,{children:"LANGFLOW_SUPERUSER_PASSWORD"})," is set, then ",(0,t.jsx)(n.code,{children:"LANGFLOW_NEW_USER_IS_ACTIVE"})," is ",(0,t.jsx)(n.code,{children:"False"})," and new user accounts are inactive by default."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"LANGFLOW_PUBLIC_URL"})}),(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"http://localhost:7860"})}),(0,t.jsx)(n.td,{children:"Public URL for the Langflow instance. Forms the base URL for Langflow API calls and other interfaces with your OpenRAG Langflow instance."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"LANGFLOW_KEY"})}),(0,t.jsx)(n.td,{children:"Automatically generated"}),(0,t.jsx)(n.td,{children:"A Langflow API key to run flows with Langflow API calls. Because Langflow API keys are server-specific, allow OpenRAG to generate this key initially. You can create additional Langflow API keys after deploying OpenRAG."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"LANGFLOW_SECRET_KEY"})}),(0,t.jsx)(n.td,{children:"Automatically generated"}),(0,t.jsxs)(n.td,{children:["Secret encryption key for Langflow internal operations. It is recommended to ",(0,t.jsx)(n.a,{href:"https://docs.langflow.org/api-keys-and-authentication#langflow-secret-key",children:"generate your own Langflow secret key"})," for this variable. If this variable isn't set, then Langflow generates a secret key automatically."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"LANGFLOW_SUPERUSER"})}),(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"admin"})}),(0,t.jsx)(n.td,{children:"Username for the Langflow administrator user."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"LANGFLOW_SUPERUSER_PASSWORD"})}),(0,t.jsx)(n.td,{children:"Not set"}),(0,t.jsxs)(n.td,{children:["Langflow administrator password. If this variable isn't set, then the Langflow server starts ",(0,t.jsx)(n.em,{children:"without"})," authentication enabled. It is recommended to set ",(0,t.jsx)(n.code,{children:"LANGFLOW_SUPERUSER_PASSWORD"})," so the ",(0,t.jsx)(n.a,{href:"https://docs.langflow.org/api-keys-and-authentication#start-a-langflow-server-with-authentication-enabled",children:"Langflow server starts with authentication enabled"}),"."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"LANGFLOW_URL"})}),(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"http://localhost:7860"})}),(0,t.jsx)(n.td,{children:"URL for the Langflow instance."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsxs)(n.td,{children:[(0,t.jsx)(n.code,{children:"LANGFLOW_CHAT_FLOW_ID"}),", ",(0,t.jsx)(n.code,{children:"LANGFLOW_INGEST_FLOW_ID"}),", ",(0,t.jsx)(n.code,{children:"NUDGES_FLOW_ID"})]}),(0,t.jsx)(n.td,{children:"Built-in flow IDs"}),(0,t.jsxs)(n.td,{children:["These variables are set automatically to the IDs of the chat, ingestion, and nudges ",(0,t.jsx)(n.a,{href:"/agents",children:"flows"}),". The default values are found in ",(0,t.jsx)(n.a,{href:"https://github.com/langflow-ai/openrag/blob/main/.env.example",children:(0,t.jsx)(n.code,{children:".env.example"})}),". Only change these values if you want to replace a built-in flow with your own custom flow. The flow JSON must be present in your version of the OpenRAG codebase. For example, if you ",(0,t.jsx)(n.a,{href:"/docker",children:"deploy self-managed services"}),", you can add the flow JSON to your local clone of the OpenRAG repository before deploying OpenRAG."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"SYSTEM_PROMPT"})}),(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"You are a helpful AI assistant with access to a knowledge base. Answer questions based on the provided context."})}),(0,t.jsxs)(n.td,{children:["System prompt instructions for the agent driving the ",(0,t.jsx)(n.strong,{children:"Chat"})," flow."]})]})]})]}),"\n",(0,t.jsx)(n.h2,{id:"oauth-provider-settings",children:"OAuth provider settings"}),"\n",(0,t.jsxs)(n.p,{children:["Configure ",(0,t.jsx)(n.a,{href:"/ingestion#oauth-ingestion",children:"OAuth providers"})," and external service integrations."]}),"\n",(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Variable"}),(0,t.jsx)(n.th,{children:"Default"}),(0,t.jsx)(n.th,{children:"Description"})]})}),(0,t.jsxs)(n.tbody,{children:[(0,t.jsxs)(n.tr,{children:[(0,t.jsxs)(n.td,{children:[(0,t.jsx)(n.code,{children:"AWS_ACCESS_KEY_ID"}),(0,t.jsx)("br",{}),(0,t.jsx)(n.code,{children:"AWS_SECRET_ACCESS_KEY"})]}),(0,t.jsx)(n.td,{children:"Not set"}),(0,t.jsxs)(n.td,{children:["Enable access to AWS S3 with an ",(0,t.jsx)(n.a,{href:"https://docs.aws.amazon.com/singlesignon/latest/userguide/manage-your-applications.html",children:"AWS OAuth app"})," integration."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsxs)(n.td,{children:[(0,t.jsx)(n.code,{children:"GOOGLE_OAUTH_CLIENT_ID"}),(0,t.jsx)("br",{}),(0,t.jsx)(n.code,{children:"GOOGLE_OAUTH_CLIENT_SECRET"})]}),(0,t.jsx)(n.td,{children:"Not set"}),(0,t.jsxs)(n.td,{children:["Enable the ",(0,t.jsx)(n.a,{href:"https://developers.google.com/identity/protocols/oauth2",children:"Google OAuth client"})," integration. You can generate these values in the ",(0,t.jsx)(n.a,{href:"https://console.cloud.google.com/apis/credentials",children:"Google Cloud Console"}),"."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsxs)(n.td,{children:[(0,t.jsx)(n.code,{children:"MICROSOFT_GRAPH_OAUTH_CLIENT_ID"}),(0,t.jsx)("br",{}),(0,t.jsx)(n.code,{children:"MICROSOFT_GRAPH_OAUTH_CLIENT_SECRET"})]}),(0,t.jsx)(n.td,{children:"Not set"}),(0,t.jsxs)(n.td,{children:["Enable the ",(0,t.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/onedrive/developer/rest-api/getting-started/graph-oauth",children:"Microsoft Graph OAuth client"})," integration by providing ",(0,t.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/onedrive/developer/rest-api/getting-started/app-registration?view=odsp-graph-online",children:"Azure application registration credentials for SharePoint and OneDrive"}),"."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"WEBHOOK_BASE_URL"})}),(0,t.jsx)(n.td,{children:"Not set"}),(0,t.jsx)(n.td,{children:"Base URL for OAuth connector webhook endpoints. If this variable isn't set, a default base URL is used."})]})]})]}),"\n",(0,t.jsx)(n.h2,{id:"opensearch-settings",children:"OpenSearch settings"}),"\n",(0,t.jsx)(n.p,{children:"Configure OpenSearch database authentication."}),"\n",(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Variable"}),(0,t.jsx)(n.th,{children:"Default"}),(0,t.jsx)(n.th,{children:"Description"})]})}),(0,t.jsxs)(n.tbody,{children:[(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"OPENSEARCH_HOST"})}),(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"localhost"})}),(0,t.jsx)(n.td,{children:"OpenSearch instance host."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"OPENSEARCH_PORT"})}),(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"9200"})}),(0,t.jsx)(n.td,{children:"OpenSearch instance port."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"OPENSEARCH_USERNAME"})}),(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"admin"})}),(0,t.jsx)(n.td,{children:"OpenSearch administrator username."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"OPENSEARCH_PASSWORD"})}),(0,t.jsx)(n.td,{children:"Must be set at start up"}),(0,t.jsxs)(n.td,{children:["Required. OpenSearch administrator password. Must adhere to the ",(0,t.jsx)(n.a,{href:"https://docs.opensearch.org/latest/security/configuration/demo-configuration/#setting-up-a-custom-admin-password",children:"OpenSearch password complexity requirements"}),". You must set this directly in the ",(0,t.jsx)(n.code,{children:".env"})," or in the TUI's ",(0,t.jsx)(n.a,{href:"/install#setup",children:(0,t.jsx)(n.strong,{children:"Basic/Advanced Setup"})}),"."]})]})]})]}),"\n",(0,t.jsx)(n.h2,{id:"system-settings",children:"System settings"}),"\n",(0,t.jsx)(n.p,{children:"Configure general system components, session management, and logging."}),"\n",(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Variable"}),(0,t.jsx)(n.th,{children:"Default"}),(0,t.jsx)(n.th,{children:"Description"})]})}),(0,t.jsxs)(n.tbody,{children:[(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"LANGFLOW_KEY_RETRIES"})}),(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"15"})}),(0,t.jsx)(n.td,{children:"Number of retries for Langflow key generation."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"LANGFLOW_KEY_RETRY_DELAY"})}),(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"2.0"})}),(0,t.jsx)(n.td,{children:"Delay between retries in seconds."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"LANGFLOW_VERSION"})}),(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"OPENRAG_VERSION"})}),(0,t.jsxs)(n.td,{children:["Langflow Docker image version. By default, OpenRAG uses the ",(0,t.jsx)(n.code,{children:"OPENRAG_VERSION"})," for the Langflow Docker image version."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"LOG_FORMAT"})}),(0,t.jsx)(n.td,{children:"Not set"}),(0,t.jsxs)(n.td,{children:["Set to ",(0,t.jsx)(n.code,{children:"json"})," to enabled JSON-formatted log output. If this variable isn't set, then the default logging format is used."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"LOG_LEVEL"})}),(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"INFO"})}),(0,t.jsxs)(n.td,{children:["Logging level. Can be one of ",(0,t.jsx)(n.code,{children:"DEBUG"}),", ",(0,t.jsx)(n.code,{children:"INFO"}),", ",(0,t.jsx)(n.code,{children:"WARNING"}),", or ",(0,t.jsx)(n.code,{children:"ERROR"}),". ",(0,t.jsx)(n.code,{children:"DEBUG"})," provides the most detailed logs but can impact performance."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"MAX_WORKERS"})}),(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"1"})}),(0,t.jsx)(n.td,{children:"Maximum number of workers for document processing."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"OPENRAG_VERSION"})}),(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"latest"})}),(0,t.jsxs)(n.td,{children:["The version of the OpenRAG Docker images to run. For more information, see ",(0,t.jsx)(n.a,{href:"/upgrade",children:"Upgrade OpenRAG"})]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"SERVICE_NAME"})}),(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"openrag"})}),(0,t.jsx)(n.td,{children:"Service name for logging."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"SESSION_SECRET"})}),(0,t.jsx)(n.td,{children:"Automatically generated"}),(0,t.jsx)(n.td,{children:"Session management."})]})]})]})]})}function h(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(a,{...e})}):a(e)}}}]);
\ No newline at end of file
diff --git a/assets/js/c8078f0a.75fa4391.js b/assets/js/c8078f0a.75fa4391.js
new file mode 100644
index 00000000..56b21869
--- /dev/null
+++ b/assets/js/c8078f0a.75fa4391.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkopenrag_docs=globalThis.webpackChunkopenrag_docs||[]).push([[9026],{1381:(e,n,s)=>{s.d(n,{Ay:()=>l,RM:()=>i});var r=s(4848),t=s(8453);const i=[];function d(e){const n={code:"code",pre:"pre",...(0,t.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",metastring:'title="Docker"',children:"docker compose up -d\n"})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",metastring:'title="Podman"',children:"podman compose up -d\n"})})]})}function l(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(d,{...e})}):d(e)}},8453:(e,n,s)=>{s.d(n,{R:()=>d,x:()=>l});var r=s(6540);const t={},i=r.createContext(t);function d(e){const n=r.useContext(i);return r.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:d(e.components),r.createElement(i.Provider,{value:n},e.children)}},9196:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>c,contentTitle:()=>l,default:()=>h,frontMatter:()=>d,metadata:()=>r,toc:()=>o});const r=JSON.parse('{"id":"reference/configuration","title":"Environment variables","description":"OpenRAG\'s .env file is the primary configuration file for OpenRAG.","source":"@site/docs/reference/configuration.mdx","sourceDirName":"reference","slug":"/reference/configuration","permalink":"/reference/configuration","draft":false,"unlisted":false,"editUrl":"https://github.com/openrag/openrag/tree/main/docs/docs/reference/configuration.mdx","tags":[],"version":"current","frontMatter":{"title":"Environment variables","slug":"/reference/configuration"},"sidebar":"tutorialSidebar","previous":{"title":"Chat","permalink":"/chat"},"next":{"title":"Contribute to OpenRAG","permalink":"/support/contribute"}}');var t=s(4848),i=s(8453);s(1381);const d={title:"Environment variables",slug:"/reference/configuration"},l=void 0,c={},o=[{value:"Edit the .env file",id:"set-environment-variables",level:2},{value:"Model provider settings",id:"model-provider-settings",level:2},{value:"Document processing settings",id:"document-processing-settings",level:2},{value:"Langflow settings",id:"langflow-settings",level:2},{value:"OAuth provider settings",id:"oauth-provider-settings",level:2},{value:"OpenSearch settings",id:"opensearch-settings",level:2},{value:"System settings",id:"system-settings",level:2}];function a(e){const n={a:"a",admonition:"admonition",code:"code",em:"em",h2:"h2",li:"li",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,i.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(n.p,{children:["OpenRAG's ",(0,t.jsx)(n.code,{children:".env"})," file is the primary configuration file for OpenRAG.\nEnvironment variables in ",(0,t.jsx)(n.code,{children:".env"})," always take precedence over other sources."]}),"\n",(0,t.jsxs)(n.p,{children:["For deployments managed with the Terminal User Interface (TUI), this file is located at ",(0,t.jsx)(n.code,{children:"~/.openrag/tui"}),", and it can be created automatically during ",(0,t.jsx)(n.a,{href:"/install-options",children:"installation"}),"."]}),"\n",(0,t.jsxs)(n.p,{children:["For ",(0,t.jsx)(n.a,{href:"/docker",children:"self-managed deployments"}),", this file can be located at the root of your OpenRAG project directory or referenced from another location."]}),"\n",(0,t.jsxs)(n.p,{children:["For an example, see ",(0,t.jsxs)(n.a,{href:"https://github.com/langflow-ai/openrag/blob/main/.env.example",children:[(0,t.jsx)(n.code,{children:".env.example"})," in the OpenRAG repository"]}),"."]}),"\n",(0,t.jsx)(n.admonition,{type:"tip",children:(0,t.jsxs)(n.p,{children:["OpenRAG's Docker Compose files are populated automatically using values from the ",(0,t.jsx)(n.code,{children:".env"})," file, so you don't need to edit the Docker Compose files manually."]})}),"\n",(0,t.jsxs)(n.p,{children:["If a variable isn't set, OpenRAG uses default or fallback values where available.\nNot all variables have default values, and errors can occur if required variables aren't set.\nDefault values can be found in the reference tables on this page and in ",(0,t.jsx)(n.a,{href:"https://github.com/langflow-ai/openrag/blob/main/src/config/config_manager.py",children:(0,t.jsx)(n.code,{children:"config_manager.py"})}),", ",(0,t.jsx)(n.a,{href:"https://github.com/langflow-ai/openrag/blob/main/src/config/settings.py",children:(0,t.jsx)(n.code,{children:"settings.py"})}),", and ",(0,t.jsx)(n.a,{href:"https://github.com/langflow-ai/openrag/blob/main/src/utils/logging_config.py",children:(0,t.jsx)(n.code,{children:"logging_config.py"})}),"."]}),"\n",(0,t.jsxs)(n.p,{children:["You can ",(0,t.jsx)(n.a,{href:"/agents#modify-a-flow-at-runtime",children:"temporarily set Langflow variables at runtime"}),".\nHowever, these temporary overrides don't overlap with most OpenRAG environment variables.\nThe only exceptions are flow-level Langflow settings, such as the language model used in a flow."]}),"\n",(0,t.jsxs)(n.h2,{id:"set-environment-variables",children:["Edit the ",(0,t.jsx)(n.code,{children:".env"})," file"]}),"\n",(0,t.jsxs)(n.p,{children:["During ",(0,t.jsx)(n.a,{href:"/install-options",children:"installation"}),", an initial ",(0,t.jsx)(n.code,{children:".env"})," file is created automatically or manually.\nYou can edit this file to change OpenRAG configuration settings after installation."]}),"\n",(0,t.jsxs)(n.p,{children:["Each OpenRAG environment variable is either mutable or immutable.\nThis determines the actions you must take to apply changes after editing the ",(0,t.jsx)(n.code,{children:".env"})," file:"]}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Mutable environment variables"}),": You can apply changes to mutable environment variables by ",(0,t.jsx)(n.a,{href:"/manage-services",children:"stopping and restarting the OpenRAG services"})," after editing the ",(0,t.jsx)(n.code,{children:".env"})," file."]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Immutable environment variables"}),": You must ",(0,t.jsx)(n.a,{href:"/reinstall",children:"redeploy OpenRAG"})," with your modified ",(0,t.jsx)(n.code,{children:".env"})," file if you change immutable environment variables."]}),"\n"]}),"\n"]}),"\n",(0,t.jsx)(n.h2,{id:"model-provider-settings",children:"Model provider settings"}),"\n",(0,t.jsx)(n.p,{children:"Configure which models and providers OpenRAG uses to generate text and embeddings.\nYou only need to provide credentials for the providers you are using in OpenRAG."}),"\n",(0,t.jsxs)(n.p,{children:["These variables are initially set during the ",(0,t.jsx)(n.a,{href:"/install#application-onboarding",children:"application onboarding process"}),".\nSome of these variables are immutable and can only be changed by redeploying OpenRAG, as explained in ",(0,t.jsx)(n.a,{href:"#set-environment-variables",children:"Set environment variables"}),"."]}),"\n",(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Variable"}),(0,t.jsx)(n.th,{children:"Default"}),(0,t.jsx)(n.th,{children:"Description"})]})}),(0,t.jsxs)(n.tbody,{children:[(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"EMBEDDING_MODEL"})}),(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"text-embedding-3-small"})}),(0,t.jsx)(n.td,{children:"Embedding model for generating vector embeddings for documents in the knowledge base and similarity search queries. Can be changed after the application onboarding process. Accepts one or more models."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"LLM_MODEL"})}),(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"gpt-4o-mini"})}),(0,t.jsxs)(n.td,{children:["Language model for language processing and text generation in the ",(0,t.jsx)(n.strong,{children:"Chat"})," feature."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"MODEL_PROVIDER"})}),(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"openai"})}),(0,t.jsxs)(n.td,{children:["Model provider, as one of ",(0,t.jsx)(n.code,{children:"openai"}),", ",(0,t.jsx)(n.code,{children:"watsonx"}),", ",(0,t.jsx)(n.code,{children:"ollama"}),", or ",(0,t.jsx)(n.code,{children:"anthropic"}),"."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"ANTHROPIC_API_KEY"})}),(0,t.jsx)(n.td,{children:"Not set"}),(0,t.jsx)(n.td,{children:"API key for the Anthropic language model provider."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"OPENAI_API_KEY"})}),(0,t.jsx)(n.td,{children:"Not set"}),(0,t.jsx)(n.td,{children:"API key for the OpenAI model provider, which is also the default model provider."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"OLLAMA_ENDPOINT"})}),(0,t.jsx)(n.td,{children:"Not set"}),(0,t.jsx)(n.td,{children:"Custom provider endpoint for the Ollama model provider."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"WATSONX_API_KEY"})}),(0,t.jsx)(n.td,{children:"Not set"}),(0,t.jsx)(n.td,{children:"API key for the IBM watsonx.ai model provider."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"WATSONX_ENDPOINT"})}),(0,t.jsx)(n.td,{children:"Not set"}),(0,t.jsx)(n.td,{children:"Custom provider endpoint for the IBM watsonx.ai model provider."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"WATSONX_PROJECT_ID"})}),(0,t.jsx)(n.td,{children:"Not set"}),(0,t.jsx)(n.td,{children:"Project ID for the IBM watsonx.ai model provider."})]})]})]}),"\n",(0,t.jsx)(n.h2,{id:"document-processing-settings",children:"Document processing settings"}),"\n",(0,t.jsxs)(n.p,{children:["Control how OpenRAG ",(0,t.jsx)(n.a,{href:"/ingestion",children:"processes and ingests documents"})," into your knowledge base."]}),"\n",(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Variable"}),(0,t.jsx)(n.th,{children:"Default"}),(0,t.jsx)(n.th,{children:"Description"})]})}),(0,t.jsxs)(n.tbody,{children:[(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"CHUNK_OVERLAP"})}),(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"200"})}),(0,t.jsx)(n.td,{children:"Overlap between chunks."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"CHUNK_SIZE"})}),(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"1000"})}),(0,t.jsx)(n.td,{children:"Text chunk size for document processing."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"DISABLE_INGEST_WITH_LANGFLOW"})}),(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"false"})}),(0,t.jsx)(n.td,{children:"Disable Langflow ingestion pipeline."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"DOCLING_OCR_ENGINE"})}),(0,t.jsx)(n.td,{children:"Set by OS"}),(0,t.jsxs)(n.td,{children:["OCR engine for document processing. For macOS, ",(0,t.jsx)(n.code,{children:"ocrmac"}),". For any other OS, ",(0,t.jsx)(n.code,{children:"easyocr"}),"."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"OCR_ENABLED"})}),(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"false"})}),(0,t.jsx)(n.td,{children:"Enable OCR for image processing."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"OPENRAG_DOCUMENTS_PATH"})}),(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"~/.openrag/documents"})}),(0,t.jsxs)(n.td,{children:["The ",(0,t.jsx)(n.a,{href:"/knowledge#set-the-local-documents-path",children:"local documents path"})," for ingestion."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"PICTURE_DESCRIPTIONS_ENABLED"})}),(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"false"})}),(0,t.jsx)(n.td,{children:"Enable picture descriptions."})]})]})]}),"\n",(0,t.jsx)(n.h2,{id:"langflow-settings",children:"Langflow settings"}),"\n",(0,t.jsx)(n.p,{children:"Configure the OpenRAG Langflow server's authentication, contact point, and built-in flow definitions."}),"\n",(0,t.jsxs)(n.admonition,{type:"info",children:[(0,t.jsxs)(n.p,{children:["The ",(0,t.jsx)(n.code,{children:"LANGFLOW_SUPERUSER_PASSWORD"})," is set in your ",(0,t.jsx)(n.code,{children:".env"})," file, and this value determines the default values for several other Langflow authentication variables."]}),(0,t.jsxs)(n.p,{children:["If the ",(0,t.jsx)(n.code,{children:"LANGFLOW_SUPERUSER_PASSWORD"})," variable isn't set, then the Langflow server starts ",(0,t.jsx)(n.em,{children:"without"})," authentication enabled."]}),(0,t.jsxs)(n.p,{children:["For better security, it is recommended to set ",(0,t.jsx)(n.code,{children:"LANGFLOW_SUPERUSER_PASSWORD"})," so the ",(0,t.jsx)(n.a,{href:"https://docs.langflow.org/api-keys-and-authentication#start-a-langflow-server-with-authentication-enabled",children:"Langflow server starts with authentication enabled"}),"."]})]}),"\n",(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Variable"}),(0,t.jsx)(n.th,{children:"Default"}),(0,t.jsx)(n.th,{children:"Description"})]})}),(0,t.jsxs)(n.tbody,{children:[(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"LANGFLOW_AUTO_LOGIN"})}),(0,t.jsxs)(n.td,{children:["Determined by ",(0,t.jsx)(n.code,{children:"LANGFLOW_SUPERUSER_PASSWORD"})]}),(0,t.jsxs)(n.td,{children:["Whether to enable ",(0,t.jsx)(n.a,{href:"https://docs.langflow.org/api-keys-and-authentication#langflow-auto-login",children:"auto-login mode"})," for the Langflow visual editor and CLI. If ",(0,t.jsx)(n.code,{children:"LANGFLOW_SUPERUSER_PASSWORD"})," isn't set, then ",(0,t.jsx)(n.code,{children:"LANGFLOW_AUTO_LOGIN"})," is ",(0,t.jsx)(n.code,{children:"True"})," and auto-login mode is enabled. If ",(0,t.jsx)(n.code,{children:"LANGFLOW_SUPERUSER_PASSWORD"})," is set, then ",(0,t.jsx)(n.code,{children:"LANGFLOW_AUTO_LOGIN"})," is ",(0,t.jsx)(n.code,{children:"False"})," and auto-login mode is disabled. Langflow API calls always require authentication with a Langflow API key regardless of the auto-login setting."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"LANGFLOW_ENABLE_SUPERUSER_CLI"})}),(0,t.jsxs)(n.td,{children:["Determined by ",(0,t.jsx)(n.code,{children:"LANGFLOW_SUPERUSER_PASSWORD"})]}),(0,t.jsxs)(n.td,{children:["Whether to enable the ",(0,t.jsxs)(n.a,{href:"https://docs.langflow.org/api-keys-and-authentication#langflow-enable-superuser-cli",children:["Langflow CLI ",(0,t.jsx)(n.code,{children:"langflow superuser"})," command"]}),". If ",(0,t.jsx)(n.code,{children:"LANGFLOW_SUPERUSER_PASSWORD"})," isn't set, then ",(0,t.jsx)(n.code,{children:"LANGFLOW_ENABLE_SUPERUSER_CLI"})," is ",(0,t.jsx)(n.code,{children:"True"})," and superuser accounts can be created with the Langflow CLI. If ",(0,t.jsx)(n.code,{children:"LANGFLOW_SUPERUSER_PASSWORD"})," is set, then ",(0,t.jsx)(n.code,{children:"LANGFLOW_ENABLE_SUPERUSER_CLI"})," is ",(0,t.jsx)(n.code,{children:"False"})," and the ",(0,t.jsx)(n.code,{children:"langflow superuser"})," command is disabled."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"LANGFLOW_NEW_USER_IS_ACTIVE"})}),(0,t.jsxs)(n.td,{children:["Determined by ",(0,t.jsx)(n.code,{children:"LANGFLOW_SUPERUSER_PASSWORD"})]}),(0,t.jsxs)(n.td,{children:["Whether new ",(0,t.jsx)(n.a,{href:"https://docs.langflow.org/api-keys-and-authentication#langflow-new-user-is-active",children:"Langflow user accounts are active by default"}),". If ",(0,t.jsx)(n.code,{children:"LANGFLOW_SUPERUSER_PASSWORD"})," isn't set, then ",(0,t.jsx)(n.code,{children:"LANGFLOW_NEW_USER_IS_ACTIVE"})," is ",(0,t.jsx)(n.code,{children:"True"})," and new user accounts are active by default. If ",(0,t.jsx)(n.code,{children:"LANGFLOW_SUPERUSER_PASSWORD"})," is set, then ",(0,t.jsx)(n.code,{children:"LANGFLOW_NEW_USER_IS_ACTIVE"})," is ",(0,t.jsx)(n.code,{children:"False"})," and new user accounts are inactive by default."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"LANGFLOW_PUBLIC_URL"})}),(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"http://localhost:7860"})}),(0,t.jsx)(n.td,{children:"Public URL for the Langflow instance. Forms the base URL for Langflow API calls and other interfaces with your OpenRAG Langflow instance."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"LANGFLOW_KEY"})}),(0,t.jsx)(n.td,{children:"Automatically generated"}),(0,t.jsx)(n.td,{children:"A Langflow API key to run flows with Langflow API calls. Because Langflow API keys are server-specific, allow OpenRAG to generate this key initially. You can create additional Langflow API keys after deploying OpenRAG."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"LANGFLOW_SECRET_KEY"})}),(0,t.jsx)(n.td,{children:"Automatically generated"}),(0,t.jsxs)(n.td,{children:["Secret encryption key for Langflow internal operations. It is recommended to ",(0,t.jsx)(n.a,{href:"https://docs.langflow.org/api-keys-and-authentication#langflow-secret-key",children:"generate your own Langflow secret key"})," for this variable. If this variable isn't set, then Langflow generates a secret key automatically."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"LANGFLOW_SUPERUSER"})}),(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"admin"})}),(0,t.jsx)(n.td,{children:"Username for the Langflow administrator user."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"LANGFLOW_SUPERUSER_PASSWORD"})}),(0,t.jsx)(n.td,{children:"Not set"}),(0,t.jsxs)(n.td,{children:["Langflow administrator password. If this variable isn't set, then the Langflow server starts ",(0,t.jsx)(n.em,{children:"without"})," authentication enabled. It is recommended to set ",(0,t.jsx)(n.code,{children:"LANGFLOW_SUPERUSER_PASSWORD"})," so the ",(0,t.jsx)(n.a,{href:"https://docs.langflow.org/api-keys-and-authentication#start-a-langflow-server-with-authentication-enabled",children:"Langflow server starts with authentication enabled"}),"."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"LANGFLOW_URL"})}),(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"http://localhost:7860"})}),(0,t.jsx)(n.td,{children:"URL for the Langflow instance."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsxs)(n.td,{children:[(0,t.jsx)(n.code,{children:"LANGFLOW_CHAT_FLOW_ID"}),", ",(0,t.jsx)(n.code,{children:"LANGFLOW_INGEST_FLOW_ID"}),", ",(0,t.jsx)(n.code,{children:"NUDGES_FLOW_ID"})]}),(0,t.jsx)(n.td,{children:"Built-in flow IDs"}),(0,t.jsxs)(n.td,{children:["These variables are set automatically to the IDs of the chat, ingestion, and nudges ",(0,t.jsx)(n.a,{href:"/agents",children:"flows"}),". The default values are found in ",(0,t.jsx)(n.a,{href:"https://github.com/langflow-ai/openrag/blob/main/.env.example",children:(0,t.jsx)(n.code,{children:".env.example"})}),". Only change these values if you want to replace a built-in flow with your own custom flow. The flow JSON must be present in your version of the OpenRAG codebase. For example, if you ",(0,t.jsx)(n.a,{href:"/docker",children:"deploy self-managed services"}),", you can add the flow JSON to your local clone of the OpenRAG repository before deploying OpenRAG."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"SYSTEM_PROMPT"})}),(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"You are a helpful AI assistant with access to a knowledge base. Answer questions based on the provided context."})}),(0,t.jsxs)(n.td,{children:["System prompt instructions for the agent driving the ",(0,t.jsx)(n.strong,{children:"Chat"})," flow."]})]})]})]}),"\n",(0,t.jsx)(n.h2,{id:"oauth-provider-settings",children:"OAuth provider settings"}),"\n",(0,t.jsxs)(n.p,{children:["Configure ",(0,t.jsx)(n.a,{href:"/ingestion#oauth-ingestion",children:"OAuth providers"})," and external service integrations."]}),"\n",(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Variable"}),(0,t.jsx)(n.th,{children:"Default"}),(0,t.jsx)(n.th,{children:"Description"})]})}),(0,t.jsxs)(n.tbody,{children:[(0,t.jsxs)(n.tr,{children:[(0,t.jsxs)(n.td,{children:[(0,t.jsx)(n.code,{children:"AWS_ACCESS_KEY_ID"}),(0,t.jsx)("br",{}),(0,t.jsx)(n.code,{children:"AWS_SECRET_ACCESS_KEY"})]}),(0,t.jsx)(n.td,{children:"Not set"}),(0,t.jsxs)(n.td,{children:["Enable access to AWS S3 with an ",(0,t.jsx)(n.a,{href:"https://docs.aws.amazon.com/singlesignon/latest/userguide/manage-your-applications.html",children:"AWS OAuth app"})," integration."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsxs)(n.td,{children:[(0,t.jsx)(n.code,{children:"GOOGLE_OAUTH_CLIENT_ID"}),(0,t.jsx)("br",{}),(0,t.jsx)(n.code,{children:"GOOGLE_OAUTH_CLIENT_SECRET"})]}),(0,t.jsx)(n.td,{children:"Not set"}),(0,t.jsxs)(n.td,{children:["Enable the ",(0,t.jsx)(n.a,{href:"https://developers.google.com/identity/protocols/oauth2",children:"Google OAuth client"})," integration. You can generate these values in the ",(0,t.jsx)(n.a,{href:"https://console.cloud.google.com/apis/credentials",children:"Google Cloud Console"}),"."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsxs)(n.td,{children:[(0,t.jsx)(n.code,{children:"MICROSOFT_GRAPH_OAUTH_CLIENT_ID"}),(0,t.jsx)("br",{}),(0,t.jsx)(n.code,{children:"MICROSOFT_GRAPH_OAUTH_CLIENT_SECRET"})]}),(0,t.jsx)(n.td,{children:"Not set"}),(0,t.jsxs)(n.td,{children:["Enable the ",(0,t.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/onedrive/developer/rest-api/getting-started/graph-oauth",children:"Microsoft Graph OAuth client"})," integration by providing ",(0,t.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/onedrive/developer/rest-api/getting-started/app-registration?view=odsp-graph-online",children:"Azure application registration credentials for SharePoint and OneDrive"}),"."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"WEBHOOK_BASE_URL"})}),(0,t.jsx)(n.td,{children:"Not set"}),(0,t.jsx)(n.td,{children:"Base URL for OAuth connector webhook endpoints. If this variable isn't set, a default base URL is used."})]})]})]}),"\n",(0,t.jsx)(n.h2,{id:"opensearch-settings",children:"OpenSearch settings"}),"\n",(0,t.jsx)(n.p,{children:"Configure OpenSearch database authentication."}),"\n",(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Variable"}),(0,t.jsx)(n.th,{children:"Default"}),(0,t.jsx)(n.th,{children:"Description"})]})}),(0,t.jsxs)(n.tbody,{children:[(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"OPENSEARCH_HOST"})}),(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"localhost"})}),(0,t.jsx)(n.td,{children:"OpenSearch instance host."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"OPENSEARCH_PORT"})}),(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"9200"})}),(0,t.jsx)(n.td,{children:"OpenSearch instance port."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"OPENSEARCH_USERNAME"})}),(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"admin"})}),(0,t.jsx)(n.td,{children:"OpenSearch administrator username."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"OPENSEARCH_PASSWORD"})}),(0,t.jsx)(n.td,{children:"Must be set at start up"}),(0,t.jsxs)(n.td,{children:["Required. OpenSearch administrator password. Must adhere to the ",(0,t.jsx)(n.a,{href:"https://docs.opensearch.org/latest/security/configuration/demo-configuration/#setting-up-a-custom-admin-password",children:"OpenSearch password complexity requirements"}),". You must set this directly in the ",(0,t.jsx)(n.code,{children:".env"})," or in the TUI's ",(0,t.jsx)(n.a,{href:"/install#setup",children:(0,t.jsx)(n.strong,{children:"Basic/Advanced Setup"})}),"."]})]})]})]}),"\n",(0,t.jsx)(n.h2,{id:"system-settings",children:"System settings"}),"\n",(0,t.jsx)(n.p,{children:"Configure general system components, session management, and logging."}),"\n",(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Variable"}),(0,t.jsx)(n.th,{children:"Default"}),(0,t.jsx)(n.th,{children:"Description"})]})}),(0,t.jsxs)(n.tbody,{children:[(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"LANGFLOW_KEY_RETRIES"})}),(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"15"})}),(0,t.jsx)(n.td,{children:"Number of retries for Langflow key generation."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"LANGFLOW_KEY_RETRY_DELAY"})}),(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"2.0"})}),(0,t.jsx)(n.td,{children:"Delay between retries in seconds."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"LANGFLOW_VERSION"})}),(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"OPENRAG_VERSION"})}),(0,t.jsxs)(n.td,{children:["Langflow Docker image version. By default, OpenRAG uses the ",(0,t.jsx)(n.code,{children:"OPENRAG_VERSION"})," for the Langflow Docker image version."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"LOG_FORMAT"})}),(0,t.jsx)(n.td,{children:"Not set"}),(0,t.jsxs)(n.td,{children:["Set to ",(0,t.jsx)(n.code,{children:"json"})," to enabled JSON-formatted log output. If this variable isn't set, then the default logging format is used."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"LOG_LEVEL"})}),(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"INFO"})}),(0,t.jsxs)(n.td,{children:["Logging level. Can be one of ",(0,t.jsx)(n.code,{children:"DEBUG"}),", ",(0,t.jsx)(n.code,{children:"INFO"}),", ",(0,t.jsx)(n.code,{children:"WARNING"}),", or ",(0,t.jsx)(n.code,{children:"ERROR"}),". ",(0,t.jsx)(n.code,{children:"DEBUG"})," provides the most detailed logs but can impact performance."]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"MAX_WORKERS"})}),(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"1"})}),(0,t.jsx)(n.td,{children:"Maximum number of workers for document processing."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"OPENRAG_VERSION"})}),(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"latest"})}),(0,t.jsxs)(n.td,{children:["The version of the OpenRAG Docker images to run. For more information, see ",(0,t.jsx)(n.a,{href:"/upgrade",children:"Upgrade OpenRAG"})]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"SERVICE_NAME"})}),(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"openrag"})}),(0,t.jsx)(n.td,{children:"Service name for logging."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"SESSION_SECRET"})}),(0,t.jsx)(n.td,{children:"Automatically generated"}),(0,t.jsx)(n.td,{children:"Session management."})]})]})]})]})}function h(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(a,{...e})}):a(e)}}}]);
\ No newline at end of file
diff --git a/assets/js/d0314b07.0bb94724.js b/assets/js/d0314b07.c52456be.js
similarity index 99%
rename from assets/js/d0314b07.0bb94724.js
rename to assets/js/d0314b07.c52456be.js
index f8e5f9b2..2cad8fa1 100644
--- a/assets/js/d0314b07.0bb94724.js
+++ b/assets/js/d0314b07.c52456be.js
@@ -1 +1 @@
-"use strict";(globalThis.webpackChunkopenrag_docs=globalThis.webpackChunkopenrag_docs||[]).push([[5750],{887:(e,n,s)=>{s.d(n,{Ay:()=>h,RM:()=>c});var r=s(4848),t=s(8453),o=s(9179),i=s(1470),a=s(9365),l=s(3059);const c=[{value:"Complete the application onboarding process",id:"application-onboarding",level:2},...l.RM];function d(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",li:"li",ol:"ol",p:"p",strong:"strong",ul:"ul",...(0,t.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h2,{id:"application-onboarding",children:"Complete the application onboarding process"}),"\n",(0,r.jsxs)(n.p,{children:["The first time you start the OpenRAG application, you must complete the application onboarding process to select language and embedding models that are essential for OpenRAG features like the ",(0,r.jsx)(n.a,{href:"/chat",children:(0,r.jsx)(n.strong,{children:"Chat"})}),"."]}),"\n",(0,r.jsxs)(n.p,{children:["Some of these variables, such as the embedding models, can be changed seamlessly after onboarding.\nOthers are immutable and require you to destroy and recreate the OpenRAG containers.\nFor more information, see the ",(0,r.jsx)(n.a,{href:"/reference/configuration",children:"OpenRAG environment variables reference"}),"."]}),"\n",(0,r.jsx)(n.p,{children:"You can use different providers for your language model and embedding model, such as Anthropic for the language model and OpenAI for the embedding model.\nAdditionally, you can set multiple embedding models."}),"\n",(0,r.jsx)(n.p,{children:"You only need to complete onboarding for your preferred providers."}),"\n",(0,r.jsxs)(i.A,{groupId:"Provider",children:[(0,r.jsxs)(a.A,{value:"Anthropic",label:"Anthropic",default:!0,children:[(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsx)(n.p,{children:"Anthropic doesn't provide embedding models. If you select Anthropic for your language model, you must select a different provider for the embedding model."})}),(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:["Enter your Anthropic API key, or enable ",(0,r.jsx)(n.strong,{children:"Use environment API key"})," to pull the key from your ",(0,r.jsxs)(n.a,{href:"/reference/configuration",children:["OpenRAG ",(0,r.jsx)(n.code,{children:".env"})," file"]}),"."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:["Under ",(0,r.jsx)(n.strong,{children:"Advanced settings"}),", select the language model that you want to use."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:["Click ",(0,r.jsx)(n.strong,{children:"Complete"}),"."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:"Select a provider for embeddings, provide the required information, and then select the embedding model you want to use.\nFor information about another provider's credentials and settings, see the instructions for that provider."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:["Click ",(0,r.jsx)(n.strong,{children:"Complete"}),"."]}),"\n",(0,r.jsxs)(n.p,{children:["After you configure the embedding model, OpenRAG uses your credentials and models to ingest some ",(0,r.jsx)(n.a,{href:"/knowledge#default-documents",children:"initial documents"}),". This tests the connection, and it allows you to ask OpenRAG about itself in the ",(0,r.jsx)(n.a,{href:"/chat",children:(0,r.jsx)(n.strong,{children:"Chat"})}),".\nIf there is a problem with the model configuration, an error occurs and you are redirected back to the application onboarding screen.\nVerify that the credential is valid and has access to the selected model, and then click ",(0,r.jsx)(n.strong,{children:"Complete"})," to retry ingestion."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:["Continue through the overview slides for a brief introduction to OpenRAG, or click ",(0,r.jsx)(o.A,{name:"ArrowRight","aria-hidden":"true"})," ",(0,r.jsx)(n.strong,{children:"Skip overview"}),".\nThe overview demonstrates some basic functionality that is covered in the ",(0,r.jsx)(n.a,{href:"/quickstart#chat-with-documents",children:"quickstart"})," and in other parts of the OpenRAG documentation."]}),"\n"]}),"\n"]})]}),(0,r.jsx)(a.A,{value:"IBM watsonx.ai",label:"IBM watsonx.ai",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:["For ",(0,r.jsx)(n.strong,{children:"watsonx.ai API Endpoint"}),", select the base URL for your watsonx.ai model deployment."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:"Enter your watsonx.ai deployment's project ID and API key."}),"\n",(0,r.jsxs)(n.p,{children:["You can enable ",(0,r.jsx)(n.strong,{children:"Use environment API key"})," to pull the key from your ",(0,r.jsxs)(n.a,{href:"/reference/configuration",children:["OpenRAG ",(0,r.jsx)(n.code,{children:".env"})," file"]}),"."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:["Under ",(0,r.jsx)(n.strong,{children:"Advanced settings"}),", select the language model that you want to use."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:["Click ",(0,r.jsx)(n.strong,{children:"Complete"}),"."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:"Select a provider for embeddings, provide the required information, and then select the embedding model you want to use.\nFor information about another provider's credentials and settings, see the instructions for that provider."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:["Click ",(0,r.jsx)(n.strong,{children:"Complete"}),"."]}),"\n",(0,r.jsxs)(n.p,{children:["After you configure the embedding model, OpenRAG uses your credentials and models to ingest some ",(0,r.jsx)(n.a,{href:"/knowledge#default-documents",children:"initial documents"}),". This tests the connection, and it allows you to ask OpenRAG about itself in the ",(0,r.jsx)(n.a,{href:"/chat",children:(0,r.jsx)(n.strong,{children:"Chat"})}),".\nIf there is a problem with the model configuration, an error occurs and you are redirected back to the application onboarding screen.\nVerify that the credentials are valid and have access to the selected model, and then click ",(0,r.jsx)(n.strong,{children:"Complete"})," to retry ingestion."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:["Continue through the overview slides for a brief introduction to OpenRAG, or click ",(0,r.jsx)(o.A,{name:"ArrowRight","aria-hidden":"true"})," ",(0,r.jsx)(n.strong,{children:"Skip overview"}),".\nThe overview demonstrates some basic functionality that is covered in the ",(0,r.jsx)(n.a,{href:"/quickstart#chat-with-documents",children:"quickstart"})," and in other parts of the OpenRAG documentation."]}),"\n"]}),"\n"]})}),(0,r.jsxs)(a.A,{value:"Ollama",label:"Ollama",children:[(0,r.jsx)(n.p,{children:"Using Ollama as your language and embedding model provider offers greater flexibility and configuration options for hosting models.\nHowever, it requires additional setup because Ollama isn't included with OpenRAG.\nYou must deploy Ollama separately if you want to use Ollama as a model provider."}),(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsx)(l.Ay,{})}),(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.a,{href:"https://docs.ollama.com/",children:"Install Ollama locally or on a remote server"}),", or ",(0,r.jsx)(n.a,{href:"https://docs.ollama.com/cloud",children:"run models in Ollama Cloud"}),"."]}),"\n",(0,r.jsx)(n.p,{children:"If you are running a remote server, it must be accessible from your OpenRAG deployment."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:"In the OpenRAG onboarding dialog, enter your Ollama server's base URL:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Local Ollama server"}),": Enter your Ollama server's base URL and port. The default Ollama server address is ",(0,r.jsx)(n.code,{children:"http://localhost:11434"}),"."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Ollama Cloud"}),": Because Ollama Cloud models run at the same address as a local Ollama server and automatically offload to Ollama's cloud service, you can use the same base URL and port as you would for a local Ollama server. The default address is ",(0,r.jsx)(n.code,{children:"http://localhost:11434"}),"."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Remote server"}),": Enter your remote Ollama server's base URL and port, such as ",(0,r.jsx)(n.code,{children:"http://your-remote-server:11434"}),"."]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:"Select the language model that your Ollama server is running."}),"\n",(0,r.jsx)(n.p,{children:"If your server isn't running any language models, you must either deploy a language model on your Ollama server, or use another provider for the language model."}),"\n",(0,r.jsx)(n.p,{children:"Language model and embedding model selections are independent.\nYou can use the same or different servers for each model."}),"\n",(0,r.jsx)(n.p,{children:"To use different providers for each model, you must configure both providers, and select the relevant model for each provider."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:["Click ",(0,r.jsx)(n.strong,{children:"Complete"}),"."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:"Select a provider for embeddings, provide the required information, and then select the embedding model you want to use.\nFor information about another provider's credentials and settings, see the instructions for that provider."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:["Click ",(0,r.jsx)(n.strong,{children:"Complete"}),"."]}),"\n",(0,r.jsxs)(n.p,{children:["After you configure the embedding model, OpenRAG uses your credentials and models to ingest some ",(0,r.jsx)(n.a,{href:"/knowledge#default-documents",children:"initial documents"}),". This tests the connection, and it allows you to ask OpenRAG about itself in the ",(0,r.jsx)(n.a,{href:"/chat",children:(0,r.jsx)(n.strong,{children:"Chat"})}),".\nIf there is a problem with the model configuration, an error occurs and you are redirected back to the application onboarding screen.\nVerify that the server address is valid, and that the selected model is running on the server.\nThen, click ",(0,r.jsx)(n.strong,{children:"Complete"})," to retry ingestion."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:["Continue through the overview slides for a brief introduction to OpenRAG, or click ",(0,r.jsx)(o.A,{name:"ArrowRight","aria-hidden":"true"})," ",(0,r.jsx)(n.strong,{children:"Skip overview"}),".\nThe overview demonstrates some basic functionality that is covered in the ",(0,r.jsx)(n.a,{href:"/quickstart#chat-with-documents",children:"quickstart"})," and in other parts of the OpenRAG documentation."]}),"\n"]}),"\n"]})]}),(0,r.jsx)(a.A,{value:"OpenAI",label:"OpenAI (default)",children:(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:["Enter your OpenAI API key, or enable ",(0,r.jsx)(n.strong,{children:"Use environment API key"})," to pull the key from your ",(0,r.jsxs)(n.a,{href:"/reference/configuration",children:["OpenRAG ",(0,r.jsx)(n.code,{children:".env"})," file"]}),"."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:["Under ",(0,r.jsx)(n.strong,{children:"Advanced settings"}),", select the language model that you want to use."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:["Click ",(0,r.jsx)(n.strong,{children:"Complete"}),"."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:"Select a provider for embeddings, provide the required information, and then select the embedding model you want to use.\nFor information about another provider's credentials and settings, see the instructions for that provider."}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:["Click ",(0,r.jsx)(n.strong,{children:"Complete"}),"."]}),"\n",(0,r.jsxs)(n.p,{children:["After you configure the embedding model, OpenRAG uses your credentials and models to ingest some ",(0,r.jsx)(n.a,{href:"/knowledge#default-documents",children:"initial documents"}),". This tests the connection, and it allows you to ask OpenRAG about itself in the ",(0,r.jsx)(n.a,{href:"/chat",children:(0,r.jsx)(n.strong,{children:"Chat"})}),".\nIf there is a problem with the model configuration, an error occurs and you are redirected back to the application onboarding screen.\nVerify that the credential is valid and has access to the selected model, and then click ",(0,r.jsx)(n.strong,{children:"Complete"})," to retry ingestion."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:["Continue through the overview slides for a brief introduction to OpenRAG, or click ",(0,r.jsx)(o.A,{name:"ArrowRight","aria-hidden":"true"})," ",(0,r.jsx)(n.strong,{children:"Skip overview"}),".\nThe overview demonstrates some basic functionality that is covered in the ",(0,r.jsx)(n.a,{href:"/quickstart#chat-with-documents",children:"quickstart"})," and in other parts of the OpenRAG documentation."]}),"\n"]}),"\n"]})})]})]})}function h(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(d,{...e})}):d(e)}},927:(e,n,s)=>{s.d(n,{Ay:()=>a,RM:()=>o});var r=s(4848),t=s(8453);const o=[{value:"Next steps",id:"next-steps",level:2}];function i(e){const n={a:"a",h2:"h2",li:"li",strong:"strong",ul:"ul",...(0,t.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h2,{id:"next-steps",children:"Next steps"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["Try some of OpenRAG's core features in the ",(0,r.jsx)(n.a,{href:"/quickstart#chat-with-documents",children:"quickstart"}),"."]}),"\n",(0,r.jsxs)(n.li,{children:["Learn how to ",(0,r.jsx)(n.a,{href:"/manage-services",children:"manage OpenRAG services"}),"."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.a,{href:"/ingestion",children:"Upload documents"}),", and then use the ",(0,r.jsx)(n.a,{href:"/chat",children:(0,r.jsx)(n.strong,{children:"Chat"})})," to explore your data."]}),"\n"]})]})}function a(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(i,{...e})}):i(e)}},1470:(e,n,s)=>{s.d(n,{A:()=>w});var r=s(6540),t=s(4164),o=s(7559),i=s(3104),a=s(6347),l=s(205),c=s(7485),d=s(1682),h=s(679);function u(e){return r.Children.toArray(e).filter(e=>"\n"!==e).map(e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad Status: running
Endpoint: http://127.0.0.1:5001
Docs: http://127.0.0.1:5001/docs
PID: 27746
Deploy the OpenRAG containers locally using the appropriate Docker Compose configuration for your environment.
+Deploy the OpenRAG containers locally using the appropriate Docker Compose configuration for your environment:
GPU-accelerated deployment: If your host machine has an NVIDIA GPU with CUDA support and compatible NVIDIA drivers, use the base docker-compose.yml file with the docker-compose.gpu.yml override.
Optional: Under Others, edit the knowledge base paths if you don't want to use the default paths:
Optional: Under Others, edit the knowledge base paths if you don't want to use the default paths:
Optional: Under Others, edit the knowledge base paths if you don't want to use the default paths:
The default path for local uploads is ~/.openrag/documents. This is mounted to the /app/openrag-documents/ directory inside the OpenRAG container. Files added to the host or container directory are visible in both locations.
To change this location, modify the Documents Paths variable in either the Advanced Setup menu or in your OpenRAG .env file.
To change this location, modify the Documents Paths variable in either the Basic/Advanced Setup menu or in your OpenRAG .env file.
This is a destructive operation that cannot be undone.
To clear your entire knowledge base, reset your OpenRAG containers or reinstall OpenRAG.
diff --git a/manage-services/index.html b/manage-services/index.html index 06c8c132..7c99aba9 100644 --- a/manage-services/index.html +++ b/manage-services/index.html @@ -4,7 +4,7 @@| Variable | Default | Description |
|---|---|---|
EMBEDDING_MODEL | text-embedding-3-small | Embedding model for generating vector embeddings for documents in the knowledge base and similarity search queries. Can be changed after the application onboarding process. Accepts one or more models. |
LLM_MODEL | gpt-4o-mini | Language model for language processing and text generation in the Chat feature. |
MODEL_PROVIDER | openai | Model provider, as one of openai, watsonx, ollama, or anthropic. |
ANTHROPIC_API_KEY | Not set | API key for the Anthropic language model provider. |
OPENAI_API_KEY | Not set | API key for the OpenAI model provider, which is also the default model provider. |
OLLAMA_ENDPOINT | Not set | Custom provider endpoint for the Ollama model provider. |
WATSONX_API_KEY | Not set | API key for the IBM watsonx.ai model provider. |
WATSONX_ENDPOINT | Not set | Custom provider endpoint for the IBM watsonx.ai model provider. |
WATSONX_PROJECT_ID | Not set | Project ID for the IBM watsonx.ai model provider. |
Control how OpenRAG processes and ingests documents into your knowledge base.
-| Variable | Default | Description |
|---|---|---|
CHUNK_OVERLAP | 200 | Overlap between chunks. |
CHUNK_SIZE | 1000 | Text chunk size for document processing. |
DISABLE_INGEST_WITH_LANGFLOW | false | Disable Langflow ingestion pipeline. |
DOCLING_OCR_ENGINE | Set by OS | OCR engine for document processing. For macOS, ocrmac. For any other OS, easyocr. |
OCR_ENABLED | false | Enable OCR for image processing. |
OPENRAG_DOCUMENTS_PATHS | ~/.openrag/documents | Document paths for ingestion. |
PICTURE_DESCRIPTIONS_ENABLED | false | Enable picture descriptions. |
| Variable | Default | Description |
|---|---|---|
CHUNK_OVERLAP | 200 | Overlap between chunks. |
CHUNK_SIZE | 1000 | Text chunk size for document processing. |
DISABLE_INGEST_WITH_LANGFLOW | false | Disable Langflow ingestion pipeline. |
DOCLING_OCR_ENGINE | Set by OS | OCR engine for document processing. For macOS, ocrmac. For any other OS, easyocr. |
OCR_ENABLED | false | Enable OCR for image processing. |
OPENRAG_DOCUMENTS_PATH | ~/.openrag/documents | The local documents path for ingestion. |
PICTURE_DESCRIPTIONS_ENABLED | false | Enable picture descriptions. |
Configure the OpenRAG Langflow server's authentication, contact point, and built-in flow definitions.
The LANGFLOW_SUPERUSER_PASSWORD is set in your .env file, and this value determines the default values for several other Langflow authentication variables.
If the LANGFLOW_SUPERUSER_PASSWORD variable isn't set, then the Langflow server starts without authentication enabled.
For better security, it is recommended to set LANGFLOW_SUPERUSER_PASSWORD so the Langflow server starts with authentication enabled.