From 118edaf3ed3aa3fbd6d16429cc804435f908bce0 Mon Sep 17 00:00:00 2001 From: Jonathan Minkin Date: Wed, 19 Feb 2025 17:47:34 -0800 Subject: [PATCH 1/9] Add opensearch support to dataprep Signed-off-by: Jonathan Minkin --- helm-charts/common/data-prep/Chart.yaml | 4 +++ .../common/data-prep/milvus-values.yaml | 2 ++ .../common/data-prep/opensearch-values.yaml | 27 +++++++++++++++++++ .../common/data-prep/qdrant-values.yaml | 2 ++ .../common/data-prep/redis-values.yaml | 4 +++ .../common/data-prep/templates/configmap.yaml | 18 +++++++++++++ helm-charts/common/data-prep/values.yaml | 13 +++++++++ 7 files changed, 70 insertions(+) create mode 100644 helm-charts/common/data-prep/opensearch-values.yaml diff --git a/helm-charts/common/data-prep/Chart.yaml b/helm-charts/common/data-prep/Chart.yaml index 829b6885d..2cdf9a198 100644 --- a/helm-charts/common/data-prep/Chart.yaml +++ b/helm-charts/common/data-prep/Chart.yaml @@ -28,3 +28,7 @@ dependencies: - name: commonlib version: 0-latest repository: "file://../commonlib" + - name: opensearch + version: 2.31.0 + repository: https://opensearch-project.github.io/helm-charts + condition: opensearch.enabled diff --git a/helm-charts/common/data-prep/milvus-values.yaml b/helm-charts/common/data-prep/milvus-values.yaml index d0d458d14..45bcb1773 100644 --- a/helm-charts/common/data-prep/milvus-values.yaml +++ b/helm-charts/common/data-prep/milvus-values.yaml @@ -22,6 +22,8 @@ milvus: enabled: false redis-vector-db: enabled: false +opensearch: + enabled: false tei: enabled: true diff --git a/helm-charts/common/data-prep/opensearch-values.yaml b/helm-charts/common/data-prep/opensearch-values.yaml new file mode 100644 index 000000000..cf266e9de --- /dev/null +++ b/helm-charts/common/data-prep/opensearch-values.yaml @@ -0,0 +1,27 @@ +# Copyright (C) 2024 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +DATAPREP_BACKEND: "OPENSEARCH" +OPENSEARCH_HOST: "opensearch-cluster-master" +OPENSEARCH_PORT: 9200 +OPENSEARCH_INITIAL_ADMIN_PASSWORD: "" +OPENSEARCH_SSL: false +INDEX_NAME: "rag-opensearch" +KEY_INDEX_NAME: "file-keys" +TIMEOUT_SECONDS: 600 +SEARCH_BATCH_SIZE: 10 + +tei: + enabled: true +redis-vector-db: + enabled: false +milvus: + enabled: false +opensearch: + enabled: true + persistence: + enabled: false + singleNode: true + extraEnvs: + - name: OPENSEARCH_INITIAL_ADMIN_PASSWORD + value: "" # must match value above or data-prep cannot access Opensearch diff --git a/helm-charts/common/data-prep/qdrant-values.yaml b/helm-charts/common/data-prep/qdrant-values.yaml index c086e41c7..5c83b2382 100644 --- a/helm-charts/common/data-prep/qdrant-values.yaml +++ b/helm-charts/common/data-prep/qdrant-values.yaml @@ -7,6 +7,8 @@ redis-vector-db: enabled: false milvus: enabled: false +opensearch: + enabled: false qdrant: enabled: true tag: "v1.13.1" diff --git a/helm-charts/common/data-prep/redis-values.yaml b/helm-charts/common/data-prep/redis-values.yaml index 54853db04..ce8a903ea 100644 --- a/helm-charts/common/data-prep/redis-values.yaml +++ b/helm-charts/common/data-prep/redis-values.yaml @@ -7,3 +7,7 @@ redis-vector-db: enabled: true milvus: enabled: false +qdrant: + enabled: false +opensearch: + enabled: false diff --git a/helm-charts/common/data-prep/templates/configmap.yaml b/helm-charts/common/data-prep/templates/configmap.yaml index 6d5d8b077..88a958102 100644 --- a/helm-charts/common/data-prep/templates/configmap.yaml +++ b/helm-charts/common/data-prep/templates/configmap.yaml @@ -48,6 +48,24 @@ data: QDRANT_PORT: {{ .Values.QDRANT_PORT | quote }} COLLECTION_NAME: {{ .Values.COLLECTION_NAME | quote }} EMBED_MODEL: {{ .Values.LOCAL_EMBEDDING_MODEL | default "" | quote }} + {{- else if eq "OPENSEARCH" .Values.DATAPREP_BACKEND }} + DATAPREP_COMPONENT_NAME: "OPEA_DATAPREP_OPENSEARCH" + {{- if .Values.OPENSEARCH_HOST }} + OPENSEARCH_HOST: {{ .Values.OPENSEARCH_HOST }} + {{- else }} + OPENSEARCH_HOST: "opensearch-cluster-master" + {{- end}} + OPENSEARCH_PORT: {{ .Values.OPENSEARCH_PORT | quote }} + {{- if lt (len .Values.OPENSEARCH_INITIAL_ADMIN_PASSWORD) 8 }} + {{ fail "OPENSEARCH_INITIAL_ADMIN_PASSWORD must be at least 8 characters" }} + {{- end }} + OPENSEARCH_INITIAL_ADMIN_PASSWORD: {{ .Values.OPENSEARCH_INITIAL_ADMIN_PASSWORD | quote }} + OPENSEARCH_SSL: {{ .Values.OPENSEARCH_SSL | quote }} + INDEX_NAME: {{ .Values.INDEX_NAME | quote }} + KEY_INDEX_NAME: {{ .Values.KEY_INDEX_NAME | quote }} + TIMEOUT_SECONDS: {{ .Values.TIMEOUT_SECONDS | quote }} + SEARCH_BATCH_SIZE: {{ .Values.SEARCH_BATCH_SIZE | quote }} + EMBED_MODEL: {{ .Values.LOCAL_EMBEDDING_MODEL | default "" | quote }} {{- else }} {{- cat "Invalid DATAPREP_BACKEND:" .Values.DATAPREP_BACKEND | fail }} {{- end }} diff --git a/helm-charts/common/data-prep/values.yaml b/helm-charts/common/data-prep/values.yaml index 2e74d1b9e..872a75161 100644 --- a/helm-charts/common/data-prep/values.yaml +++ b/helm-charts/common/data-prep/values.yaml @@ -33,6 +33,17 @@ SEARCH_BATCH_SIZE: 10 # QDRANT_PORT: 6333 # COLLECTION_NAME: "rag_qdrant" +# Uncomment and set the following settings to use Opensearch as a vector-DB backend +# DATAPREP_BACKEND: "OPENSEARCH" +# OPENSEARCH_HOST: "" +# OPENSEARCH_PORT: 9200 +# OPENSEARCH_INITIAL_ADMIN_PASSWORD: "" +# OPENSEARCH_SSL: false +# INDEX_NAME: "rag-opensearch" +# KEY_INDEX_NAME: "file-keys" +# TIMEOUT_SECONDS: 600 +# SEARCH_BATCH_SIZE: 10 + # data-prep can do embedding locally or talk to remote TEI service to do embedding. # TEI_EMBEDDING_ENDPOINT takes precedence over LOCAL_EMBEDDING_MODEL. # TEI inference service URL, e.g. http://: @@ -147,3 +158,5 @@ redis-vector-db: enabled: false qdrant: enabled: false +opensearch: + enabled: false From 1df5fc5c4078faa80f9522b25c0d008613a344b0 Mon Sep 17 00:00:00 2001 From: Jonathan Minkin Date: Thu, 20 Feb 2025 10:33:44 -0800 Subject: [PATCH 2/9] Add data-prep installation instructions using opensearch Signed-off-by: Jonathan Minkin --- helm-charts/common/data-prep/README.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/helm-charts/common/data-prep/README.md b/helm-charts/common/data-prep/README.md index f5e9a242c..0d4b13e5e 100644 --- a/helm-charts/common/data-prep/README.md +++ b/helm-charts/common/data-prep/README.md @@ -14,6 +14,8 @@ Helm chart for deploying OPEA data-prep microservice. - Qdrant DB: please refer to [qdrant-helm](https://github.com/qdrant/qdrant-helm/tree/qdrant-1.13.1/charts/qdrant) for more information. +- OpenSearch DB: please refer to [opensearch-helm](https://artifacthub.io/packages/helm/opensearch-project-helm-charts/opensearch) for more information. + First, you need to install the `tei` helm chart and one of the vector DB service, i.e. `redis-vector-db` chart. After you've deployed dependency charts successfully, please run `kubectl get svc` to get the service endpoint URL respectively, i.e. `http://tei:80`, `redis://redis-vector-db:6379`. @@ -40,6 +42,12 @@ helm install data-prep . --set TEI_EMBEDDING_ENDPOINT=${TEI_EMBEDDING_ENDPOINT} # export DATAPREP_BACKEND="QDRANT" # export DB_HOST="qdrant" # helm install data-prep . --set TEI_EMBEDDING_ENDPOINT=${TEI_EMBEDDING_ENDPOINT} --set global.HUGGINGFACEHUB_API_TOKEN=${HF_TOKEN} --set DATAPREP_BACKEND=${DATAPREP_BACKEND} --set QDRANT_HOST=${DB_HOST},QDRANT_PORT=6333,COLLECTION_NAME=rag_qdrant + +# Install data-prep with OpenSearch DB backend +# export DATAPREP_BACKEND="OPENSEARCH" +# export DB_HOST="opensearch-cluster-master" +# export OPENSEARCH_INITIAL_ADMIN_PASSWORD="insert-your-initial-admin-password" +# helm install data-prep . --set TEI_EMBEDDING_ENDPOINT=${TEI_EMBEDDING_ENDPOINT} --set global.HUGGINGFACEHUB_API_TOKEN=${HF_TOKEN} --set DATAPREP_BACKEND=${DATAPREP_BACKEND} --set OPENSEARCH_HOST=${DB_HOST} --set OPENSEARCH_INITIAL_ADMIN_PASSWORD=${OPENSEARCH_INITIAL_ADMIN_PASSWORD} --set "opensearch.extraEnvs[0].name=OPENSEARCH_INITIAL_ADMIN_PASSWORD,opensearch.extraEnvs[0].value=${OPENSEARCH_INITIAL_ADMIN_PASSWORD}" -f opensearch-values.yaml ``` ## Verify From 5d68d91027fd11c855c78892e49ba2466ba39877 Mon Sep 17 00:00:00 2001 From: Jonathan Minkin Date: Thu, 20 Feb 2025 11:38:16 -0800 Subject: [PATCH 3/9] Update default values for index name in data prep Signed-off-by: Jonathan Minkin --- helm-charts/common/data-prep/opensearch-values.yaml | 4 ++-- helm-charts/common/data-prep/templates/configmap.yaml | 2 +- helm-charts/common/data-prep/values.yaml | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/helm-charts/common/data-prep/opensearch-values.yaml b/helm-charts/common/data-prep/opensearch-values.yaml index cf266e9de..36ab0d9ec 100644 --- a/helm-charts/common/data-prep/opensearch-values.yaml +++ b/helm-charts/common/data-prep/opensearch-values.yaml @@ -6,7 +6,7 @@ OPENSEARCH_HOST: "opensearch-cluster-master" OPENSEARCH_PORT: 9200 OPENSEARCH_INITIAL_ADMIN_PASSWORD: "" OPENSEARCH_SSL: false -INDEX_NAME: "rag-opensearch" +INDEX_NAME: "rag_opensearch" KEY_INDEX_NAME: "file-keys" TIMEOUT_SECONDS: 600 SEARCH_BATCH_SIZE: 10 @@ -24,4 +24,4 @@ opensearch: singleNode: true extraEnvs: - name: OPENSEARCH_INITIAL_ADMIN_PASSWORD - value: "" # must match value above or data-prep cannot access Opensearch + value: "" # must match value above or data-prep cannot access OpenSearch diff --git a/helm-charts/common/data-prep/templates/configmap.yaml b/helm-charts/common/data-prep/templates/configmap.yaml index 88a958102..29230f704 100644 --- a/helm-charts/common/data-prep/templates/configmap.yaml +++ b/helm-charts/common/data-prep/templates/configmap.yaml @@ -54,7 +54,7 @@ data: OPENSEARCH_HOST: {{ .Values.OPENSEARCH_HOST }} {{- else }} OPENSEARCH_HOST: "opensearch-cluster-master" - {{- end}} + {{- end }} OPENSEARCH_PORT: {{ .Values.OPENSEARCH_PORT | quote }} {{- if lt (len .Values.OPENSEARCH_INITIAL_ADMIN_PASSWORD) 8 }} {{ fail "OPENSEARCH_INITIAL_ADMIN_PASSWORD must be at least 8 characters" }} diff --git a/helm-charts/common/data-prep/values.yaml b/helm-charts/common/data-prep/values.yaml index 872a75161..af0cf5709 100644 --- a/helm-charts/common/data-prep/values.yaml +++ b/helm-charts/common/data-prep/values.yaml @@ -33,13 +33,13 @@ SEARCH_BATCH_SIZE: 10 # QDRANT_PORT: 6333 # COLLECTION_NAME: "rag_qdrant" -# Uncomment and set the following settings to use Opensearch as a vector-DB backend +# Uncomment and set the following settings to use OpenSearch as a vector-DB backend # DATAPREP_BACKEND: "OPENSEARCH" # OPENSEARCH_HOST: "" # OPENSEARCH_PORT: 9200 # OPENSEARCH_INITIAL_ADMIN_PASSWORD: "" # OPENSEARCH_SSL: false -# INDEX_NAME: "rag-opensearch" +# INDEX_NAME: "rag_opensearch" # KEY_INDEX_NAME: "file-keys" # TIMEOUT_SECONDS: 600 # SEARCH_BATCH_SIZE: 10 From 32c8d27c3deb79ae15bd3dc0eae74e9d8cae578b Mon Sep 17 00:00:00 2001 From: Jonathan Minkin Date: Thu, 20 Feb 2025 13:24:40 -0800 Subject: [PATCH 4/9] Add opensearch support for retriever Signed-off-by: Jonathan Minkin --- helm-charts/common/retriever-usvc/Chart.yaml | 4 +++ .../common/retriever-usvc/milvus-values.yaml | 2 ++ .../retriever-usvc/opensearch-values.yaml | 26 +++++++++++++++++++ .../common/retriever-usvc/qdrant-values.yaml | 2 ++ .../common/retriever-usvc/redis-values.yaml | 2 ++ .../retriever-usvc/templates/configmap.yaml | 15 +++++++++++ helm-charts/common/retriever-usvc/values.yaml | 12 ++++++++- 7 files changed, 62 insertions(+), 1 deletion(-) create mode 100644 helm-charts/common/retriever-usvc/opensearch-values.yaml diff --git a/helm-charts/common/retriever-usvc/Chart.yaml b/helm-charts/common/retriever-usvc/Chart.yaml index bd932f63e..e0631c752 100644 --- a/helm-charts/common/retriever-usvc/Chart.yaml +++ b/helm-charts/common/retriever-usvc/Chart.yaml @@ -28,3 +28,7 @@ dependencies: - name: commonlib version: 0-latest repository: "file://../commonlib" + - name: opensearch + version: 2.31.0 + repository: https://opensearch-project.github.io/helm-charts + condition: opensearch.enabled diff --git a/helm-charts/common/retriever-usvc/milvus-values.yaml b/helm-charts/common/retriever-usvc/milvus-values.yaml index add7867f8..2bb24a6ab 100644 --- a/helm-charts/common/retriever-usvc/milvus-values.yaml +++ b/helm-charts/common/retriever-usvc/milvus-values.yaml @@ -22,6 +22,8 @@ milvus: enabled: false redis-vector-db: enabled: false +opensearch: + enabled: false tei: enabled: true diff --git a/helm-charts/common/retriever-usvc/opensearch-values.yaml b/helm-charts/common/retriever-usvc/opensearch-values.yaml new file mode 100644 index 000000000..4c825b9d7 --- /dev/null +++ b/helm-charts/common/retriever-usvc/opensearch-values.yaml @@ -0,0 +1,26 @@ +# Copyright (C) 2024 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +RETRIEVER_BACKEND: "OPENSEARCH" +OPENSEARCH_HOST: "opensearch-cluster-master" +OPENSEARCH_PORT: 9200 +OPENSEARCH_INITIAL_ADMIN_PASSWORD: "" +OPENSEARCH_SSL: false +OPENSEARCH_INDEX_NAME: "rag_opensearch" + +tei: + enabled: true +redis-vector-db: + enabled: false +milvus: + enabled: false +qdrant: + enabled: false +opensearch: + enabled: true + persistence: + enabled: false + singleNode: true + extraEnvs: + - name: OPENSEARCH_INITIAL_ADMIN_PASSWORD + value: "" # must match value above or retriever cannot access OpenSearch diff --git a/helm-charts/common/retriever-usvc/qdrant-values.yaml b/helm-charts/common/retriever-usvc/qdrant-values.yaml index 231b7bf79..ff1187b76 100644 --- a/helm-charts/common/retriever-usvc/qdrant-values.yaml +++ b/helm-charts/common/retriever-usvc/qdrant-values.yaml @@ -7,6 +7,8 @@ redis-vector-db: enabled: false milvus: enabled: false +opensearch: + enabled: false qdrant: enabled: true tag: "v1.13.1" diff --git a/helm-charts/common/retriever-usvc/redis-values.yaml b/helm-charts/common/retriever-usvc/redis-values.yaml index cbc29c7ee..d781286c1 100644 --- a/helm-charts/common/retriever-usvc/redis-values.yaml +++ b/helm-charts/common/retriever-usvc/redis-values.yaml @@ -11,3 +11,5 @@ redis-vector-db: enabled: true milvus: enabled: false +opensearch: + enabled: false diff --git a/helm-charts/common/retriever-usvc/templates/configmap.yaml b/helm-charts/common/retriever-usvc/templates/configmap.yaml index 60fc898d5..7f798a129 100644 --- a/helm-charts/common/retriever-usvc/templates/configmap.yaml +++ b/helm-charts/common/retriever-usvc/templates/configmap.yaml @@ -46,6 +46,21 @@ data: QDRANT_PORT: {{ .Values.QDRANT_PORT | quote }} QDRANT_EMBED_DIMENSION: {{ .Values.QDRANT_EMBED_DIMENSION | quote }} QDRANT_INDEX_NAME: {{ .Values.QDRANT_INDEX_NAME | quote }} + {{- else if eq "OPENSEARCH" .Values.RETRIEVER_BACKEND }} + RETRIEVER_COMPONENT_NAME: "OPEA_RETRIEVER_OPENSEARCH" + {{- if .Values.OPENSEARCH_HOST }} + OPENSEARCH_HOST: {{ .Values.OPENSEARCH_HOST }} + {{- else }} + OPENSEARCH_HOST: "opensearch-cluster-master" + {{- end }} + {{- if lt (len .Values.OPENSEARCH_INITIAL_ADMIN_PASSWORD) 8 }} + {{ fail "OPENSEARCH_INITIAL_ADMIN_PASSWORD must be at least 8 characters" }} + {{- end }} + OPENSEARCH_PORT: {{ .Values.OPENSEARCH_PORT | quote }} + OPENSEARCH_INITIAL_ADMIN_PASSWORD: {{ .Values.OPENSEARCH_INITIAL_ADMIN_PASSWORD | quote }} + OPENSEARCH_SSL: {{ .Values.OPENSEARCH_SSL | quote }} + OPENSEARCH_INDEX_NAME: {{ .Values.OPENSEARCH_INDEX_NAME | quote }} + EMBED_MODEL: {{ .Values.LOCAL_EMBEDDING_MODEL | quote }} {{- else }} {{- cat "Invalid RETRIEVER_BACKEND:" .Values.RETRIEVER_BACKEND | fail }} {{- end }} diff --git a/helm-charts/common/retriever-usvc/values.yaml b/helm-charts/common/retriever-usvc/values.yaml index 91df2e5f2..2ac6a30a7 100644 --- a/helm-charts/common/retriever-usvc/values.yaml +++ b/helm-charts/common/retriever-usvc/values.yaml @@ -10,7 +10,7 @@ replicaCount: 1 # Set it as a non-null string, such as true, if you want to enable logging. LOGFLAG: "" -# retriever-usvc needs to use different vector-DB backend service, e.g. Redis, Milvus +# retriever-usvc needs to use different vector-DB backend service, e.g. Redis, Milvus, OpenSearch # Default is to use Redis as vector-DB backend RETRIEVER_BACKEND: "REDIS" REDIS_HOST: "" @@ -33,6 +33,14 @@ QDRANT_PORT: 6333 QDRANT_EMBED_DIMENSION: 768 QDRANT_INDEX_NAME: "rag_qdrant" +# Uncomment and set the following settings to use OpenSearch as a vector-DB backend +# RETRIEVER_BACKEND: "OPENSEARCH" +OPENSEARCH_HOST: "" +OPENSEARCH_PORT: 9200 +OPENSEARCH_INITIAL_ADMIN_PASSWORD: "" +OPENSEARCH_SSL: false +OPENSEARCH_INDEX_NAME: "rag_opensearch" + # retriever-usvc can do embedding locally or talk to remote TEI service to do embedding. # TEI_EMBEDDING_ENDPOINT takes precedence over LOCAL_EMBEDDING_MODEL. # text embedding inference service URL, e.g. http://: @@ -140,3 +148,5 @@ redis-vector-db: enabled: false qdrant: enabled: false +opensearch: + enabled: false From 0853e835fffecca97c88f6d2e0b3f306b603eb6f Mon Sep 17 00:00:00 2001 From: Jonathan Minkin Date: Thu, 20 Feb 2025 14:48:17 -0800 Subject: [PATCH 5/9] Fix health check, default ssl value Signed-off-by: Jonathan Minkin --- helm-charts/common/data-prep/README.md | 23 ++++++++++--------- .../common/data-prep/opensearch-values.yaml | 3 ++- .../data-prep/templates/deployment.yaml | 3 +++ helm-charts/common/data-prep/values.yaml | 2 +- 4 files changed, 18 insertions(+), 13 deletions(-) diff --git a/helm-charts/common/data-prep/README.md b/helm-charts/common/data-prep/README.md index 0d4b13e5e..6728c8018 100644 --- a/helm-charts/common/data-prep/README.md +++ b/helm-charts/common/data-prep/README.md @@ -25,7 +25,7 @@ To install `data-prep` chart, run the following: ```console cd GenAIInfra/helm-charts/common/data-prep helm dependency update -export HFTOKEN="insert-your-huggingface-token-here" +export HF_TOKEN="insert-your-huggingface-token-here" export TEI_EMBEDDING_ENDPOINT="http://tei" # Install data-prep with Redis DB backend @@ -67,16 +67,17 @@ curl http://localhost:6007/v1/dataprep/ingest \ ## Values -| Key | Type | Default | Description | -| ------------------------------- | ------ | --------- | ------------------------------------------------------------------------------------------------------- | -| service.port | string | `"6007"` | | -| global.HUGGINGFACEHUB_API_TOKEN | string | `""` | Your own Hugging Face API token | -| DATAPREP_BACKEND | string | `"REDIS"` | vector DB backend to use, one of "REDIS", "MILVUS", "QDRANT" | -| REDIS_HOST | string | `""` | Redis service URL host, only valid for Redis, please see `values.yaml` for other Redis configuration | -| MILVUS_HOST | string | `""` | Milvus service URL host, only valid for Milvus, please see `values.yaml` for other Milvus configuration | -| QDRANT_HOST | string | `""` | Qdrant service URL host, only valid for Qdrant, please see `values.yaml` for other Qdrant configuration | -| TEI_EMBEDDING_ENDPOINT | string | `""` | | -| global.monitoring | bool | `false` | See ../../monitoring.md before enabling! | +| Key | Type | Default | Description | +| ------------------------------- | ------ | --------- | ----------------------------------------------------------------------------------------------------------- | +| service.port | string | `"6007"` | | +| global.HUGGINGFACEHUB_API_TOKEN | string | `""` | Your own Hugging Face API token | +| DATAPREP_BACKEND | string | `"REDIS"` | vector DB backend to use, one of "REDIS", "MILVUS", "QDRANT", "OPENSEARCH" | +| REDIS_HOST | string | `""` | Redis service URL host, only valid for Redis, please see `values.yaml` for other Redis configuration | +| MILVUS_HOST | string | `""` | Milvus service URL host, only valid for Milvus, please see `values.yaml` for other Milvus configuration | +| QDRANT_HOST | string | `""` | Qdrant service URL host, only valid for Qdrant, please see `values.yaml` for other Qdrant configuration | +| OPENSEARCH_HOST | string | `""` | OpenSearch URL host, only valid for OpenSearch, please see `values.yaml` for other OpenSearch configuration | +| TEI_EMBEDDING_ENDPOINT | string | `""` | | +| global.monitoring | bool | `false` | See ../../monitoring.md before enabling! | ## Milvus support diff --git a/helm-charts/common/data-prep/opensearch-values.yaml b/helm-charts/common/data-prep/opensearch-values.yaml index 36ab0d9ec..2825dd93c 100644 --- a/helm-charts/common/data-prep/opensearch-values.yaml +++ b/helm-charts/common/data-prep/opensearch-values.yaml @@ -5,7 +5,8 @@ DATAPREP_BACKEND: "OPENSEARCH" OPENSEARCH_HOST: "opensearch-cluster-master" OPENSEARCH_PORT: 9200 OPENSEARCH_INITIAL_ADMIN_PASSWORD: "" -OPENSEARCH_SSL: false +# SSL must be enabled unless you disable OpenSearch security, which is not recommended +OPENSEARCH_SSL: true INDEX_NAME: "rag_opensearch" KEY_INDEX_NAME: "file-keys" TIMEOUT_SECONDS: 600 diff --git a/helm-charts/common/data-prep/templates/deployment.yaml b/helm-charts/common/data-prep/templates/deployment.yaml index 9f8aad73e..48411d5b5 100644 --- a/helm-charts/common/data-prep/templates/deployment.yaml +++ b/helm-charts/common/data-prep/templates/deployment.yaml @@ -49,6 +49,9 @@ spec: {{- else if eq "QDRANT" .Values.DATAPREP_BACKEND }} TESTHOST=$(QDRANT_HOST); TESTPORT=$(QDRANT_PORT); + {{- else if eq "OPENSEARCH" .Values.DATAPREP_BACKEND }} + TESTHOST=$(OPENSEARCH_HOST); + TESTPORT=$(OPENSEARCH_PORT); {{- end }} wait_timeout={{ .Values.waitTimeout | default 1 }}; total_timeout={{ .Values.retryTimeoutSeconds | default 60 }}; diff --git a/helm-charts/common/data-prep/values.yaml b/helm-charts/common/data-prep/values.yaml index af0cf5709..18dabf674 100644 --- a/helm-charts/common/data-prep/values.yaml +++ b/helm-charts/common/data-prep/values.yaml @@ -38,7 +38,7 @@ SEARCH_BATCH_SIZE: 10 # OPENSEARCH_HOST: "" # OPENSEARCH_PORT: 9200 # OPENSEARCH_INITIAL_ADMIN_PASSWORD: "" -# OPENSEARCH_SSL: false +# OPENSEARCH_SSL: true # INDEX_NAME: "rag_opensearch" # KEY_INDEX_NAME: "file-keys" # TIMEOUT_SECONDS: 600 From 6f2e223eef6d042ac12fe05d6f1028be5bbb308b Mon Sep 17 00:00:00 2001 From: Jonathan Minkin Date: Thu, 20 Feb 2025 15:17:32 -0800 Subject: [PATCH 6/9] Add opensearch retriever install, update ssl and health check Signed-off-by: Jonathan Minkin --- helm-charts/common/retriever-usvc/README.md | 31 ++++++++++++------- .../retriever-usvc/opensearch-values.yaml | 3 +- .../retriever-usvc/templates/deployment.yaml | 3 ++ helm-charts/common/retriever-usvc/values.yaml | 2 +- 4 files changed, 26 insertions(+), 13 deletions(-) diff --git a/helm-charts/common/retriever-usvc/README.md b/helm-charts/common/retriever-usvc/README.md index 055e8483f..6dfabd730 100644 --- a/helm-charts/common/retriever-usvc/README.md +++ b/helm-charts/common/retriever-usvc/README.md @@ -14,6 +14,8 @@ Helm chart for deploying OPEA retriever-usvc microservice. - Qdrant DB: please refer to [qdrant-helm](https://github.com/qdrant/qdrant-helm/tree/qdrant-1.13.1/charts/qdrant) for more information. +- OpenSearch DB: please refer to [opensearch-helm](https://artifacthub.io/packages/helm/opensearch-project-helm-charts/opensearch) for more information. + First, you need to install the `tei` helm chart and one of the vector DB service, i.e. `redis-vector-db` chart. After you've deployed dependency charts successfully, please run `kubectl get svc` to get the service endpoint URL respectively, i.e. `http://tei:80`, `redis://redis-vector-db:6379`. @@ -23,7 +25,7 @@ To install `retriever-usvc` chart, run the following: ```console cd GenAIInfra/helm-charts/common/retriever-usvc helm dependency update -export HFTOKEN="insert-your-huggingface-token-here" +export HF_TOKEN="insert-your-huggingface-token-here" export TEI_EMBEDDING_ENDPOINT="http://tei" # Install retriever-usvc with Redis DB backend @@ -40,6 +42,12 @@ helm install retriever-usvc . --set TEI_EMBEDDING_ENDPOINT=${TEI_EMBEDDING_ENDPO # export RETRIEVER_BACKEND="QDRANT" # export DB_HOST="qdrant" # helm install retriever-usvc . --set TEI_EMBEDDING_ENDPOINT=${TEI_EMBEDDING_ENDPOINT} --set global.HUGGINGFACEHUB_API_TOKEN=${HF_TOKEN} --set RETRIEVER_BACKEND=${RETRIEVER_BACKEND} --set QDRANT_HOST=${DB_HOST} + +# Install retriever-usvc with OpenSearch DB backend +# export RETRIEVER_BACKEND="OPENSEARCH" +# export DB_HOST="opensearch-cluster-master" +# export OPENSEARCH_INITIAL_ADMIN_PASSWORD="insert-your-initial-admin-password" +# helm install retriever-usvc . --set TEI_EMBEDDING_ENDPOINT=${TEI_EMBEDDING_ENDPOINT} --set global.HUGGINGFACEHUB_API_TOKEN=${HF_TOKEN} --set RETRIEVER_BACKEND=${RETRIEVER_BACKEND} --set OPENSEARCH_HOST=${DB_HOST} --set OPENSEARCH_INITIAL_ADMIN_PASSWORD=${OPENSEARCH_INITIAL_ADMIN_PASSWORD} --set "opensearch.extraEnvs[0].name=OPENSEARCH_INITIAL_ADMIN_PASSWORD,opensearch.extraEnvs[0].value=${OPENSEARCH_INITIAL_ADMIN_PASSWORD}" -f opensearch-values.yaml ``` ## Verify @@ -60,16 +68,17 @@ curl http://localhost:7000/v1/retrieval \ ## Values -| Key | Type | Default | Description | -| ------------------------------- | ------ | --------- | ------------------------------------------------------------------------------------------------------- | -| global.HUGGINGFACEHUB_API_TOKEN | string | `""` | Your own Hugging Face API token | -| service.port | string | `"7000"` | | -| RETRIEVER_BACKEND | string | `"REDIS"` | vector DB backend to use, one of "REDIS", "MILVUS", "QDRANT" | -| REDIS_HOST | string | `""` | Redis service URL host, only valid for Redis, please see `values.yaml` for other Redis configuration | -| MILVUS_HOST | string | `""` | Milvus service URL host, only valid for Milvus, please see `values.yaml` for other Milvus configuration | -| QDRANT_HOST | string | `""` | Qdrant service URL host, only valid for Qdrant, please see `values.yaml` for other Qdrant configuration | -| TEI_EMBEDDING_ENDPOINT | string | `""` | | -| global.monitoring | bool | `false` | | +| Key | Type | Default | Description | +| ------------------------------- | ------ | --------- | ------------------------------------------------------------------------------------------------------------------- | +| global.HUGGINGFACEHUB_API_TOKEN | string | `""` | Your own Hugging Face API token | +| service.port | string | `"7000"` | | +| RETRIEVER_BACKEND | string | `"REDIS"` | vector DB backend to use, one of "REDIS", "MILVUS", "QDRANT", "OPENSEARCH" | +| REDIS_HOST | string | `""` | Redis service URL host, only valid for Redis, please see `values.yaml` for other Redis configuration | +| MILVUS_HOST | string | `""` | Milvus service URL host, only valid for Milvus, please see `values.yaml` for other Milvus configuration | +| QDRANT_HOST | string | `""` | Qdrant service URL host, only valid for Qdrant, please see `values.yaml` for other Qdrant configuration | +| OPENSEARCH_HOST | string | `""` | OpenSearch service URL host, only valid for OpenSearch, please see `values.yaml` for other OpenSearch configuration | +| TEI_EMBEDDING_ENDPOINT | string | `""` | | +| global.monitoring | bool | `false` | | ## Milvus support diff --git a/helm-charts/common/retriever-usvc/opensearch-values.yaml b/helm-charts/common/retriever-usvc/opensearch-values.yaml index 4c825b9d7..afde4cf0d 100644 --- a/helm-charts/common/retriever-usvc/opensearch-values.yaml +++ b/helm-charts/common/retriever-usvc/opensearch-values.yaml @@ -5,7 +5,8 @@ RETRIEVER_BACKEND: "OPENSEARCH" OPENSEARCH_HOST: "opensearch-cluster-master" OPENSEARCH_PORT: 9200 OPENSEARCH_INITIAL_ADMIN_PASSWORD: "" -OPENSEARCH_SSL: false +# SSL must be enabled unless you disable OpenSearch security, which is not recommended +OPENSEARCH_SSL: true OPENSEARCH_INDEX_NAME: "rag_opensearch" tei: diff --git a/helm-charts/common/retriever-usvc/templates/deployment.yaml b/helm-charts/common/retriever-usvc/templates/deployment.yaml index 1fa060faa..22b9230ed 100644 --- a/helm-charts/common/retriever-usvc/templates/deployment.yaml +++ b/helm-charts/common/retriever-usvc/templates/deployment.yaml @@ -49,6 +49,9 @@ spec: {{- else if eq "QDRANT" .Values.RETRIEVER_BACKEND }} TESTHOST=$(QDRANT_HOST); TESTPORT=$(QDRANT_PORT); + {{- else if eq "OPENSEARCH" .Values.RETRIEVER_BACKEND }} + TESTHOST=$(OPENSEARCH_HOST) + TESTPORT=$(OPENSEARCH_PORT) {{- end }} wait_timeout={{ .Values.waitTimeout | default 1 }}; total_timeout={{ .Values.retryTimeoutSeconds | default 60 }}; diff --git a/helm-charts/common/retriever-usvc/values.yaml b/helm-charts/common/retriever-usvc/values.yaml index 2ac6a30a7..e8817116a 100644 --- a/helm-charts/common/retriever-usvc/values.yaml +++ b/helm-charts/common/retriever-usvc/values.yaml @@ -38,7 +38,7 @@ QDRANT_INDEX_NAME: "rag_qdrant" OPENSEARCH_HOST: "" OPENSEARCH_PORT: 9200 OPENSEARCH_INITIAL_ADMIN_PASSWORD: "" -OPENSEARCH_SSL: false +OPENSEARCH_SSL: true OPENSEARCH_INDEX_NAME: "rag_opensearch" # retriever-usvc can do embedding locally or talk to remote TEI service to do embedding. From 38d69026a424f7e963b13b0ed6b3f0aece89f4c7 Mon Sep 17 00:00:00 2001 From: Jonathan Minkin Date: Thu, 20 Feb 2025 16:26:09 -0800 Subject: [PATCH 7/9] Add opensearch support for chatqna Signed-off-by: Jonathan Minkin --- helm-charts/chatqna/Chart.yaml | 5 +++ helm-charts/chatqna/README.md | 5 +++ .../chatqna/cpu-opensearch-values.yaml | 36 +++++++++++++++++++ helm-charts/chatqna/values.yaml | 2 ++ 4 files changed, 48 insertions(+) create mode 100644 helm-charts/chatqna/cpu-opensearch-values.yaml diff --git a/helm-charts/chatqna/Chart.yaml b/helm-charts/chatqna/Chart.yaml index 69ec61dca..0d2c87fa3 100644 --- a/helm-charts/chatqna/Chart.yaml +++ b/helm-charts/chatqna/Chart.yaml @@ -63,5 +63,10 @@ dependencies: - name: nginx version: 0-latest repository: "file://../common/nginx" + - name: opensearch + version: 2.31.0 + repository: https://opensearch-project.github.io/helm-charts + condition: opensearch.enabled + version: 0-latest appVersion: "v1.0" diff --git a/helm-charts/chatqna/README.md b/helm-charts/chatqna/README.md index a16c22617..587276fe2 100644 --- a/helm-charts/chatqna/README.md +++ b/helm-charts/chatqna/README.md @@ -26,6 +26,11 @@ export MODELDIR="/mnt/opea-models" export MODELNAME="meta-llama/Meta-Llama-3-8B-Instruct" # To use CPU with vLLM helm install chatqna chatqna --set global.HUGGINGFACEHUB_API_TOKEN=${HFTOKEN} --set global.modelUseHostPath=${MODELDIR} --set vllm.LLM_MODEL_ID=${MODELNAME} +# To use CPU with vLLM and OpenSearch vector DB +# Admin password must be at least 8 characters, and contain at least one uppercase letter, lowercase letter, digit, and special character +export OPENSEARCH_INITIAL_ADMIN_PASSWORD="insert-initial-opensearch-admin-password" +helm install chatqna chatqna --set global.HUGGINGFACEHUB_API_TOKEN=${HFTOKEN} --set global.modelUseHostPath=${MODELDIR} --set vllm.LLM_MODEL_ID=${MODELNAME} --set data-prep.OPENSEARCH_INITIAL_ADMIN_PASSWORD=${OPENSEARCH_INITIAL_ADMIN_PASSWORD} --set retriever-usvc.OPENSEARCH_INITIAL_ADMIN_PASSWORD=${OPENSEARCH_INITIAL_ADMIN_PASSWORD} --set "opensearch.extraEnvs[0].name=OPENSEARCH_INITIAL_ADMIN_PASSWORD,opensearch.extraEnvs[0].value=${OPENSEARCH_INITIAL_ADMIN_PASSWORD}" -f chatqna/cpu-opensearch-values.yaml + # To use Gaudi device with vLLM #helm install chatqna chatqna --set global.HUGGINGFACEHUB_API_TOKEN=${HFTOKEN} --set global.modelUseHostPath=${MODELDIR} --set vllm.LLM_MODEL_ID=${MODELNAME} -f chatqna/gaudi-vllm-values.yaml # To use CPU with TGI diff --git a/helm-charts/chatqna/cpu-opensearch-values.yaml b/helm-charts/chatqna/cpu-opensearch-values.yaml new file mode 100644 index 000000000..5aba7a595 --- /dev/null +++ b/helm-charts/chatqna/cpu-opensearch-values.yaml @@ -0,0 +1,36 @@ +# Copyright (C) 2025 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +image: + repository: opea/chatqna +redis-vector-db: + enabled: false + +# Common fields between data-prep and retriever-usvc must match +# to ensure that RAG works properly +data-prep: + DATAPREP_BACKEND: "OPENSEARCH" + OPENSEARCH_HOST: "opensearch-cluster-master" + OPENSEARCH_PORT: 9200 + OPENSEARCH_INITIAL_ADMIN_PASSWORD: "" + OPENSEARCH_SSL: true + INDEX_NAME: "rag_opensearch" + KEY_INDEX_NAME: "file-keys" + TIMEOUT_SECONDS: 600 + SEARCH_BATCH_SIZE: 10 +retriever-usvc: + RETRIEVER_BACKEND: "OPENSEARCH" + OPENSEARCH_HOST: "opensearch-cluster-master" + OPENSEARCH_PORT: 9200 + OPENSEARCH_INITIAL_ADMIN_PASSWORD: "" + OPENSEARCH_SSL: true + OPENSEARCH_INDEX_NAME: "rag_opensearch" + +opensearch: + enabled: true + persistence: + enabled: false + singleNode: true + extraEnvs: + - name: OPENSEARCH_INITIAL_ADMIN_PASSWORD + value: "" # must match value above or data-prep cannot access OpenSearch diff --git a/helm-charts/chatqna/values.yaml b/helm-charts/chatqna/values.yaml index c6834ee6d..8f4bcf652 100644 --- a/helm-charts/chatqna/values.yaml +++ b/helm-charts/chatqna/values.yaml @@ -92,6 +92,8 @@ teirerank: # vector db choice, redis by default. redis-vector-db: enabled: true +opensearch: + enabled: false # Microservice layer, disabled by default llm-uservice: enabled: false From 55bab2440767731d82c1e81e73bcebedde1b58ff Mon Sep 17 00:00:00 2001 From: Jonathan Minkin Date: Fri, 21 Feb 2025 18:11:52 -0800 Subject: [PATCH 8/9] Add opensearch repo to github action Signed-off-by: Jonathan Minkin --- .github/workflows/pr-chart-validate.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/pr-chart-validate.yaml b/.github/workflows/pr-chart-validate.yaml index d35cd4c93..e7565686a 100644 --- a/.github/workflows/pr-chart-validate.yaml +++ b/.github/workflows/pr-chart-validate.yaml @@ -60,4 +60,5 @@ jobs: done ct lint ${exclude_param} --check-version-increment=false --validate-maintainers=false --chart-dirs ${{ env.CHARTS_DIRS }} --target-branch ${{ github.event.repository.default_branch }} \ --chart-repos milvus=https://zilliztech.github.io/milvus-helm \ - --chart-repos qdrant=https://qdrant.github.io/qdrant-helm + --chart-repos qdrant=https://qdrant.github.io/qdrant-helm \ + --chart-repos opensearch=https://opensearch-project.github.io/helm-charts From 94f9549b6f6d2d7c2206cc6182a03c623a31c239 Mon Sep 17 00:00:00 2001 From: Jonathan Minkin Date: Fri, 21 Feb 2025 18:21:37 -0800 Subject: [PATCH 9/9] Add default password that satisfies CICD Signed-off-by: Jonathan Minkin --- helm-charts/chatqna/cpu-opensearch-values.yaml | 6 +++--- helm-charts/common/data-prep/opensearch-values.yaml | 4 ++-- helm-charts/common/retriever-usvc/opensearch-values.yaml | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/helm-charts/chatqna/cpu-opensearch-values.yaml b/helm-charts/chatqna/cpu-opensearch-values.yaml index 5aba7a595..c76a22be2 100644 --- a/helm-charts/chatqna/cpu-opensearch-values.yaml +++ b/helm-charts/chatqna/cpu-opensearch-values.yaml @@ -12,7 +12,7 @@ data-prep: DATAPREP_BACKEND: "OPENSEARCH" OPENSEARCH_HOST: "opensearch-cluster-master" OPENSEARCH_PORT: 9200 - OPENSEARCH_INITIAL_ADMIN_PASSWORD: "" + OPENSEARCH_INITIAL_ADMIN_PASSWORD: "longPassWithNumCharCapLower1#" OPENSEARCH_SSL: true INDEX_NAME: "rag_opensearch" KEY_INDEX_NAME: "file-keys" @@ -22,7 +22,7 @@ retriever-usvc: RETRIEVER_BACKEND: "OPENSEARCH" OPENSEARCH_HOST: "opensearch-cluster-master" OPENSEARCH_PORT: 9200 - OPENSEARCH_INITIAL_ADMIN_PASSWORD: "" + OPENSEARCH_INITIAL_ADMIN_PASSWORD: "longPassWithNumCharCapLower1#" OPENSEARCH_SSL: true OPENSEARCH_INDEX_NAME: "rag_opensearch" @@ -33,4 +33,4 @@ opensearch: singleNode: true extraEnvs: - name: OPENSEARCH_INITIAL_ADMIN_PASSWORD - value: "" # must match value above or data-prep cannot access OpenSearch + value: "longPassWithNumCharCapLower1#" # must match value above or data-prep cannot access OpenSearch diff --git a/helm-charts/common/data-prep/opensearch-values.yaml b/helm-charts/common/data-prep/opensearch-values.yaml index 2825dd93c..62d0d32c9 100644 --- a/helm-charts/common/data-prep/opensearch-values.yaml +++ b/helm-charts/common/data-prep/opensearch-values.yaml @@ -4,7 +4,7 @@ DATAPREP_BACKEND: "OPENSEARCH" OPENSEARCH_HOST: "opensearch-cluster-master" OPENSEARCH_PORT: 9200 -OPENSEARCH_INITIAL_ADMIN_PASSWORD: "" +OPENSEARCH_INITIAL_ADMIN_PASSWORD: "longPassWithNumCharCapLower1#" # SSL must be enabled unless you disable OpenSearch security, which is not recommended OPENSEARCH_SSL: true INDEX_NAME: "rag_opensearch" @@ -25,4 +25,4 @@ opensearch: singleNode: true extraEnvs: - name: OPENSEARCH_INITIAL_ADMIN_PASSWORD - value: "" # must match value above or data-prep cannot access OpenSearch + value: "longPassWithNumCharCapLower1#" # must match value above or data-prep cannot access OpenSearch diff --git a/helm-charts/common/retriever-usvc/opensearch-values.yaml b/helm-charts/common/retriever-usvc/opensearch-values.yaml index afde4cf0d..52ddb34ea 100644 --- a/helm-charts/common/retriever-usvc/opensearch-values.yaml +++ b/helm-charts/common/retriever-usvc/opensearch-values.yaml @@ -4,7 +4,7 @@ RETRIEVER_BACKEND: "OPENSEARCH" OPENSEARCH_HOST: "opensearch-cluster-master" OPENSEARCH_PORT: 9200 -OPENSEARCH_INITIAL_ADMIN_PASSWORD: "" +OPENSEARCH_INITIAL_ADMIN_PASSWORD: "longPassWithNumCharCapLower1#" # SSL must be enabled unless you disable OpenSearch security, which is not recommended OPENSEARCH_SSL: true OPENSEARCH_INDEX_NAME: "rag_opensearch" @@ -24,4 +24,4 @@ opensearch: singleNode: true extraEnvs: - name: OPENSEARCH_INITIAL_ADMIN_PASSWORD - value: "" # must match value above or retriever cannot access OpenSearch + value: "longPassWithNumCharCapLower1#" # must match value above or retriever cannot access OpenSearch