From 43ddfae5de732e2271fdbb0415500639446bb685 Mon Sep 17 00:00:00 2001
From: owaiskazi19 <owaiskazi19@gmail.com>
Date: Tue, 2 Apr 2024 18:31:00 +0000
Subject: [PATCH 1/9] Added blogpost for Flow Framework

Signed-off-by: owaiskazi19 <owaiskazi19@gmail.com>
---
 _community_members/amitgalitz.md              |   2 +-
 _community_members/jpalis.md                  |  23 ++++
 ...-Automation-for-OpenSearch-ML-Use-Cases.md | 129 ++++++++++++++++++
 assets/media/community/members/jpalis.jpg     | Bin 0 -> 27142 bytes
 4 files changed, 153 insertions(+), 1 deletion(-)
 create mode 100644 _community_members/jpalis.md
 create mode 100644 _posts/2024-04-05-Configurable-Automation-for-OpenSearch-ML-Use-Cases.md
 create mode 100644 assets/media/community/members/jpalis.jpg

diff --git a/_community_members/amitgalitz.md b/_community_members/amitgalitz.md
index 6748ea7114..5aa829a492 100644
--- a/_community_members/amitgalitz.md
+++ b/_community_members/amitgalitz.md
@@ -20,4 +20,4 @@ personas:
 permalink: '/community/members/amit-galitzky.html'
 ---
 
-**Amit Galitzky** is a software engineer at Amazon Web Services. He focuses mostly on the Anomaly Detection plugin for OpenSearch.
\ No newline at end of file
+**Amit Galitzky** is a software engineer at Amazon Web Services. He focuses mostly on the Anomaly Detection and Flow Framework plugins for OpenSearch.
\ No newline at end of file
diff --git a/_community_members/jpalis.md b/_community_members/jpalis.md
new file mode 100644
index 0000000000..a32143e74f
--- /dev/null
+++ b/_community_members/jpalis.md
@@ -0,0 +1,23 @@
+---
+name: Josh Palis
+short_name: jpalis
+photo: '/assets/media/community/members/jpalis.jpg'
+title: 'OpenSearch Community Member: Josh Palis'
+primary_title: Josh Palis
+breadcrumbs:
+  icon: community
+  items:
+    - title: Community
+      url: /community/index.html
+    - title: Members
+      url: /community/members/index.html
+    - title: 'Josh Palis&apos;s Profile'
+      url: '/community/members/josh-palis.html'
+github: joshpalis
+job_title_and_company: 'Software engineer at Amazon Web Services'
+personas:
+  - author
+permalink: '/community/members/josh-palis.html'
+---
+
+**Josh Palis** is a software engineer at Amazon Web Services. He focuses mostly on the Flow Framework plugin for OpenSearch.
\ No newline at end of file
diff --git a/_posts/2024-04-05-Configurable-Automation-for-OpenSearch-ML-Use-Cases.md b/_posts/2024-04-05-Configurable-Automation-for-OpenSearch-ML-Use-Cases.md
new file mode 100644
index 0000000000..a0554a9544
--- /dev/null
+++ b/_posts/2024-04-05-Configurable-Automation-for-OpenSearch-ML-Use-Cases.md
@@ -0,0 +1,129 @@
+---
+layout: post
+title: "Configurable Automation for OpenSearch ML Use Cases"
+authors:
+    - kazabdu
+    - amitgalitz
+    - dwiddis
+    - jpalis
+date: 2024-04-05
+categories:
+  - technical-posts
+meta_keywords: Flow Framework, OpenSearch plugins, Machine Learning
+meta_description: Explore the simplicity of integrating Machine Learning capabilities within OpenSearch through an innovative and groundbreaking framework designed to simplify complex setup tasks.
+---
+
+The current process of utilizing ML offerings in OpenSearch, such as Semantic Search, Hybrid Search, and Multimodal Search, often involves users grappling with complex setup and preprocessing tasks. Additionally, users must contend with verbose user queries, both of which can consume time and introduce errors.
+
+In this blog post, we introduce the OpenSearch Flow Framework plugin, released in version 2.13, designed to streamline this cumbersome process. By leveraging this plugin, users can simplify complex setups with just one click. Automated templates are provided, enabling users to create connectors, register models, deploy them, and register agents and tools through a single API call. This eliminates the need for users to navigate the complexities of calling multiple APIs and waiting for their responses.
+
+## Before Flow Framework
+
+Traditionally, setting up Semantic Search involved the following steps as outlined [here](https://opensearch.org/docs/latest/search-plugins/semantic-search/):
+
+a) Create a connector for a remote model with pre and post functions.
+b) Register an embedding model using the connectorID obtained from the previous step.
+c) Configure an ingest pipeline to generate vector embeddings using the modelID of the registered model.
+d) Create a k-NN index and add the pipeline created above.
+
+The aforementioned complex setup would typically demand users to acquire familiarity with the ML-Commons APIs of OpenSearch. However, we are simplifying this experience through the Flow Framework. Allow us to demonstrate this using the same example mentioned above, but this time leveraging the capabilities of the Flow Framework.
+
+## With Flow Framework
+
+In this example, we will configure the `semantic_search_with_cohere_embedding_query_enricher` workflow template. The workflow created using this template performs the following configuration steps:
+
+* Deploys an externally hosted Cohere model
+* Creates an ingest pipeline using the model
+* Creates a sample k-NN index and configures a search pipeline to define the default model ID for that index
+
+### Step 1: Create and Provision the workflow
+
+Using the `semantic_search_with_cohere_embedding_query_enricher` workflow template, we provision the workflow with just one required field - the API key for the Cohere Embed model.
+
+```
+POST /_plugins/_flow_framework/workflow?use_case=semantic_search_with_cohere_embedding_query_enricher&provision=true
+{
+    "create_connector.credential.key" : "<YOUR API KEY>"
+}
+```
+
+OpenSearch responds with a unique workflow ID, simplifying the tracking and management of the setup process:
+
+```
+{
+  "workflow_id" : "8xL8bowB8y25Tqfenm50"
+}
+```
+
+Note: The workflow in the previous step creates a default k-NN index. The default index name is `my-nlp-index`:
+
+```
+{
+  "create_index.name": "my-nlp-index"
+}
+```
+
+
+However, these defaults can be customized according to the values provided in the request body. For a comprehensive list of default parameter values for this workflow template, see [Cohere Embed semantic search defaults](https://github.com/opensearch-project/flow-framework/blob/2.13/src/main/resources/defaults/cohere-embedding-semantic-search-defaults.json).
+
+### Step 2: Ingest documents into the index
+
+Once the workflow is provisioned, documents can be ingested into the index created by the workflow:
+
+```
+PUT /my-nlp-index/_doc/1
+{
+  "passage_text": "Hello world",
+  "id": "s1"
+}
+```
+
+### Step 3: Perform vector search
+
+Performing a vector search on the index is equally straightforward. Using a neural query clause, users can easily retrieve relevant results.
+
+```
+GET /my-nlp-index/_search
+{
+  "_source": {
+    "excludes": [
+      "passage_embedding"
+    ]
+  },
+  "query": {
+    "neural": {
+      "passage_embedding": {
+        "query_text": "Hi world",
+        "k": 100
+      }
+    }
+  }
+}
+```
+
+With Flow Framework, we've simplified such complex setup process, enabling users to focus on their tasks without the burden of navigating complex APIs. Our goal is to empower users to leverage the power of OpenSearch seamlessly, unlocking new possibilities in their projects
+
+## Viewing workflow resources
+
+The workflow you created provisioned all the necessary resources for semantic search. To view the provisioned resources, call the Get Workflow Status API and provide the `workflowID` for your workflow:
+
+```
+GET /_plugins/_flow_framework/workflow/8xL8bowB8y25Tqfenm50/_status
+```
+
+## Additional Default Use Cases
+
+Explore more default use cases at [here](https://github.com/opensearch-project/flow-framework/tree/2.13/src/main/resources/substitutionTemplates), with their corresponding defaults stored [here](https://github.com/opensearch-project/flow-framework/tree/2.13/src/main/resources/defaults).
+
+## Creating Custom Use Cases
+
+Tailor templates according to your requirements. Sample templates are available [here](https://github.com/opensearch-project/flow-framework/tree/main/sample-templates), and refer to our documentation [here](https://opensearch.org/docs/latest/automating-configurations/index/) for further guidance.
+
+## Next Steps
+
+In our ongoing efforts to enhance user experience and streamline the process of provisioning the ML offerings of OpenSearch, we have an exciting plan in the pipeline. We aim to develop a user-friendly drag-and-drop frontend interface. This interface will simplify complex steps involved in provisioning ML capabilities, thereby allowing users to seamlessly configure and deploy their workflows with ease. Stay tuned for updates on this exciting development!
+If you have any comments or suggestions please comment on the RFCs:
+
+1. Backend: https://github.com/opensearch-project/OpenSearch/issues/9213
+2. Frontend: https://github.com/opensearch-project/OpenSearch-Dashboards/issues/4755
+3. Github Repository: https://github.com/opensearch-project/flow-framework and https://github.com/opensearch-project/dashboards-flow-framework
diff --git a/assets/media/community/members/jpalis.jpg b/assets/media/community/members/jpalis.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..28d0cb055d4848944259f3f4c1984b0c1baf5cc1
GIT binary patch
literal 27142
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
HP#^!<37|hA

literal 0
HcmV?d00001


From 830a1a1e0a678745a38be120bf866bbc2f9304b0 Mon Sep 17 00:00:00 2001
From: Fanit Kolchina <kolchfa@amazon.com>
Date: Wed, 3 Apr 2024 11:54:47 -0400
Subject: [PATCH 2/9] Blog rewrites

Signed-off-by: Fanit Kolchina <kolchfa@amazon.com>
---
 ...-Automation-for-OpenSearch-ML-Use-Cases.md | 65 ++++++++++---------
 1 file changed, 33 insertions(+), 32 deletions(-)

diff --git a/_posts/2024-04-05-Configurable-Automation-for-OpenSearch-ML-Use-Cases.md b/_posts/2024-04-05-Configurable-Automation-for-OpenSearch-ML-Use-Cases.md
index a0554a9544..8e7107ba57 100644
--- a/_posts/2024-04-05-Configurable-Automation-for-OpenSearch-ML-Use-Cases.md
+++ b/_posts/2024-04-05-Configurable-Automation-for-OpenSearch-ML-Use-Cases.md
@@ -1,6 +1,6 @@
 ---
 layout: post
-title: "Configurable Automation for OpenSearch ML Use Cases"
+title: "Configurable automation for OpenSearch ML use cases"
 authors:
     - kazabdu
     - amitgalitz
@@ -13,34 +13,34 @@ meta_keywords: Flow Framework, OpenSearch plugins, Machine Learning
 meta_description: Explore the simplicity of integrating Machine Learning capabilities within OpenSearch through an innovative and groundbreaking framework designed to simplify complex setup tasks.
 ---
 
-The current process of utilizing ML offerings in OpenSearch, such as Semantic Search, Hybrid Search, and Multimodal Search, often involves users grappling with complex setup and preprocessing tasks. Additionally, users must contend with verbose user queries, both of which can consume time and introduce errors.
+In OpenSearch, to use ML offerings, such as semantic, hybrid, and multimodal search, you often have to grapple with complex setup and preprocessing tasks. Additionally, you must write verbose queries, which can be time-consuming and error-prone.
 
-In this blog post, we introduce the OpenSearch Flow Framework plugin, released in version 2.13, designed to streamline this cumbersome process. By leveraging this plugin, users can simplify complex setups with just one click. Automated templates are provided, enabling users to create connectors, register models, deploy them, and register agents and tools through a single API call. This eliminates the need for users to navigate the complexities of calling multiple APIs and waiting for their responses.
+In this blog post, we introduce the OpenSearch Flow Framework plugin, released in version 2.13, designed to streamline this cumbersome process. By using this plugin, you can simplify complex setups with just one click. We've provided automated templates, enabling you to create connectors, register models, deploy them, and register agents and tools through a single API call. This eliminates the complexity of calling multiple APIs and orchestrating setups based on the responses.
 
 ## Before Flow Framework
 
-Traditionally, setting up Semantic Search involved the following steps as outlined [here](https://opensearch.org/docs/latest/search-plugins/semantic-search/):
+In the past, setting up semantic search involved the steps outlined in the [Semantic search documentation](https://opensearch.org/docs/latest/search-plugins/semantic-search/):
 
-a) Create a connector for a remote model with pre and post functions.
-b) Register an embedding model using the connectorID obtained from the previous step.
-c) Configure an ingest pipeline to generate vector embeddings using the modelID of the registered model.
-d) Create a k-NN index and add the pipeline created above.
+1. Create a connector for a remote model, specifying pre- and post-processing functions.
+1. Register an embedding model using the connector ID obtained from the previous step.
+1. Configure an ingest pipeline to generate vector embeddings using the model ID of the registered model.
+1. Create a k-NN index and add the pipeline created in the previous step.
 
-The aforementioned complex setup would typically demand users to acquire familiarity with the ML-Commons APIs of OpenSearch. However, we are simplifying this experience through the Flow Framework. Allow us to demonstrate this using the same example mentioned above, but this time leveraging the capabilities of the Flow Framework.
+This complex setup typically required you to be familiar with the OpenSearch ML Commons APIs. However, we are simplifying this experience through the Flow Framework. Let's demonstrate how the Flow Framework simplifies this process using the preceding semantic search example.
 
 ## With Flow Framework
 
-In this example, we will configure the `semantic_search_with_cohere_embedding_query_enricher` workflow template. The workflow created using this template performs the following configuration steps:
+In this example, you will configure the `semantic_search_with_cohere_embedding_query_enricher` workflow template. The workflow created using this template performs the following configuration steps:
 
 * Deploys an externally hosted Cohere model
 * Creates an ingest pipeline using the model
 * Creates a sample k-NN index and configures a search pipeline to define the default model ID for that index
 
-### Step 1: Create and Provision the workflow
+### Step 1: Create and provision the workflow
 
-Using the `semantic_search_with_cohere_embedding_query_enricher` workflow template, we provision the workflow with just one required field - the API key for the Cohere Embed model.
+Using the `semantic_search_with_cohere_embedding_query_enricher` workflow template, you provision the workflow with just one required field---the API key for the Cohere Embed model:
 
-```
+```json
 POST /_plugins/_flow_framework/workflow?use_case=semantic_search_with_cohere_embedding_query_enricher&provision=true
 {
     "create_connector.credential.key" : "<YOUR API KEY>"
@@ -49,7 +49,7 @@ POST /_plugins/_flow_framework/workflow?use_case=semantic_search_with_cohere_emb
 
 OpenSearch responds with a unique workflow ID, simplifying the tracking and management of the setup process:
 
-```
+```json
 {
   "workflow_id" : "8xL8bowB8y25Tqfenm50"
 }
@@ -57,20 +57,19 @@ OpenSearch responds with a unique workflow ID, simplifying the tracking and mana
 
 Note: The workflow in the previous step creates a default k-NN index. The default index name is `my-nlp-index`:
 
-```
+```json
 {
   "create_index.name": "my-nlp-index"
 }
 ```
 
-
-However, these defaults can be customized according to the values provided in the request body. For a comprehensive list of default parameter values for this workflow template, see [Cohere Embed semantic search defaults](https://github.com/opensearch-project/flow-framework/blob/2.13/src/main/resources/defaults/cohere-embedding-semantic-search-defaults.json).
+You can customize the template default values by providing the new values in the request body. For a comprehensive list of default parameter values for this workflow template, see [Cohere Embed semantic search defaults](https://github.com/opensearch-project/flow-framework/blob/2.13/src/main/resources/defaults/cohere-embedding-semantic-search-defaults.json).
 
 ### Step 2: Ingest documents into the index
 
-Once the workflow is provisioned, documents can be ingested into the index created by the workflow:
+Once the workflow is provisioned, you can ingest documents into the index created by the workflow:
 
-```
+```json
 PUT /my-nlp-index/_doc/1
 {
   "passage_text": "Hello world",
@@ -80,9 +79,9 @@ PUT /my-nlp-index/_doc/1
 
 ### Step 3: Perform vector search
 
-Performing a vector search on the index is equally straightforward. Using a neural query clause, users can easily retrieve relevant results.
+Performing a vector search on the index is equally straightforward. Using a neural query clause, you can easily retrieve relevant results:
 
-```
+```json
 GET /my-nlp-index/_search
 {
   "_source": {
@@ -101,7 +100,7 @@ GET /my-nlp-index/_search
 }
 ```
 
-With Flow Framework, we've simplified such complex setup process, enabling users to focus on their tasks without the burden of navigating complex APIs. Our goal is to empower users to leverage the power of OpenSearch seamlessly, unlocking new possibilities in their projects
+With Flow Framework, we've simplified this complex setup process, enabling you to focus on your tasks without the burden of navigating complex APIs. Our goal is for you to use OpenSearch seamlessly, unlocking new possibilities in your projects.
 
 ## Viewing workflow resources
 
@@ -111,19 +110,21 @@ The workflow you created provisioned all the necessary resources for semantic se
 GET /_plugins/_flow_framework/workflow/8xL8bowB8y25Tqfenm50/_status
 ```
 
-## Additional Default Use Cases
+## Additional default use cases
+
+You can explore more default use cases by viewing [substitution templates](https://github.com/opensearch-project/flow-framework/tree/2.13/src/main/resources/substitutionTemplates) with their corresponding [defaults](https://github.com/opensearch-project/flow-framework/tree/2.13/src/main/resources/defaults).
 
-Explore more default use cases at [here](https://github.com/opensearch-project/flow-framework/tree/2.13/src/main/resources/substitutionTemplates), with their corresponding defaults stored [here](https://github.com/opensearch-project/flow-framework/tree/2.13/src/main/resources/defaults).
+## Creating custom use cases
 
-## Creating Custom Use Cases
+You can tailor templates according to your requirements. For more information, see [sample templates](https://github.com/opensearch-project/flow-framework/tree/main/sample-templates) and the [documentation](https://opensearch.org/docs/latest/automating-configurations/index/).
 
-Tailor templates according to your requirements. Sample templates are available [here](https://github.com/opensearch-project/flow-framework/tree/main/sample-templates), and refer to our documentation [here](https://opensearch.org/docs/latest/automating-configurations/index/) for further guidance.
+## Next steps
 
-## Next Steps
+In our ongoing efforts to enhance user experience and streamline the process of provisioning the ML offerings of OpenSearch, we have an exciting plan in the pipeline. We aim to develop a user-friendly drag-and-drop frontend interface. This interface will simplify complex steps involved in provisioning ML features, thereby allowing you to seamlessly configure and deploy your workflows. Stay tuned for updates on this exciting development!
 
-In our ongoing efforts to enhance user experience and streamline the process of provisioning the ML offerings of OpenSearch, we have an exciting plan in the pipeline. We aim to develop a user-friendly drag-and-drop frontend interface. This interface will simplify complex steps involved in provisioning ML capabilities, thereby allowing users to seamlessly configure and deploy their workflows with ease. Stay tuned for updates on this exciting development!
-If you have any comments or suggestions please comment on the RFCs:
+If you have any comments or suggestions, please comment on the RFCs:
 
-1. Backend: https://github.com/opensearch-project/OpenSearch/issues/9213
-2. Frontend: https://github.com/opensearch-project/OpenSearch-Dashboards/issues/4755
-3. Github Repository: https://github.com/opensearch-project/flow-framework and https://github.com/opensearch-project/dashboards-flow-framework
+- [Backend RFC](https://github.com/opensearch-project/OpenSearch/issues/9213)
+- [Frontend RFC](https://github.com/opensearch-project/OpenSearch-Dashboards/issues/4755)
+- [Flow Framework GitHub repository](https://github.com/opensearch-project/flow-framework)
+- [Flow Framework Dashboards GitHub repository](https://github.com/opensearch-project/dashboards-flow-framework)

From 8c9810ab5b850cc79c154c8ac13155973fe9e61b Mon Sep 17 00:00:00 2001
From: owaiskazi19 <owaiskazi19@gmail.com>
Date: Wed, 3 Apr 2024 16:11:16 +0000
Subject: [PATCH 3/9] Added additional team members

Signed-off-by: owaiskazi19 <owaiskazi19@gmail.com>
---
 _community_members/hnyng.md                                    | 2 +-
 _community_members/ohltyler.md                                 | 2 +-
 ...4-05-Configurable-Automation-for-OpenSearch-ML-Use-Cases.md | 3 +++
 3 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/_community_members/hnyng.md b/_community_members/hnyng.md
index cd88dd2877..487793051a 100644
--- a/_community_members/hnyng.md
+++ b/_community_members/hnyng.md
@@ -20,4 +20,4 @@ personas:
 permalink: '/community/members/jackie-han.html'
 ---
 
-Jackie Han is a software engineer at AWS. focusing mostly on anomaly detection in OpenSearch.
\ No newline at end of file
+Jackie Han is a software engineer at AWS. focusing mostly on anomaly detection and flow framework in OpenSearch.
\ No newline at end of file
diff --git a/_community_members/ohltyler.md b/_community_members/ohltyler.md
index 02235ee89e..44a0c0ed9c 100644
--- a/_community_members/ohltyler.md
+++ b/_community_members/ohltyler.md
@@ -20,4 +20,4 @@ personas:
 permalink: '/community/members/tyler-ohlsen.html'
 ---
 
-**Tyler Ohlsen** is a Software Engineer at AWS, focusing on anomaly detection in OpenSearch.
\ No newline at end of file
+**Tyler Ohlsen** is a Software Engineer at AWS, focusing on anomaly detection and flow framework in OpenSearch.
\ No newline at end of file
diff --git a/_posts/2024-04-05-Configurable-Automation-for-OpenSearch-ML-Use-Cases.md b/_posts/2024-04-05-Configurable-Automation-for-OpenSearch-ML-Use-Cases.md
index 8e7107ba57..d7982c2b19 100644
--- a/_posts/2024-04-05-Configurable-Automation-for-OpenSearch-ML-Use-Cases.md
+++ b/_posts/2024-04-05-Configurable-Automation-for-OpenSearch-ML-Use-Cases.md
@@ -6,6 +6,9 @@ authors:
     - amitgalitz
     - dwiddis
     - jpalis
+    - hnyng
+    - ohltyler
+    - minalsha
 date: 2024-04-05
 categories:
   - technical-posts

From ed4c93d0cb9dc0b4b441c25b989a0e373abfbf54 Mon Sep 17 00:00:00 2001
From: owaiskazi19 <owaiskazi19@gmail.com>
Date: Wed, 3 Apr 2024 16:50:06 +0000
Subject: [PATCH 4/9] Added release link

Signed-off-by: owaiskazi19 <owaiskazi19@gmail.com>
---
 ...04-05-Configurable-Automation-for-OpenSearch-ML-Use-Cases.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/_posts/2024-04-05-Configurable-Automation-for-OpenSearch-ML-Use-Cases.md b/_posts/2024-04-05-Configurable-Automation-for-OpenSearch-ML-Use-Cases.md
index d7982c2b19..42f83508cc 100644
--- a/_posts/2024-04-05-Configurable-Automation-for-OpenSearch-ML-Use-Cases.md
+++ b/_posts/2024-04-05-Configurable-Automation-for-OpenSearch-ML-Use-Cases.md
@@ -18,7 +18,7 @@ meta_description: Explore the simplicity of integrating Machine Learning capabil
 
 In OpenSearch, to use ML offerings, such as semantic, hybrid, and multimodal search, you often have to grapple with complex setup and preprocessing tasks. Additionally, you must write verbose queries, which can be time-consuming and error-prone.
 
-In this blog post, we introduce the OpenSearch Flow Framework plugin, released in version 2.13, designed to streamline this cumbersome process. By using this plugin, you can simplify complex setups with just one click. We've provided automated templates, enabling you to create connectors, register models, deploy them, and register agents and tools through a single API call. This eliminates the complexity of calling multiple APIs and orchestrating setups based on the responses.
+In this blog post, we introduce the OpenSearch Flow Framework plugin, [released in version 2.13](https://opensearch.org/blog/2.13-is-ready-for-download/), designed to streamline this cumbersome process. By using this plugin, you can simplify complex setups with just one click. We've provided automated templates, enabling you to create connectors, register models, deploy them, and register agents and tools through a single API call. This eliminates the complexity of calling multiple APIs and orchestrating setups based on the responses.
 
 ## Before Flow Framework
 

From f935dd9165429a76a79d42d4fa817b70dea34a95 Mon Sep 17 00:00:00 2001
From: kolchfa-aws <105444904+kolchfa-aws@users.noreply.github.com>
Date: Thu, 4 Apr 2024 10:33:18 -0400
Subject: [PATCH 5/9] Apply suggestions from code review

Co-authored-by: Nathan Bower <nbower@amazon.com>
Signed-off-by: kolchfa-aws <105444904+kolchfa-aws@users.noreply.github.com>
---
 _community_members/amitgalitz.md              |  2 +-
 _community_members/hnyng.md                   |  2 +-
 _community_members/jpalis.md                  |  2 +-
 _community_members/ohltyler.md                |  2 +-
 ...-Automation-for-OpenSearch-ML-Use-Cases.md | 24 +++++++++----------
 5 files changed, 16 insertions(+), 16 deletions(-)

diff --git a/_community_members/amitgalitz.md b/_community_members/amitgalitz.md
index 5aa829a492..67f210cfb1 100644
--- a/_community_members/amitgalitz.md
+++ b/_community_members/amitgalitz.md
@@ -20,4 +20,4 @@ personas:
 permalink: '/community/members/amit-galitzky.html'
 ---
 
-**Amit Galitzky** is a software engineer at Amazon Web Services. He focuses mostly on the Anomaly Detection and Flow Framework plugins for OpenSearch.
\ No newline at end of file
+**Amit Galitzky** is a software engineer at Amazon Web Services focusing mostly on the OpenSearch Anomaly Detection and Flow Framework plugins.
\ No newline at end of file
diff --git a/_community_members/hnyng.md b/_community_members/hnyng.md
index 487793051a..0d43b7d25d 100644
--- a/_community_members/hnyng.md
+++ b/_community_members/hnyng.md
@@ -20,4 +20,4 @@ personas:
 permalink: '/community/members/jackie-han.html'
 ---
 
-Jackie Han is a software engineer at AWS. focusing mostly on anomaly detection and flow framework in OpenSearch.
\ No newline at end of file
+Jackie Han is a software engineer at Amazon Web Services focusing mostly on the OpenSearch Anomaly Detection and Flow Framework plugins.
\ No newline at end of file
diff --git a/_community_members/jpalis.md b/_community_members/jpalis.md
index a32143e74f..5fe69fd81e 100644
--- a/_community_members/jpalis.md
+++ b/_community_members/jpalis.md
@@ -20,4 +20,4 @@ personas:
 permalink: '/community/members/josh-palis.html'
 ---
 
-**Josh Palis** is a software engineer at Amazon Web Services. He focuses mostly on the Flow Framework plugin for OpenSearch.
\ No newline at end of file
+**Josh Palis** is a software engineer at Amazon Web Services focusing mostly on the OpenSearch Flow Framework plugin.
\ No newline at end of file
diff --git a/_community_members/ohltyler.md b/_community_members/ohltyler.md
index 44a0c0ed9c..9fb46655b5 100644
--- a/_community_members/ohltyler.md
+++ b/_community_members/ohltyler.md
@@ -20,4 +20,4 @@ personas:
 permalink: '/community/members/tyler-ohlsen.html'
 ---
 
-**Tyler Ohlsen** is a Software Engineer at AWS, focusing on anomaly detection and flow framework in OpenSearch.
\ No newline at end of file
+**Tyler Ohlsen** is a software engineer at Amazon Web Services focusing mostly on the OpenSearch Anomaly Detection and Flow Framework plugins.
\ No newline at end of file
diff --git a/_posts/2024-04-05-Configurable-Automation-for-OpenSearch-ML-Use-Cases.md b/_posts/2024-04-05-Configurable-Automation-for-OpenSearch-ML-Use-Cases.md
index 42f83508cc..84a6cd57f4 100644
--- a/_posts/2024-04-05-Configurable-Automation-for-OpenSearch-ML-Use-Cases.md
+++ b/_posts/2024-04-05-Configurable-Automation-for-OpenSearch-ML-Use-Cases.md
@@ -16,22 +16,22 @@ meta_keywords: Flow Framework, OpenSearch plugins, Machine Learning
 meta_description: Explore the simplicity of integrating Machine Learning capabilities within OpenSearch through an innovative and groundbreaking framework designed to simplify complex setup tasks.
 ---
 
-In OpenSearch, to use ML offerings, such as semantic, hybrid, and multimodal search, you often have to grapple with complex setup and preprocessing tasks. Additionally, you must write verbose queries, which can be time-consuming and error-prone.
+In OpenSearch, to use machine learning (ML) offerings, such as semantic, hybrid, and multimodal search, you often have to grapple with complex setup and preprocessing tasks. Additionally, you must write verbose queries, which can be a time-consuming and error-prone process.
 
-In this blog post, we introduce the OpenSearch Flow Framework plugin, [released in version 2.13](https://opensearch.org/blog/2.13-is-ready-for-download/), designed to streamline this cumbersome process. By using this plugin, you can simplify complex setups with just one click. We've provided automated templates, enabling you to create connectors, register models, deploy them, and register agents and tools through a single API call. This eliminates the complexity of calling multiple APIs and orchestrating setups based on the responses.
+In this blog post, we introduce the OpenSearch Flow Framework plugin, [released in version 2.13](https://opensearch.org/blog/2.13-is-ready-for-download/) and designed to streamline this cumbersome process. By using this plugin, you can simplify complex setups with just one click. We've provided automated templates, enabling you to create connectors, register models, deploy them, and register agents and tools through a single API call. This eliminates the complexity of calling multiple APIs and orchestrating setups based on the responses.
 
-## Before Flow Framework
+## Before the Flow Framework plugin
 
-In the past, setting up semantic search involved the steps outlined in the [Semantic search documentation](https://opensearch.org/docs/latest/search-plugins/semantic-search/):
+Previously, setting up semantic search involved the steps outlined in the [semantic search documentation](https://opensearch.org/docs/latest/search-plugins/semantic-search/):
 
 1. Create a connector for a remote model, specifying pre- and post-processing functions.
-1. Register an embedding model using the connector ID obtained from the previous step.
+1. Register an embedding model using the connector ID obtained in the previous step.
 1. Configure an ingest pipeline to generate vector embeddings using the model ID of the registered model.
 1. Create a k-NN index and add the pipeline created in the previous step.
 
-This complex setup typically required you to be familiar with the OpenSearch ML Commons APIs. However, we are simplifying this experience through the Flow Framework. Let's demonstrate how the Flow Framework simplifies this process using the preceding semantic search example.
+This complex setup typically required you to be familiar with the OpenSearch ML Commons APIs. However, we are simplifying this experience through the Flow Framework plugin. Let's demonstrate how the plugin simplifies this process using the preceding semantic search example.
 
-## With Flow Framework
+## With the Flow Framework plugin
 
 In this example, you will configure the `semantic_search_with_cohere_embedding_query_enricher` workflow template. The workflow created using this template performs the following configuration steps:
 
@@ -103,7 +103,7 @@ GET /my-nlp-index/_search
 }
 ```
 
-With Flow Framework, we've simplified this complex setup process, enabling you to focus on your tasks without the burden of navigating complex APIs. Our goal is for you to use OpenSearch seamlessly, unlocking new possibilities in your projects.
+With the Flow Framework plugin, we've simplified this complex setup process, enabling you to focus on your tasks without the burden of navigating complex APIs. Our goal is for you to use OpenSearch seamlessly, uncovering new possibilities in your projects.
 
 ## Viewing workflow resources
 
@@ -115,17 +115,17 @@ GET /_plugins/_flow_framework/workflow/8xL8bowB8y25Tqfenm50/_status
 
 ## Additional default use cases
 
-You can explore more default use cases by viewing [substitution templates](https://github.com/opensearch-project/flow-framework/tree/2.13/src/main/resources/substitutionTemplates) with their corresponding [defaults](https://github.com/opensearch-project/flow-framework/tree/2.13/src/main/resources/defaults).
+You can explore more default use cases by viewing [substitution templates](https://github.com/opensearch-project/flow-framework/tree/2.13/src/main/resources/substitutionTemplates) and their corresponding [defaults](https://github.com/opensearch-project/flow-framework/tree/2.13/src/main/resources/defaults).
 
 ## Creating custom use cases
 
-You can tailor templates according to your requirements. For more information, see [sample templates](https://github.com/opensearch-project/flow-framework/tree/main/sample-templates) and the [documentation](https://opensearch.org/docs/latest/automating-configurations/index/).
+You can tailor templates according to your requirements. For more information, see [these sample templates](https://github.com/opensearch-project/flow-framework/tree/main/sample-templates) and the [Automating configurations](https://opensearch.org/docs/latest/automating-configurations/index/) documentation.
 
 ## Next steps
 
-In our ongoing efforts to enhance user experience and streamline the process of provisioning the ML offerings of OpenSearch, we have an exciting plan in the pipeline. We aim to develop a user-friendly drag-and-drop frontend interface. This interface will simplify complex steps involved in provisioning ML features, thereby allowing you to seamlessly configure and deploy your workflows. Stay tuned for updates on this exciting development!
+In our ongoing efforts to enhance the user experience and streamline the process of provisioning OpenSearch ML offerings, we have some exciting plans on our roadmap. We aim to develop a user-friendly drag-and-drop frontend interface. This interface will simplify the complex steps involved in provisioning ML features, thereby allowing you to seamlessly configure and deploy your workflows. Stay tuned for updates on this exciting development!
 
-If you have any comments or suggestions, please comment on the RFCs:
+If you have any comments or suggestions, you can comment on the following RFCs:
 
 - [Backend RFC](https://github.com/opensearch-project/OpenSearch/issues/9213)
 - [Frontend RFC](https://github.com/opensearch-project/OpenSearch-Dashboards/issues/4755)

From cae73239de749434aa74fb6c687f1ba2a84c8822 Mon Sep 17 00:00:00 2001
From: owaiskazi19 <owaiskazi19@gmail.com>
Date: Fri, 5 Apr 2024 17:42:36 +0000
Subject: [PATCH 6/9] Addressed PR comments

Signed-off-by: owaiskazi19 <owaiskazi19@gmail.com>
---
 ...-Automation-for-OpenSearch-ML-Use-Cases.md | 20 +++++++------------
 1 file changed, 7 insertions(+), 13 deletions(-)

diff --git a/_posts/2024-04-05-Configurable-Automation-for-OpenSearch-ML-Use-Cases.md b/_posts/2024-04-05-Configurable-Automation-for-OpenSearch-ML-Use-Cases.md
index 84a6cd57f4..dc63baa2d7 100644
--- a/_posts/2024-04-05-Configurable-Automation-for-OpenSearch-ML-Use-Cases.md
+++ b/_posts/2024-04-05-Configurable-Automation-for-OpenSearch-ML-Use-Cases.md
@@ -22,14 +22,14 @@ In this blog post, we introduce the OpenSearch Flow Framework plugin, [released
 
 ## Before the Flow Framework plugin
 
-Previously, setting up semantic search involved the steps outlined in the [semantic search documentation](https://opensearch.org/docs/latest/search-plugins/semantic-search/):
+Previously, setting up semantic search involves *4 separate API* calls outlined in the [semantic search documentation](https://opensearch.org/docs/latest/search-plugins/semantic-search/):
 
 1. Create a connector for a remote model, specifying pre- and post-processing functions.
-1. Register an embedding model using the connector ID obtained in the previous step.
-1. Configure an ingest pipeline to generate vector embeddings using the model ID of the registered model.
-1. Create a k-NN index and add the pipeline created in the previous step.
+2. Register an embedding model using the connector ID obtained in the previous step.
+3. Configure an ingest pipeline to generate vector embeddings using the model ID of the registered model.
+4. Create a k-NN index and add the pipeline created in the previous step.
 
-This complex setup typically required you to be familiar with the OpenSearch ML Commons APIs. However, we are simplifying this experience through the Flow Framework plugin. Let's demonstrate how the plugin simplifies this process using the preceding semantic search example.
+This complex setup required you to be familiar with the OpenSearch ML Commons APIs. However, we are simplifying this experience through the Flow Framework plugin. Let's demonstrate how the plugin simplifies this process using the preceding semantic search example.
 
 ## With the Flow Framework plugin
 
@@ -58,13 +58,7 @@ OpenSearch responds with a unique workflow ID, simplifying the tracking and mana
 }
 ```
 
-Note: The workflow in the previous step creates a default k-NN index. The default index name is `my-nlp-index`:
-
-```json
-{
-  "create_index.name": "my-nlp-index"
-}
-```
+Note: The workflow in the previous step creates a default k-NN index. The default index name is `my-nlp-index`
 
 You can customize the template default values by providing the new values in the request body. For a comprehensive list of default parameter values for this workflow template, see [Cohere Embed semantic search defaults](https://github.com/opensearch-project/flow-framework/blob/2.13/src/main/resources/defaults/cohere-embedding-semantic-search-defaults.json).
 
@@ -73,7 +67,7 @@ You can customize the template default values by providing the new values in the
 Once the workflow is provisioned, you can ingest documents into the index created by the workflow:
 
 ```json
-PUT /my-nlp-index/_doc/1
+POST /my-nlp-index/_doc
 {
   "passage_text": "Hello world",
   "id": "s1"

From 296bc92e8e1e7c92507c2cccb8ffafc56d0b8269 Mon Sep 17 00:00:00 2001
From: owaiskazi19 <owaiskazi19@gmail.com>
Date: Fri, 5 Apr 2024 18:16:01 +0000
Subject: [PATCH 7/9] Minor comments

Signed-off-by: owaiskazi19 <owaiskazi19@gmail.com>
---
 ...5-Configurable-Automation-for-OpenSearch-ML-Use-Cases.md | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/_posts/2024-04-05-Configurable-Automation-for-OpenSearch-ML-Use-Cases.md b/_posts/2024-04-05-Configurable-Automation-for-OpenSearch-ML-Use-Cases.md
index dc63baa2d7..6aebdbaff0 100644
--- a/_posts/2024-04-05-Configurable-Automation-for-OpenSearch-ML-Use-Cases.md
+++ b/_posts/2024-04-05-Configurable-Automation-for-OpenSearch-ML-Use-Cases.md
@@ -18,11 +18,11 @@ meta_description: Explore the simplicity of integrating Machine Learning capabil
 
 In OpenSearch, to use machine learning (ML) offerings, such as semantic, hybrid, and multimodal search, you often have to grapple with complex setup and preprocessing tasks. Additionally, you must write verbose queries, which can be a time-consuming and error-prone process.
 
-In this blog post, we introduce the OpenSearch Flow Framework plugin, [released in version 2.13](https://opensearch.org/blog/2.13-is-ready-for-download/) and designed to streamline this cumbersome process. By using this plugin, you can simplify complex setups with just one click. We've provided automated templates, enabling you to create connectors, register models, deploy them, and register agents and tools through a single API call. This eliminates the complexity of calling multiple APIs and orchestrating setups based on the responses.
+In this blog post, we introduce the OpenSearch Flow Framework plugin, [released in version 2.13](https://opensearch.org/blog/2.13-is-ready-for-download/) and designed to streamline this cumbersome process. By using this plugin, you can simplify complex setups with just one simple API call. We've provided automated templates, enabling you to create connectors, register models, deploy them, and register agents and tools through a single API call. This eliminates the complexity of calling multiple APIs and orchestrating setups based on the responses.
 
 ## Before the Flow Framework plugin
 
-Previously, setting up semantic search involves *4 separate API* calls outlined in the [semantic search documentation](https://opensearch.org/docs/latest/search-plugins/semantic-search/):
+Previously, setting up semantic search involves *4 separate API calls* outlined in the [semantic search documentation](https://opensearch.org/docs/latest/search-plugins/semantic-search/):
 
 1. Create a connector for a remote model, specifying pre- and post-processing functions.
 2. Register an embedding model using the connector ID obtained in the previous step.
@@ -90,7 +90,7 @@ GET /my-nlp-index/_search
     "neural": {
       "passage_embedding": {
         "query_text": "Hi world",
-        "k": 100
+        "k": 10
       }
     }
   }

From 5dad66026a2b99f1a5b2bb04490e4eb921051042 Mon Sep 17 00:00:00 2001
From: Fanit Kolchina <kolchfa@amazon.com>
Date: Mon, 8 Apr 2024 09:12:16 -0400
Subject: [PATCH 8/9] Final editorial comments

Signed-off-by: Fanit Kolchina <kolchfa@amazon.com>
---
 ...-05-Configurable-Automation-for-OpenSearch-ML-Use-Cases.md | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/_posts/2024-04-05-Configurable-Automation-for-OpenSearch-ML-Use-Cases.md b/_posts/2024-04-05-Configurable-Automation-for-OpenSearch-ML-Use-Cases.md
index 6aebdbaff0..b4ece6cf00 100644
--- a/_posts/2024-04-05-Configurable-Automation-for-OpenSearch-ML-Use-Cases.md
+++ b/_posts/2024-04-05-Configurable-Automation-for-OpenSearch-ML-Use-Cases.md
@@ -22,7 +22,7 @@ In this blog post, we introduce the OpenSearch Flow Framework plugin, [released
 
 ## Before the Flow Framework plugin
 
-Previously, setting up semantic search involves *4 separate API calls* outlined in the [semantic search documentation](https://opensearch.org/docs/latest/search-plugins/semantic-search/):
+Previously, setting up semantic search involves *four separate API calls*, outlined in the [semantic search documentation](https://opensearch.org/docs/latest/search-plugins/semantic-search/):
 
 1. Create a connector for a remote model, specifying pre- and post-processing functions.
 2. Register an embedding model using the connector ID obtained in the previous step.
@@ -58,7 +58,7 @@ OpenSearch responds with a unique workflow ID, simplifying the tracking and mana
 }
 ```
 
-Note: The workflow in the previous step creates a default k-NN index. The default index name is `my-nlp-index`
+Note: The workflow in the previous step creates a default k-NN index. The default index name is `my-nlp-index`.
 
 You can customize the template default values by providing the new values in the request body. For a comprehensive list of default parameter values for this workflow template, see [Cohere Embed semantic search defaults](https://github.com/opensearch-project/flow-framework/blob/2.13/src/main/resources/defaults/cohere-embedding-semantic-search-defaults.json).
 

From bcd469be1d3347b2c4394f703b25c4b82f6f196c Mon Sep 17 00:00:00 2001
From: Fanit Kolchina <kolchfa@amazon.com>
Date: Mon, 8 Apr 2024 13:28:56 -0400
Subject: [PATCH 9/9] Change date

Signed-off-by: Fanit Kolchina <kolchfa@amazon.com>
---
 ...04-05-Configurable-Automation-for-OpenSearch-ML-Use-Cases.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/_posts/2024-04-05-Configurable-Automation-for-OpenSearch-ML-Use-Cases.md b/_posts/2024-04-05-Configurable-Automation-for-OpenSearch-ML-Use-Cases.md
index b4ece6cf00..5229f3d4a7 100644
--- a/_posts/2024-04-05-Configurable-Automation-for-OpenSearch-ML-Use-Cases.md
+++ b/_posts/2024-04-05-Configurable-Automation-for-OpenSearch-ML-Use-Cases.md
@@ -9,7 +9,7 @@ authors:
     - hnyng
     - ohltyler
     - minalsha
-date: 2024-04-05
+date: 2024-04-08
 categories:
   - technical-posts
 meta_keywords: Flow Framework, OpenSearch plugins, Machine Learning