diff --git a/src/backend/base/langflow/components/embeddings/__init__.py b/src/backend/base/langflow/components/embeddings/__init__.py
index 0d17fe357..e0ab27f16 100644
--- a/src/backend/base/langflow/components/embeddings/__init__.py
+++ b/src/backend/base/langflow/components/embeddings/__init__.py
@@ -2,6 +2,7 @@ from .aiml import AIMLEmbeddingsComponent
from .amazon_bedrock import AmazonBedrockEmbeddingsComponent
from .astra_vectorize import AstraVectorizeComponent
from .azure_openai import AzureOpenAIEmbeddingsComponent
+from .cloudflare import CloudflareWorkersAIEmbeddingsComponent
from .cohere import CohereEmbeddingsComponent
from .google_generative_ai import GoogleGenerativeAIEmbeddingsComponent
from .huggingface_inference_api import HuggingFaceInferenceAPIEmbeddingsComponent
@@ -19,6 +20,7 @@ __all__ = [
"AmazonBedrockEmbeddingsComponent",
"AstraVectorizeComponent",
"AzureOpenAIEmbeddingsComponent",
+ "CloudflareWorkersAIEmbeddingsComponent",
"CohereEmbeddingsComponent",
"EmbeddingSimilarityComponent",
"GoogleGenerativeAIEmbeddingsComponent",
diff --git a/src/backend/base/langflow/components/embeddings/cloudflare.py b/src/backend/base/langflow/components/embeddings/cloudflare.py
new file mode 100644
index 000000000..c92959867
--- /dev/null
+++ b/src/backend/base/langflow/components/embeddings/cloudflare.py
@@ -0,0 +1,80 @@
+from langchain_community.embeddings.cloudflare_workersai import CloudflareWorkersAIEmbeddings
+
+from langflow.base.models.model import LCModelComponent
+from langflow.field_typing import Embeddings
+from langflow.io import BoolInput, DictInput, IntInput, MessageTextInput, Output, SecretStrInput
+
+
+class CloudflareWorkersAIEmbeddingsComponent(LCModelComponent):
+ display_name: str = "Cloudflare Workers AI Embeddings"
+ description: str = "Generate embeddings using Cloudflare Workers AI models."
+ documentation: str = "https://python.langchain.com/docs/integrations/text_embedding/cloudflare_workersai/"
+ icon = "Cloudflare"
+ name = "CloudflareWorkersAIEmbeddings"
+
+ inputs = [
+ MessageTextInput(
+ name="account_id",
+ display_name="Cloudflare account ID",
+ info="Find your account ID https://developers.cloudflare.com/fundamentals/setup/find-account-and-zone-ids/#find-account-id-workers-and-pages",
+ required=True,
+ ),
+ SecretStrInput(
+ name="api_token",
+ display_name="Cloudflare API token",
+ info="Create an API token https://developers.cloudflare.com/fundamentals/api/get-started/create-token/",
+ required=True,
+ ),
+ MessageTextInput(
+ name="model_name",
+ display_name="Model Name",
+ info="List of supported models https://developers.cloudflare.com/workers-ai/models/#text-embeddings",
+ required=True,
+ value="@cf/baai/bge-base-en-v1.5"
+ ),
+ BoolInput(
+ name="strip_new_lines",
+ display_name="Strip New Lines",
+ advanced=True,
+ value=True,
+ ),
+ IntInput(
+ name="batch_size",
+ display_name="Batch Size",
+ advanced=True,
+ value=50,
+ ),
+ MessageTextInput(
+ name="api_base_url",
+ display_name="Cloudflare API base URL",
+ advanced=True,
+ value="https://api.cloudflare.com/client/v4/accounts",
+ ),
+ DictInput(
+ name="headers",
+ display_name="Headers",
+ info="Additional request headers",
+ is_list=True,
+ advanced=True,
+ ),
+ ]
+
+ outputs = [
+ Output(display_name="Embeddings", name="embeddings", method="build_embeddings"),
+ ]
+
+ def build_embeddings(self) -> Embeddings:
+ try:
+ embeddings = CloudflareWorkersAIEmbeddings(
+ account_id=self.account_id,
+ api_base_url=self.api_base_url,
+ api_token=self.api_token,
+ batch_size=self.batch_size,
+ headers=self.headers,
+ model_name=self.model_name,
+ strip_new_lines=self.strip_new_lines,
+ )
+ except Exception as e:
+ raise ValueError(f"Could not connect to CloudflareWorkersAIEmbeddings API: {str(e)}") from e
+
+ return embeddings
diff --git a/src/frontend/src/icons/Cloudflare/Cloudflare.jsx b/src/frontend/src/icons/Cloudflare/Cloudflare.jsx
new file mode 100644
index 000000000..5ce65fba8
--- /dev/null
+++ b/src/frontend/src/icons/Cloudflare/Cloudflare.jsx
@@ -0,0 +1,14 @@
+const SvgCloudflareIcon = (props) => (
+
+);
+
+export default SvgCloudflareIcon;
diff --git a/src/frontend/src/icons/Cloudflare/cloudflare.svg b/src/frontend/src/icons/Cloudflare/cloudflare.svg
new file mode 100644
index 000000000..76559f1d1
--- /dev/null
+++ b/src/frontend/src/icons/Cloudflare/cloudflare.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/frontend/src/icons/Cloudflare/index.tsx b/src/frontend/src/icons/Cloudflare/index.tsx
new file mode 100644
index 000000000..529badd4a
--- /dev/null
+++ b/src/frontend/src/icons/Cloudflare/index.tsx
@@ -0,0 +1,9 @@
+import React, { forwardRef } from "react";
+import SvgCloudflareIcon from "./Cloudflare";
+
+export const CloudflareIcon = forwardRef<
+ SVGSVGElement,
+ React.PropsWithChildren<{}>
+>((props, ref) => {
+ return ;
+});
diff --git a/src/frontend/src/utils/styleUtils.ts b/src/frontend/src/utils/styleUtils.ts
index 49fe972ab..5abb70c43 100644
--- a/src/frontend/src/utils/styleUtils.ts
+++ b/src/frontend/src/utils/styleUtils.ts
@@ -241,6 +241,7 @@ import { BotMessageSquareIcon } from "../icons/BotMessageSquare";
import { CassandraIcon } from "../icons/Cassandra";
import { ChromaIcon } from "../icons/ChromaIcon";
import { ClickhouseIcon } from "../icons/Clickhouse";
+import { CloudflareIcon } from "../icons/Cloudflare";
import { CohereIcon } from "../icons/Cohere";
import { ComposioIcon } from "../icons/Composio";
import { ConfluenceIcon } from "../icons/Confluence";
@@ -601,6 +602,7 @@ export const nodeIconsLucide: iconsType = {
Chroma: ChromaIcon,
Couchbase: CouchbaseIcon,
Clickhouse: ClickhouseIcon,
+ Cloudflare: CloudflareIcon,
AirbyteJSONLoader: AirbyteIcon,
AmazonBedrockEmbeddings: AWSIcon,
Amazon: AWSIcon,