diff --git a/.env.example b/.env.example index 5a5f6429..849b94ad 100644 --- a/.env.example +++ b/.env.example @@ -66,6 +66,10 @@ EMBEDDING_MODEL= # OPTIONAL url for openrag link to langflow in the UI LANGFLOW_PUBLIC_URL= +# OPTIONAL: Override the full docling-serve URL (e.g., for remote instances) +# If not set, auto-detects host and uses port 5001 +# DOCLING_SERVE_URL=http://my-docling-server:5001 + # OPTIONAL: Override host for docling service (for special networking setups) # HOST_DOCKER_INTERNAL=host.containers.internal diff --git a/.github/workflows/build-multiarch.yml b/.github/workflows/build-multiarch.yml index 077b66ec..1f06553c 100644 --- a/.github/workflows/build-multiarch.yml +++ b/.github/workflows/build-multiarch.yml @@ -69,8 +69,7 @@ jobs: tag: langflowai/openrag-backend platform: linux/arm64 arch: arm64 - #runs-on: [self-hosted, linux, ARM64, langflow-ai-arm64-2] - runs-on: RagRunner + runs-on: [self-hosted, Linux, ARM64, langflow-ai-arm64-40gb-ephemeral] # frontend - image: frontend @@ -84,8 +83,7 @@ jobs: tag: langflowai/openrag-frontend platform: linux/arm64 arch: arm64 - #runs-on: [self-hosted, linux, ARM64, langflow-ai-arm64-2] - runs-on: RagRunner + runs-on: [self-hosted, Linux, ARM64, langflow-ai-arm64-40gb-ephemeral] # langflow - image: langflow @@ -99,8 +97,7 @@ jobs: tag: langflowai/openrag-langflow platform: linux/arm64 arch: arm64 - #runs-on: self-hosted - runs-on: RagRunner + runs-on: [self-hosted, Linux, ARM64, langflow-ai-arm64-40gb-ephemeral] # opensearch - image: opensearch @@ -114,9 +111,7 @@ jobs: tag: langflowai/openrag-opensearch platform: linux/arm64 arch: arm64 - #runs-on: [self-hosted, linux, ARM64, langflow-ai-arm64-2] - #runs-on: self-hosted - runs-on: RagRunner + runs-on: [self-hosted, Linux, ARM64, langflow-ai-arm64-40gb-ephemeral] runs-on: ${{ matrix.runs-on }} diff --git a/docker-compose.gpu.yml b/docker-compose.gpu.yml index 4496c4ac..b849cd3b 100644 --- a/docker-compose.gpu.yml +++ b/docker-compose.gpu.yml @@ -3,5 +3,10 @@ services: environment: - NVIDIA_DRIVER_CAPABILITIES=compute,utility - NVIDIA_VISIBLE_DEVICES=all - gpus: all - + deploy: + resources: + reservations: + devices: + - driver: nvidia + count: all + capabilities: [gpu] diff --git a/docker-compose.yml b/docker-compose.yml index c99205a6..30574506 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -29,7 +29,7 @@ services: - "9200:9200" - "9600:9600" volumes: - - ${OPENSEARCH_DATA_PATH:-./opensearch-data}:/usr/share/opensearch/data:Z + - ${OPENSEARCH_DATA_PATH:-./opensearch-data}:/usr/share/opensearch/data:U,z dashboards: image: opensearchproject/opensearch-dashboards:3.0.0 diff --git a/docs/docs/reference/api-sdk-overview.mdx b/docs/docs/reference/api-sdk-overview.mdx new file mode 100644 index 00000000..d3a7418f --- /dev/null +++ b/docs/docs/reference/api-sdk-overview.mdx @@ -0,0 +1,12 @@ +--- +title: OpenRAG APIs and SDKs +slug: /reference/api-sdk-overview +--- + +You can use OpenRAG's APIs and SDKs to integrate and extend OpenRAG's capabilities: + +* [Python SDK](https://github.com/langflow-ai/openrag/tree/main/sdks/python) +* [TypeScript/JavaScript SDK](https://github.com/langflow-ai/openrag/tree/main/sdks/typescript) + + + \ No newline at end of file diff --git a/docs/docusaurus.config.js b/docs/docusaurus.config.js index 8525447c..5bc29f58 100644 --- a/docs/docusaurus.config.js +++ b/docs/docusaurus.config.js @@ -236,6 +236,15 @@ const config = { }, ], }, + algolia: { + appId: "SMEA51Q5OL", + // public key, safe to commit + apiKey: "b2ec302e9880e8979ad6a68f0c36271e", + indexName: "openrag-algolia", + contextualSearch: true, + searchParameters: {}, + searchPagePath: "search", + }, prism: { theme: prismThemes.github, darkTheme: prismThemes.dracula, diff --git a/docs/sidebars.js b/docs/sidebars.js index bc11ffa6..0cc0be91 100644 --- a/docs/sidebars.js +++ b/docs/sidebars.js @@ -75,6 +75,11 @@ const sidebars = { label: "Chat", }, "reference/configuration", + { + type: "doc", + id: "reference/api-sdk-overview", + label: "APIs and SDKs", + }, "support/contribute", "support/troubleshoot", ], diff --git a/src/api/docling.py b/src/api/docling.py index 22b709ef..2f9adcbd 100644 --- a/src/api/docling.py +++ b/src/api/docling.py @@ -1,5 +1,6 @@ """Docling service proxy endpoints.""" +import os import socket import struct from pathlib import Path @@ -73,9 +74,15 @@ def determine_docling_host() -> str: return "localhost" -# Detect the host IP once at startup -HOST_IP = determine_docling_host() -DOCLING_SERVICE_URL = f"http://{HOST_IP}:5001" +# Use explicit URL if provided, otherwise auto-detect host +_docling_url_override = os.getenv("DOCLING_SERVE_URL") +if _docling_url_override: + DOCLING_SERVICE_URL = _docling_url_override.rstrip("/") + HOST_IP = _docling_url_override # For display in health responses + logger.info("Using DOCLING_SERVE_URL override: %s", DOCLING_SERVICE_URL) +else: + HOST_IP = determine_docling_host() + DOCLING_SERVICE_URL = f"http://{HOST_IP}:5001" async def health(request: Request) -> JSONResponse: