From e661da4d42f6ecc60812be0c7d61eb2477373bc7 Mon Sep 17 00:00:00 2001 From: DanielleWashington <dwashington.100292@gmail.com> Date: Thu, 13 Mar 2025 13:47:19 -0400 Subject: [PATCH 01/39] uncommented deploy section --- secondaryNavbar.js | 4 ++-- yarn.lock | 15 +++++++++++++++ 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/secondaryNavbar.js b/secondaryNavbar.js index 8eaebc6a..5b58af66 100644 --- a/secondaryNavbar.js +++ b/secondaryNavbar.js @@ -42,7 +42,7 @@ const secondaryNavbarItems = { }, ], }, - /* + deploy: { title: "Deploy", icon: "fa fa-database", @@ -53,7 +53,7 @@ const secondaryNavbarItems = { { label: "AWS", link: "/docs/deploy/aws", sidebar: "deployAwsSidebar" }, ], }, - */ + agents: { title: "Agents", icon: "fa fa-robot", diff --git a/yarn.lock b/yarn.lock index 6915f50c..5533dba0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1857,6 +1857,21 @@ react-helmet-async "npm:@slorber/react-helmet-async@*" react-loadable "npm:@docusaurus/react-loadable@6.0.0" +"@docusaurus/plugin-client-redirects@^3.7.0": + version "3.7.0" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-client-redirects/-/plugin-client-redirects-3.7.0.tgz#b5cf92529768c457c01ad350bfc50862c6149463" + integrity sha512-6B4XAtE5ZVKOyhPgpgMkb7LwCkN+Hgd4vOnlbwR8nCdTQhLjz8MHbGlwwvZ/cay2SPNRX5KssqKAlcHVZP2m8g== + dependencies: + "@docusaurus/core" "3.7.0" + "@docusaurus/logger" "3.7.0" + "@docusaurus/utils" "3.7.0" + "@docusaurus/utils-common" "3.7.0" + "@docusaurus/utils-validation" "3.7.0" + eta "^2.2.0" + fs-extra "^11.1.1" + lodash "^4.17.21" + tslib "^2.6.0" + "@docusaurus/plugin-content-blog@3.7.0": version "3.7.0" resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-blog/-/plugin-content-blog-3.7.0.tgz#7bd69de87a1f3adb652e1473ef5b7ccc9468f47e" From cbd6d79008211ffd17dec638e9e30b6744c04959 Mon Sep 17 00:00:00 2001 From: DanielleWashington <dwashington.100292@gmail.com> Date: Sat, 15 Mar 2025 23:50:59 -0400 Subject: [PATCH 02/39] added k8s poc doc, prod readiness doc, added k8s landing page, and commented out aws section --- docs/deploy/index.mdx | 56 +++-------- docs/deploy/k8s/_category_.json | 4 + docs/deploy/k8s/index.mdx | 21 +++++ docs/deploy/k8s/k8s-poc.md | 119 ++++++++++++++++++++++++ docs/deploy/k8s/production-readiness.md | 65 +++++++++++++ secondaryNavbar.js | 3 +- sidebars.js | 8 +- 7 files changed, 233 insertions(+), 43 deletions(-) create mode 100644 docs/deploy/k8s/_category_.json create mode 100644 docs/deploy/k8s/index.mdx create mode 100644 docs/deploy/k8s/k8s-poc.md create mode 100644 docs/deploy/k8s/production-readiness.md diff --git a/docs/deploy/index.mdx b/docs/deploy/index.mdx index 37231681..35f4a93b 100644 --- a/docs/deploy/index.mdx +++ b/docs/deploy/index.mdx @@ -1,52 +1,26 @@ --- -title: Deployment overview +title: Deployment Overview description: Deployment overview page sidebar_position: 0 --- -# Tacetve a gemit quisquam praestat meruisse gradientis +# Deploying to Weaviate +Weaviate offers multiple deployment options to satisfy your specific use case in production. +Use this page to help you find all that you need to successfully deploy and optimize Weaviate in your environment. +In this section of the docs, you will find common deployment topics, including Kubernetes, cloud providers, and best practices, along with detailed tutorials and how-to guides. -## Nec sum vagatur nupta tantus +Weaviate is designed for: -Lorem markdownum pugnando ventoque et ducta et et adurat locus inde cervos -refeci Phaethon clivum linguaque Salmacis geras coeperat mollia. Leucothoen Ceyx -est viret nostraque; meum utque latens -quae, patrios plebe inpositum: torvum. **Stipite fluminaque videri**; ictu -duabus sua *condita monstrum*. Imo undis: aut niveo sidoniae; placato sorores -at, quae perque. *Candore dolore*, et secum rastra ceratis et sollicitat vincula -matri mei alios in rigore murmur foedataque, cum. +- **Scalability** – Handle billions of vector data points efficiently. +- **High-Performance Search** – Power AI applications with real-time vector retrieval. +- **Flexible Integrations** – Connect with various machine learning models and data sources. +- **Cloud & On-Prem Deployment** – Deploy on Weaviate Cloud, Kubernetes, or managed cloud services. -Et solvit ex comitante super luctus. Unda posse perque venitque quod algae -lymphis postquam optime. +## Deployment Options -## Flammis levi harena illi membra caudam +Choose the best deployment method based on your needs: -Ipse inducitur stridore Aiacem intonsum! Est arma, hausitque *tu* litora -aetasque, at fuit Aegea vides. Non laborum longi fortisque *putes bracchia* -umbras te fingit enim manum! +- **Serverless Cloud** - The easiest deployment setup to test out your Weaviate use case. +- **Enterprise Cloud -** Deploy on dedicated resources in a secure, highly available environment. +- **Bring Your Own Cloud (BYOC)** – Have a fully managed deployment within your own cloud environment. -Ingentia sive Idaeo serpere, dives inpia. Oculos in aras ergo bracchiaque vera, -omnis solutus vellet: et. Est et putat nec obvia unda -totidem amisit *coniurataeque sic arabat* mea. Caune -quodque **addita** truncis quid latebra: incubat pallorque turribus et ignarus -signum pectore quicquid Abantiades locus. **Ante** aliqua Aiacis deferre, ferunt -hunc omnia, et hic Aconteus nec. - -Odit festas dixit et quas fidissima, *est umbrae matrona* palude. Ait et quod -pectora circa. - -## Elegit sim ulla poteramus stridente cessit auras - -Tanta *Elinque*. Mea quae cultum Palameden Aglauros si sacra miserere quam ego, -**e scires** imo sonitusque tumidarum fremit quae ictu? Tum est sub vate vasto, -Galanthida in potui huc et temptat Cenaeo praeterque septem caede. - -> Suo ipse cubitique et vento in onerosa adunco, non. **In paelice Quirites** -> sunt stant sinebat superstes differt non per potentia illiusque nostris -> Hecateidos? Tempore haud imagine facta ora, uni quam fatorum. - -Altis animalibus pampinus venit mirabilis busto: tamen hunc, **salutant** -Stheneleia vultibus pectore. Evocat posuere anxia. - -Aper est; in tuum medius, responderat tamen: magis vix! Amor regno tamen tuli -remige facitote **reverentia**: loqui vade pignora. diff --git a/docs/deploy/k8s/_category_.json b/docs/deploy/k8s/_category_.json new file mode 100644 index 00000000..78521841 --- /dev/null +++ b/docs/deploy/k8s/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "k8s", + "position": 1 +} \ No newline at end of file diff --git a/docs/deploy/k8s/index.mdx b/docs/deploy/k8s/index.mdx new file mode 100644 index 00000000..e0c2676b --- /dev/null +++ b/docs/deploy/k8s/index.mdx @@ -0,0 +1,21 @@ +# Kubernetes and Weaviate + +Weaviate leverages Kubernetes for scalable, resilient, and production-grade deployments. + +## Deployment Options + +Weaviate can use Kubernetes in a variety of deployments: + +### Enterprise Cloud + +- Amazon EKS (Elastic Kubernetes Service) +- Google Kubernetes Engine (GKE) +- Azure Kubernetes Service (AKS) + +### Bring Your Own Cloud + +- Amazon EKS (Elastic Kubernetes Service) +- Google Kubernetes Engine (GKE) +- Azure Kubernetes Service (AKS) + +This section provides guides, best practices, and tutorials for making the best of your Kubernetes deployments. \ No newline at end of file diff --git a/docs/deploy/k8s/k8s-poc.md b/docs/deploy/k8s/k8s-poc.md new file mode 100644 index 00000000..f9fe383c --- /dev/null +++ b/docs/deploy/k8s/k8s-poc.md @@ -0,0 +1,119 @@ +# Building with Weaviate: Getting to Production + +## Introduction + +You are a developer who has already deployed Weaviate on a test cluster and want to take things a step further by deploying and testing Weaviate on a self-managed K8s (Kubernetes) cluster. This guide shows how to validate Weaviate’s capabilities in your enterprise environment. + +At the end of this guide, expect to have: + +- A configured Helm-based deployment and networking setup +- Basic scaling, persistent storage, and resource management +- TLS, RBAC, and security best practices implements +- Monitoring, logging, and backup strategies enabled + +## Prerequisites + +Before beginning, ensure that you have the following: + +### Technical Knowledge + +- Basic Kubernetes and containerization conceptual knowledge +- Basic experience with Helm and `kubectl` + +:::note + +Check out the Academy course [“Run Weaviate on Kubernetes”](https://weaviate.io/developers/academy/deployment/k8s) if you need assistance. + +::: + +### Required Tools + +- A running Kubernetes cluster with Weaviate installed +- `kubectl` installed +- Helm installed + +### Step 1: Configure your Helm Chart + +- Use the official [Weaviate Helm chart](https://github.com/weaviate/weaviate-helm) for your installation. +- Customize the values to fit your enterprise requirements (e.g., resource allocation, storage settings). +- Deploy the chart and verify pod health. + +### Step 2: Network Security + +- Configure an ingress controller to securely expose Weaviate. +- Enable TLS with a certificate manager and enforce TLS encryption for all client-server communication. +- Assign a domain name for external access. +- Implement RBAC to restrict user access. + +```yaml +authorization: + rbac: + enabled: true + # root_users: + # - admin_user1 + # - admin_user2 + admin_list: + enabled: true + # users: + # - admin_user1 + # - admin_user2 + # - api-key-user-admin + # read_only_users: + # - readonly_user1 + # - readonly_user2 + # - api-key-user-readOnly +``` + +### Step 3: Scaling + +- Implement horizontal scaling to ensure high availability. + +```yaml +replicaCount: 3 +``` + +- Define CPU/memory limits and requests to optimize pod efficiency. + +```yaml +resources: + requests: + cpu: "500m" + memory: "1Gi" + limits: + cpu: "2" + memory: "4Gi" +``` + +### Step 4: Monitoring and Logging + +- Use Prometheus and Grafana to collect and analyze performance metrics. + +```yaml +serviceMonitor: + enabled: true + interval: 30s + scrapeTimeout: 10s +``` + +- Implement alerting for issue resolution. + +### Step 5: Upgrades and Backups + +- Use the rolling update strategy used by Helm to minimize downtime. + +```yaml +updateStrategy: + type: RollingUpdate + rollingUpdate: + maxSurge: 1 + maxUnavailable: 0 +``` + +- Test new Weaviate versions before deploying into production. +- Implement disaster recovery procedures to ensure that data is restored quickly. + +### Conclusion + +Voila! You now have a deployment that is *somewhat* ready for production. Your next step will be to complete the self-assessment and identify any gaps. + +### Next Steps: [Production Readiness Self-Assessment](./production-readiness.md) \ No newline at end of file diff --git a/docs/deploy/k8s/production-readiness.md b/docs/deploy/k8s/production-readiness.md new file mode 100644 index 00000000..34bc8687 --- /dev/null +++ b/docs/deploy/k8s/production-readiness.md @@ -0,0 +1,65 @@ +# Kubernetes Production Readiness Self-Assessment + +Think you’re ready for production? Ensuring that your Weaviate cluster is production-ready requires careful planning, configuration, and ongoing maintenance. Ensuring that you have a stable, reliable deployment requires you to think of your *ending* at the *beginning.* This guide provides you with introspective questions to assess readiness and identify any potential gaps before moving your workloads into production. + +### High Availability and Resilience + +- [ ] Are your clusters deployed across multiple availability zones (AZs) or regions to prevent downtime? +- [ ] Are replicas deployed across multiple nodes for redundancy? +- [ ] Is your control plane highly available? +- [ ] Is your application fault-tolerant *without* your control plane? +- [ ] Are the worker nodes distributed across multiple zones to mitigate failures? +- [ ] Are there automatic node repair or self-healing mechanisms in place? +- [ ] Have failover scenarios been tested to validate resilience? +- [ ] Are you utilizing Weaviate’s backup capabilities for disaster recovery? + - [ ] How often are these mechanisms tested? + - [ ] Has the ability to recover from a node failure or database corruption been tested? +- [ ] Are rolling updates performed to avoid downtime? +- [ ] Are canary deployments implemented to safely test new releases? +- [ ] Do you have development or test environments to safely test changes? + +### Resource Management + +- [ ] Have you considered your data’s consumption pattern(s)? + - [ ] Has your memory allocation been right-sized to match workload demand? + - [ ] Has your storage/compute allocation also been right-sized to match workload demand? + - [ ] Is there a process to delete old or unused objects? +- [ ] Have multiple replicas been configured to balance read-heavy workloads? +- [ ] Has the proper storage class been selected for your needs? + - [ ] Does your storage class support volume expansion so that you can support growth over time? +- [ ] Is the data within your cluster properly backed up, including the persistent storage? + +### Security + +- [ ] Are the components of your cluster communicating via SSL/TLS and trusted certificates? +- [ ] Is the *“principle of least privilege”* being followed? +- [ ] Are your container security defaults set properly? +- [ ] Is access to your cluster strictly limited? +- [ ] Has RBAC been implemented to restrict access? +- [ ] Have network policies been implemented to limit pod-to-pod communication? +- [ ] Are secrets secured with K8s Secrets or a vault solution? +- [ ] Do you have a process for when secrets are exposed, when access is lost to a key or certificate, and when secrets need to be rotated? + +### Monitoring and Observability + +- [ ] Is logging implemented? + - [ ] Are the collected logs stored centrally? +- [ ] Is metric collection enabled using Prometheus (or Alloy, DataDog, or another monitoring platform)? +- [ ] Are health and performance metrics being visualized in Grafana? +- [ ] Are alerts configured for events? + +Evaluate these key areas to build a highly available, resilient, and efficient deployment that will scale to meet your business needs. By ensuring that these self-assessment questions have been addressed, you can proactively identify potential risks and maximize the reliability of your deployment. + +:::tip +If you *do* identify gaps within your deployment, be sure to reach out to your SE (sales engineer) who can help steer you on the path to production success! +::: + +#### Additional Resources + +- [Replication](/docs/weaviate/configuration/replication.md) +- [Horizontal Scaling](/docs/weaviate/concepts/cluster.md) +- [Storage](/docs/weaviate/concepts/storage.md) +- [RBAC](/docs/weaviate/configuration/rbac/index.mdx) +- [Backups](/docs/weaviate/configuration/backups.md) +- [Persistence](/docs/weaviate/configuration/persistence.md) +- [Monitoring](/docs/weaviate/configuration/monitoring.md) diff --git a/secondaryNavbar.js b/secondaryNavbar.js index 5b58af66..a6d9a073 100644 --- a/secondaryNavbar.js +++ b/secondaryNavbar.js @@ -50,7 +50,8 @@ const secondaryNavbarItems = { link: "/docs/deploy", links: [ { label: "Get Started", link: "/docs/deploy", sidebar: "deploySidebar" }, - { label: "AWS", link: "/docs/deploy/aws", sidebar: "deployAwsSidebar" }, + { label: "Kubernetes", link: "/docs/deploy/k8s", sidebar: "deployK8sSidebar" }, + /*{ label: "AWS", link: "/docs/deploy/aws", sidebar: "deployAwsSidebar" },*/ ], }, diff --git a/sidebars.js b/sidebars.js index 72b1fecd..f3fcfebf 100644 --- a/sidebars.js +++ b/sidebars.js @@ -397,11 +397,17 @@ const sidebars = { "weaviate/more-resources/example-datasets", ], deploySidebar: ["deploy/index"], - deployAwsSidebar: [ + /*deployAwsSidebar: [ { type: "autogenerated", dirName: "deploy/aws", }, + ],*/ + deployK8sSidebar: [ + { + type: "autogenerated", + dirName:"deploy/k8s", + }, ], agentsSidebar: [ { From 72873cb39c7ba08e3e12b877b6e1c75fd2390653 Mon Sep 17 00:00:00 2001 From: Sebastian Witalec <sebawita@users.noreply.github.com> Date: Mon, 17 Mar 2025 11:10:17 +0100 Subject: [PATCH 03/39] Add Danielle to the slack updates --- _build_scripts/slack-find-author.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/_build_scripts/slack-find-author.sh b/_build_scripts/slack-find-author.sh index b910d619..af037601 100644 --- a/_build_scripts/slack-find-author.sh +++ b/_build_scripts/slack-find-author.sh @@ -10,6 +10,7 @@ git_slack_map=( ["Charlie Harr"]="<@U044XTHRVFA>" ["Connor Shorten"]="<@U03FRH53SUT>" ["Daniel Madalitso Phiri"]="<@U060UJ41YBC>" + ["DanielleWashington"]="<@U088SBVDCET>" ["Dirk Kulawiak"]="<@U03MWHK4KV3>" ["Duda Nogueira"]="<@U05K3K9M82F>" ["dyma solovei"]="<@U07NGR323JR>" From 8ee5f9aaa8301b0bbe14f605c1083df172b5ea96 Mon Sep 17 00:00:00 2001 From: DanielleWashington <101582095+DanielleWashington@users.noreply.github.com> Date: Mon, 17 Mar 2025 11:01:13 -0400 Subject: [PATCH 04/39] fixed link issue --- docs/agents/transformation/tutorial-enrich-dataset.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/agents/transformation/tutorial-enrich-dataset.mdx b/docs/agents/transformation/tutorial-enrich-dataset.mdx index 43b46daf..f457fa6a 100644 --- a/docs/agents/transformation/tutorial-enrich-dataset.mdx +++ b/docs/agents/transformation/tutorial-enrich-dataset.mdx @@ -72,7 +72,7 @@ Now, let's get started by setting up a Weaviate Cloud instance that we will use 1. Take note of the `REST Endpoint` and `Admin` API key to connect to your cluster. (for more info, check out the [quickstart](/docs/cloud/quickstart#22-connect-to-your-weaviate-cloud-instance)) :::tip -In this tutorial, we are using the [Weaviate Embeddings](../../weaviate/model-providers/weaviate) service as the vectorizer, so you do not have to provide any extra keys for external embedding providers. Weaviate Embeddings uses the `Snowflake/snowflake-arctic-embed-l-v2.0` as the default embedding model.<br/><br/> +In this tutorial, we are using the [Weaviate Embeddings](../../weaviate/model-providers/weaviate/index.md) service as the vectorizer, so you do not have to provide any extra keys for external embedding providers. Weaviate Embeddings uses the `Snowflake/snowflake-arctic-embed-l-v2.0` as the default embedding model.<br/><br/> If you want to use another vectorizer, check out the list of supported [model providers](../../weaviate/model-providers/index.md). ::: From 1b623c76b4a5dd5042fceef821d7990037c57974 Mon Sep 17 00:00:00 2001 From: DanielleWashington <dwashington.100292@gmail.com> Date: Mon, 17 Mar 2025 13:26:59 -0400 Subject: [PATCH 05/39] updated per Sebastian's review and feedback --- docs/deploy/k8s/k8s-poc.md | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/docs/deploy/k8s/k8s-poc.md b/docs/deploy/k8s/k8s-poc.md index f9fe383c..befce92f 100644 --- a/docs/deploy/k8s/k8s-poc.md +++ b/docs/deploy/k8s/k8s-poc.md @@ -43,7 +43,7 @@ Check out the Academy course [“Run Weaviate on Kubernetes”](https://weaviat - Configure an ingress controller to securely expose Weaviate. - Enable TLS with a certificate manager and enforce TLS encryption for all client-server communication. - Assign a domain name for external access. -- Implement RBAC to restrict user access. +- Implement RBAC to restrict user access: ```yaml authorization: @@ -52,6 +52,13 @@ authorization: # root_users: # - admin_user1 # - admin_user2 +``` + +[Configuring RBAC](/docs/weaviate/configuration/rbac/configuration.md) + +- **Optional**: Implement admin lists (if not using RBAC): + +```yaml admin_list: enabled: true # users: @@ -63,16 +70,20 @@ authorization: # - readonly_user2 # - api-key-user-readOnly ``` +::: tip +Using an admin list will allow you to define your admin or read-only user/API-key pairs across all Weaviate resources. Whereas RBAC allows you more granular permissions by defining roles and assigning them to users either via API keys or OIDC. +::: +[Admin List Configuration](/docs/weaviate/configuration/authorization.md#admin-list-kubernetes) ### Step 3: Scaling -- Implement horizontal scaling to ensure high availability. +- Implement horizontal scaling to ensure high availability: ```yaml replicaCount: 3 ``` -- Define CPU/memory limits and requests to optimize pod efficiency. +- Define CPU/memory limits and requests to optimize pod efficiency: ```yaml resources: @@ -86,7 +97,7 @@ resources: ### Step 4: Monitoring and Logging -- Use Prometheus and Grafana to collect and analyze performance metrics. +- Use Prometheus and Grafana to collect and analyze performance metrics: ```yaml serviceMonitor: @@ -99,7 +110,7 @@ serviceMonitor: ### Step 5: Upgrades and Backups -- Use the rolling update strategy used by Helm to minimize downtime. +- Use the rolling update strategy used by Helm to minimize downtime: ```yaml updateStrategy: From 5994c6d9fa21e678774aa2e9a560b27fe6c2d454 Mon Sep 17 00:00:00 2001 From: DanielleWashington <dwashington.100292@gmail.com> Date: Mon, 17 Mar 2025 21:16:14 -0400 Subject: [PATCH 06/39] updated per JP's review and feedback --- docs/deploy/index.mdx | 16 +++++++++++----- docs/deploy/k8s/k8s-poc.md | 2 +- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/docs/deploy/index.mdx b/docs/deploy/index.mdx index 35f4a93b..49fd5fac 100644 --- a/docs/deploy/index.mdx +++ b/docs/deploy/index.mdx @@ -5,10 +5,16 @@ sidebar_position: 0 --- # Deploying to Weaviate + +:::info[Section under construction!] + +This is a new section being created, please bear with us as we add in new content! + +::: + Weaviate offers multiple deployment options to satisfy your specific use case in production. -Use this page to help you find all that you need to successfully deploy and optimize Weaviate in your environment. -In this section of the docs, you will find common deployment topics, including Kubernetes, cloud providers, and best practices, along with detailed tutorials and how-to guides. +This section hosts common deployment topics, including Kubernetes, cloud providers, and best practices, along with detailed tutorials and how-to guides. Weaviate is designed for: - **Scalability** – Handle billions of vector data points efficiently. @@ -20,7 +26,7 @@ Weaviate is designed for: Choose the best deployment method based on your needs: -- **Serverless Cloud** - The easiest deployment setup to test out your Weaviate use case. -- **Enterprise Cloud -** Deploy on dedicated resources in a secure, highly available environment. -- **Bring Your Own Cloud (BYOC)** – Have a fully managed deployment within your own cloud environment. +- [**Serverless Cloud** ](https://weaviate.io/deployment/serverless)- The easiest deployment setup to test out your Weaviate use case. +- [**Enterprise Cloud -**](https://weaviate.io/deployment/enterprise-cloud) Deploy on dedicated resources in a secure, highly available environment. +- [**Bring Your Own Cloud (BYOC)**](https://weaviate.io/deployment/byoc) – Have a fully managed deployment within your own cloud environment. diff --git a/docs/deploy/k8s/k8s-poc.md b/docs/deploy/k8s/k8s-poc.md index befce92f..79ceb337 100644 --- a/docs/deploy/k8s/k8s-poc.md +++ b/docs/deploy/k8s/k8s-poc.md @@ -70,7 +70,7 @@ authorization: # - readonly_user2 # - api-key-user-readOnly ``` -::: tip +:::tip Using an admin list will allow you to define your admin or read-only user/API-key pairs across all Weaviate resources. Whereas RBAC allows you more granular permissions by defining roles and assigning them to users either via API keys or OIDC. ::: From d809573a66f86d9a5b29b9d5a666c2307a9b2356 Mon Sep 17 00:00:00 2001 From: DanielleWashington <dwashington.100292@gmail.com> Date: Tue, 18 Mar 2025 12:24:00 -0400 Subject: [PATCH 07/39] updating with edits --- docs/deploy/k8s/k8s-poc.md | 69 ++++++++++++++++--------- docs/deploy/k8s/production-readiness.md | 12 +---- 2 files changed, 47 insertions(+), 34 deletions(-) diff --git a/docs/deploy/k8s/k8s-poc.md b/docs/deploy/k8s/k8s-poc.md index 79ceb337..986e5dd4 100644 --- a/docs/deploy/k8s/k8s-poc.md +++ b/docs/deploy/k8s/k8s-poc.md @@ -2,7 +2,7 @@ ## Introduction -You are a developer who has already deployed Weaviate on a test cluster and want to take things a step further by deploying and testing Weaviate on a self-managed K8s (Kubernetes) cluster. This guide shows how to validate Weaviate’s capabilities in your enterprise environment. +Are you ready to deploy and test Weaviate on a self-managed K8s (Kubernetes) cluster? This guide shows how to validate Weaviate’s capabilities in your enterprise environment. At the end of this guide, expect to have: @@ -22,7 +22,7 @@ Before beginning, ensure that you have the following: :::note -Check out the Academy course [“Run Weaviate on Kubernetes”](https://weaviate.io/developers/academy/deployment/k8s) if you need assistance. +Check out the Academy course [“Run Weaviate on Kubernetes”](https://weaviate.io/developers/academy/deployment/k8s) if you need assistance. ::: @@ -34,7 +34,13 @@ Check out the Academy course [“Run Weaviate on Kubernetes”](https://weaviat ### Step 1: Configure your Helm Chart -- Use the official [Weaviate Helm chart](https://github.com/weaviate/weaviate-helm) for your installation. +- Use the official [Weaviate Helm chart](https://github.com/weaviate/weaviate-helm) for your installation: + +``` + helm repo add weaviate https://weaviate.github.io/weaviate-helm + helm install my-weaviate weaviate/weaviate +``` + - Customize the values to fit your enterprise requirements (e.g., resource allocation, storage settings). - Deploy the chart and verify pod health. @@ -43,33 +49,38 @@ Check out the Academy course [“Run Weaviate on Kubernetes”](https://weaviat - Configure an ingress controller to securely expose Weaviate. - Enable TLS with a certificate manager and enforce TLS encryption for all client-server communication. - Assign a domain name for external access. -- Implement RBAC to restrict user access: +- Implement RBAC or admin lists to restrict user access. + +<details> + <summary> An example of RBAC enabled on your Helm chart </summary> ```yaml -authorization: + authorization: rbac: enabled: true - # root_users: - # - admin_user1 - # - admin_user2 + root_users: + - admin_user1 + - admin_user2 ``` +</details> -[Configuring RBAC](/docs/weaviate/configuration/rbac/configuration.md) - -- **Optional**: Implement admin lists (if not using RBAC): +<details> +<summary> An example of admin lists implemented on your Helm chart (if not using RBAC)</summary> ```yaml admin_list: enabled: true - # users: - # - admin_user1 - # - admin_user2 - # - api-key-user-admin - # read_only_users: - # - readonly_user1 - # - readonly_user2 - # - api-key-user-readOnly + users: + - admin_user1 + - admin_user2 + - api-key-user-admin + read_only_users: + - readonly_user1 + - readonly_user2 + - api-key-user-readOnly ``` +</details> + :::tip Using an admin list will allow you to define your admin or read-only user/API-key pairs across all Weaviate resources. Whereas RBAC allows you more granular permissions by defining roles and assigning them to users either via API keys or OIDC. ::: @@ -83,7 +94,10 @@ Using an admin list will allow you to define your admin or read-only user/API-ke replicaCount: 3 ``` -- Define CPU/memory limits and requests to optimize pod efficiency: +- Define CPU/memory limits and requests to optimize pod efficiency. + +<details> +<summary> An example of defining CPU and memory limits and cores </summary> ```yaml resources: @@ -94,10 +108,15 @@ resources: cpu: "2" memory: "4Gi" ``` +</details> ### Step 4: Monitoring and Logging -- Use Prometheus and Grafana to collect and analyze performance metrics: +- Use Prometheus and Grafana to collect and analyze performance metrics. +- Implement alerting for issue resolution. + +<details> +<summary> An example of enabling service monitoring </summary> ```yaml serviceMonitor: @@ -105,12 +124,15 @@ serviceMonitor: interval: 30s scrapeTimeout: 10s ``` +</details> -- Implement alerting for issue resolution. ### Step 5: Upgrades and Backups -- Use the rolling update strategy used by Helm to minimize downtime: +- Use the rolling update strategy used by Helm to minimize downtime. + +<details> +<summary> An example of configuring the rolling update strategy.</summary> ```yaml updateStrategy: @@ -119,6 +141,7 @@ updateStrategy: maxSurge: 1 maxUnavailable: 0 ``` +</details> - Test new Weaviate versions before deploying into production. - Implement disaster recovery procedures to ensure that data is restored quickly. diff --git a/docs/deploy/k8s/production-readiness.md b/docs/deploy/k8s/production-readiness.md index 34bc8687..00ec8366 100644 --- a/docs/deploy/k8s/production-readiness.md +++ b/docs/deploy/k8s/production-readiness.md @@ -35,7 +35,7 @@ Think you’re ready for production? Ensuring that your Weaviate cluster is prod - [ ] Is the *“principle of least privilege”* being followed? - [ ] Are your container security defaults set properly? - [ ] Is access to your cluster strictly limited? -- [ ] Has RBAC been implemented to restrict access? +- [ ] Has [RBAC](/docs/weaviate/configuration/rbac/index.mdx) been implemented to restrict access? - [ ] Have network policies been implemented to limit pod-to-pod communication? - [ ] Are secrets secured with K8s Secrets or a vault solution? - [ ] Do you have a process for when secrets are exposed, when access is lost to a key or certificate, and when secrets need to be rotated? @@ -53,13 +53,3 @@ Evaluate these key areas to build a highly available, resilient, and efficient d :::tip If you *do* identify gaps within your deployment, be sure to reach out to your SE (sales engineer) who can help steer you on the path to production success! ::: - -#### Additional Resources - -- [Replication](/docs/weaviate/configuration/replication.md) -- [Horizontal Scaling](/docs/weaviate/concepts/cluster.md) -- [Storage](/docs/weaviate/concepts/storage.md) -- [RBAC](/docs/weaviate/configuration/rbac/index.mdx) -- [Backups](/docs/weaviate/configuration/backups.md) -- [Persistence](/docs/weaviate/configuration/persistence.md) -- [Monitoring](/docs/weaviate/configuration/monitoring.md) From 6e32f70295a89fd39ef6c88f9b2f85a0f58580f7 Mon Sep 17 00:00:00 2001 From: DanielleWashington <dwashington.100292@gmail.com> Date: Tue, 18 Mar 2025 12:50:00 -0400 Subject: [PATCH 08/39] adding front matter to change sidebar label --- docs/deploy/k8s/production-readiness.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/deploy/k8s/production-readiness.md b/docs/deploy/k8s/production-readiness.md index 00ec8366..3a85e978 100644 --- a/docs/deploy/k8s/production-readiness.md +++ b/docs/deploy/k8s/production-readiness.md @@ -1,3 +1,7 @@ +--- +sidebar_label: Production Readiness Self-Assessment +--- + # Kubernetes Production Readiness Self-Assessment Think you’re ready for production? Ensuring that your Weaviate cluster is production-ready requires careful planning, configuration, and ongoing maintenance. Ensuring that you have a stable, reliable deployment requires you to think of your *ending* at the *beginning.* This guide provides you with introspective questions to assess readiness and identify any potential gaps before moving your workloads into production. From 8ca1f81a36156e69dd048f07742e7084a43baf0c Mon Sep 17 00:00:00 2001 From: DanielleWashington <dwashington.100292@gmail.com> Date: Tue, 18 Mar 2025 13:00:52 -0400 Subject: [PATCH 09/39] updating with edits --- docs/deploy/index.mdx | 2 +- docs/deploy/k8s/k8s-poc.md | 19 ++++++++++--------- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/docs/deploy/index.mdx b/docs/deploy/index.mdx index 49fd5fac..19a5c3b3 100644 --- a/docs/deploy/index.mdx +++ b/docs/deploy/index.mdx @@ -4,7 +4,7 @@ description: Deployment overview page sidebar_position: 0 --- -# Deploying to Weaviate +# Deploying Weaviate :::info[Section under construction!] diff --git a/docs/deploy/k8s/k8s-poc.md b/docs/deploy/k8s/k8s-poc.md index 986e5dd4..fabb9cfd 100644 --- a/docs/deploy/k8s/k8s-poc.md +++ b/docs/deploy/k8s/k8s-poc.md @@ -11,11 +11,11 @@ At the end of this guide, expect to have: - TLS, RBAC, and security best practices implements - Monitoring, logging, and backup strategies enabled -## Prerequisites +### Prerequisites Before beginning, ensure that you have the following: -### Technical Knowledge +#### Technical Knowledge - Basic Kubernetes and containerization conceptual knowledge - Basic experience with Helm and `kubectl` @@ -26,13 +26,13 @@ Check out the Academy course [“Run Weaviate on Kubernetes”](https://weaviate ::: -### Required Tools +#### Required Tools - A running Kubernetes cluster with Weaviate installed - `kubectl` installed - Helm installed -### Step 1: Configure your Helm Chart +## Step 1: Configure your Helm Chart - Use the official [Weaviate Helm chart](https://github.com/weaviate/weaviate-helm) for your installation: @@ -44,7 +44,7 @@ Check out the Academy course [“Run Weaviate on Kubernetes”](https://weaviate - Customize the values to fit your enterprise requirements (e.g., resource allocation, storage settings). - Deploy the chart and verify pod health. -### Step 2: Network Security +## Step 2: Network Security - Configure an ingress controller to securely expose Weaviate. - Enable TLS with a certificate manager and enforce TLS encryption for all client-server communication. @@ -79,14 +79,15 @@ Check out the Academy course [“Run Weaviate on Kubernetes”](https://weaviate - readonly_user2 - api-key-user-readOnly ``` +[Admin List Configuration](/docs/weaviate/configuration/authorization.md#admin-list-kubernetes) + </details> :::tip Using an admin list will allow you to define your admin or read-only user/API-key pairs across all Weaviate resources. Whereas RBAC allows you more granular permissions by defining roles and assigning them to users either via API keys or OIDC. ::: -[Admin List Configuration](/docs/weaviate/configuration/authorization.md#admin-list-kubernetes) -### Step 3: Scaling +## Step 3: Scaling - Implement horizontal scaling to ensure high availability: @@ -110,7 +111,7 @@ resources: ``` </details> -### Step 4: Monitoring and Logging +## Step 4: Monitoring and Logging - Use Prometheus and Grafana to collect and analyze performance metrics. - Implement alerting for issue resolution. @@ -127,7 +128,7 @@ serviceMonitor: </details> -### Step 5: Upgrades and Backups +## Step 5: Upgrades and Backups - Use the rolling update strategy used by Helm to minimize downtime. From 60d478713e2627bc1bc38fc4e7d55dd739f571a5 Mon Sep 17 00:00:00 2001 From: DanielleWashington <dwashington.100292@gmail.com> Date: Tue, 18 Mar 2025 19:33:49 -0400 Subject: [PATCH 10/39] removed unsupported byoc integrations --- docs/deploy/k8s/index.mdx | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/docs/deploy/k8s/index.mdx b/docs/deploy/k8s/index.mdx index e0c2676b..902aec50 100644 --- a/docs/deploy/k8s/index.mdx +++ b/docs/deploy/k8s/index.mdx @@ -1,6 +1,7 @@ # Kubernetes and Weaviate Weaviate leverages Kubernetes for scalable, resilient, and production-grade deployments. +This section provides guides, best practices, and tutorials for making the best of your Kubernetes deployments. ## Deployment Options @@ -15,7 +16,4 @@ Weaviate can use Kubernetes in a variety of deployments: ### Bring Your Own Cloud - Amazon EKS (Elastic Kubernetes Service) -- Google Kubernetes Engine (GKE) -- Azure Kubernetes Service (AKS) -This section provides guides, best practices, and tutorials for making the best of your Kubernetes deployments. \ No newline at end of file From 7471adf89a196b7fd1618852a33aff43225ed125 Mon Sep 17 00:00:00 2001 From: DanielleWashington <dwashington.100292@gmail.com> Date: Wed, 19 Mar 2025 23:12:19 -0400 Subject: [PATCH 11/39] added additional questions --- docs/deploy/k8s/index.mdx | 2 +- docs/deploy/k8s/production-readiness.md | 37 +++++++++++++++++++++---- 2 files changed, 33 insertions(+), 6 deletions(-) diff --git a/docs/deploy/k8s/index.mdx b/docs/deploy/k8s/index.mdx index 902aec50..cc99159f 100644 --- a/docs/deploy/k8s/index.mdx +++ b/docs/deploy/k8s/index.mdx @@ -5,7 +5,7 @@ This section provides guides, best practices, and tutorials for making the best ## Deployment Options -Weaviate can use Kubernetes in a variety of deployments: +Weaviate can use Kubernetes in a variety of deployments for your enterprise environment: ### Enterprise Cloud diff --git a/docs/deploy/k8s/production-readiness.md b/docs/deploy/k8s/production-readiness.md index 3a85e978..fab9e81a 100644 --- a/docs/deploy/k8s/production-readiness.md +++ b/docs/deploy/k8s/production-readiness.md @@ -9,29 +9,56 @@ Think you’re ready for production? Ensuring that your Weaviate cluster is prod ### High Availability and Resilience - [ ] Are your clusters deployed across multiple availability zones (AZs) or regions to prevent downtime? +- [ ] Are you running Weaviate in a highly available setup with a 3-node minimum? +- [ ] Have you configured your schema to use a replication factor of 3 to ensure copies of data are available during node outage? - [ ] Are replicas deployed across multiple nodes for redundancy? - [ ] Is your control plane highly available? - [ ] Is your application fault-tolerant *without* your control plane? -- [ ] Are the worker nodes distributed across multiple zones to mitigate failures? - [ ] Are there automatic node repair or self-healing mechanisms in place? - [ ] Have failover scenarios been tested to validate resilience? - [ ] Are you utilizing Weaviate’s backup capabilities for disaster recovery? - [ ] How often are these mechanisms tested? - [ ] Has the ability to recover from a node failure or database corruption been tested? +- [ ] Have you thought about the retention period of backups? + - [ ] How do you clean up any out-of-date backups? - [ ] Are rolling updates performed to avoid downtime? - [ ] Are canary deployments implemented to safely test new releases? - [ ] Do you have development or test environments to safely test changes? +### Data Ingestion and Query Performance + +- [ ] Is there a strategy for handling heavy ingestion loads? +- [ ] Has the percentage of resources for indexing vs querying applications been specified? +- [ ] Is there a defined strategy for data deduplication and cleanup before ingestion? +- [ ] How frequently is data added, updated, or deleted? + - [ ] Is data updated in place or mostly append-only + - [ ] How often do deletion operations trigger garbage collection? +- [ ] Have you implemented a scheduling strategy for large ingestion jobs? +- [ ] Have you tested query performance under load? + - [ ] Is query performance monitored using Prometheus or Grafana? +- [ ] Have replica shards been deployed for load balancing and failover support? + + ### Resource Management - [ ] Have you considered your data’s consumption pattern(s)? - [ ] Has your memory allocation been right-sized to match workload demand? - [ ] Has your storage/compute allocation also been right-sized to match workload demand? - [ ] Is there a process to delete old or unused objects? -- [ ] Have multiple replicas been configured to balance read-heavy workloads? -- [ ] Has the proper storage class been selected for your needs? - - [ ] Does your storage class support volume expansion so that you can support growth over time? -- [ ] Is the data within your cluster properly backed up, including the persistent storage? +- [ ] Have multiple replicas been configured to balance read-heavy workloads? +- [ ] Has the proper storage class been selected for your needs? + - [ ] Does your storage class support volume expansion so that you can support growth over time? +- [ ] Is the data within your cluster properly backed up, including the persistent storage? +- [ ] Is the sharding strategy aligned with the size and access patterns of the dataset? +- [ ] Is `GOMEMLIMIT` properly configured for memory management? + - [ ] Is `GOMEMLIMIT` set based on available system memory to prevent excessive garbage collection pauses? +- [ ] Have you considered vector quantization techniques to reduce memory requirements? + +### Tenant State Management + +- [ ] Are you implementing multi-tenancy? + - [ ] Are there limits or quotas per tenant to avoid noisy neighbor issues? +- [ ] Is there a strategy for offloading inactive tenant data? ### Security From ee628de48fa68e62452c1a7a2a2a9ce8ca71274d Mon Sep 17 00:00:00 2001 From: DanielleWashington <dwashington.100292@gmail.com> Date: Fri, 21 Mar 2025 21:41:20 -0400 Subject: [PATCH 12/39] production section added and k8s prod docs moved --- .../{k8s => production/Kubernetes}/index.mdx | 4 +- .../{k8s => production/Kubernetes}/k8s-poc.md | 0 .../Kubernetes}/production-readiness.md | 0 docs/deploy/production/index.mdx | 37 +++++++++++++++++++ secondaryNavbar.js | 1 + sidebars.js | 11 +++++- 6 files changed, 49 insertions(+), 4 deletions(-) rename docs/deploy/{k8s => production/Kubernetes}/index.mdx (86%) rename docs/deploy/{k8s => production/Kubernetes}/k8s-poc.md (100%) rename docs/deploy/{k8s => production/Kubernetes}/production-readiness.md (100%) create mode 100644 docs/deploy/production/index.mdx diff --git a/docs/deploy/k8s/index.mdx b/docs/deploy/production/Kubernetes/index.mdx similarity index 86% rename from docs/deploy/k8s/index.mdx rename to docs/deploy/production/Kubernetes/index.mdx index cc99159f..971bf23f 100644 --- a/docs/deploy/k8s/index.mdx +++ b/docs/deploy/production/Kubernetes/index.mdx @@ -1,7 +1,7 @@ -# Kubernetes and Weaviate +# Kubernetes Weaviate leverages Kubernetes for scalable, resilient, and production-grade deployments. -This section provides guides, best practices, and tutorials for making the best of your Kubernetes deployments. +This section provides guides, best practices, and tutorials for making the best of your Kubernetes deployments in production. ## Deployment Options diff --git a/docs/deploy/k8s/k8s-poc.md b/docs/deploy/production/Kubernetes/k8s-poc.md similarity index 100% rename from docs/deploy/k8s/k8s-poc.md rename to docs/deploy/production/Kubernetes/k8s-poc.md diff --git a/docs/deploy/k8s/production-readiness.md b/docs/deploy/production/Kubernetes/production-readiness.md similarity index 100% rename from docs/deploy/k8s/production-readiness.md rename to docs/deploy/production/Kubernetes/production-readiness.md diff --git a/docs/deploy/production/index.mdx b/docs/deploy/production/index.mdx new file mode 100644 index 00000000..1c61ce9b --- /dev/null +++ b/docs/deploy/production/index.mdx @@ -0,0 +1,37 @@ +--- + +sidebar_label: "Overview" +sidebar_position: 0 + +--- + +# Production Environments + +Deploying Weaviate in a production environment requires careful planning to ensure stability, security, and performance. +Unlike development or testing environments, a production instance must be resilient, scalable, and optimized for real-world workloads. + +## Key Aspects of a Production Environments + +- **Scalability and Performance** + - Production workloads demand high availability and low latency. + - Auto-scaling strategies and resource monitoring must be in place. +- **Data Resilience and Backups** + - Data must be safeguarded against corruption and loss. + - Disaster recover strategies and automated backups must be implemented. +- **Security and Compliance** + - Data at rest and in transit should be encrypted. + - liance best practices must be followed. +- **Monitoring and Observability** + - Logs and metrics must be collected for troubleshooting and optimization. + - Monitoring tools should be used to track performance. + - Alerting mechanisms must be set up to detect any anaomolies or failures. +- **Networking and Access Control** + - Privileges should be limited using RBAC (role-based access control). + - Load balancing should be configured. + +### Weaviate Production Environments +Weaviate has different options for deploying in a production environment using: + +- **Serverless Cloud**: A Serverless Cloud instance is a robust cluster designed for production use. +- **Enterprise Cloud**: Enterprise Cloud is a fully-managed deployment of dedicated resources within a secure, highly available environment. +- **Bring Your Own Cloud (BYOC)**: Using your own cloud environment, you are able to have a fully managed deployed. \ No newline at end of file diff --git a/secondaryNavbar.js b/secondaryNavbar.js index 85ee39cc..f86a9f6f 100644 --- a/secondaryNavbar.js +++ b/secondaryNavbar.js @@ -51,6 +51,7 @@ const secondaryNavbarItems = { links: [ { label: "Get Started", link: "/docs/deploy", sidebar: "deploySidebar" }, { label: "Kubernetes", link: "/docs/deploy/k8s", sidebar: "deployK8sSidebar" }, + { label: "Production", link: "/docs/deploy/production", sidebar: "deployProductionSidebar"}, /*{ label: "AWS", link: "/docs/deploy/aws", sidebar: "deployAwsSidebar" },*/ ], }, diff --git a/sidebars.js b/sidebars.js index 94c34a05..18aa2cda 100644 --- a/sidebars.js +++ b/sidebars.js @@ -415,10 +415,17 @@ const sidebars = { dirName: "deploy/aws", }, ],*/ - deployK8sSidebar: [ + /*deployK8sSidebar: [ { type: "autogenerated", - dirName:"deploy/k8s", + dirName: "deploy/k8s", + }, + ],*/ + deployProductionSidebar: [ + { + type: "autogenerated", + dirName: "deploy/production", + }, ], agentsSidebar: [ From a02e7573809379db1ef9800a139871e028fe5f3e Mon Sep 17 00:00:00 2001 From: DanielleWashington <dwashington.100292@gmail.com> Date: Fri, 21 Mar 2025 21:47:12 -0400 Subject: [PATCH 13/39] hiding k8s on secondary navbar --- secondaryNavbar.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/secondaryNavbar.js b/secondaryNavbar.js index f86a9f6f..5e45cc42 100644 --- a/secondaryNavbar.js +++ b/secondaryNavbar.js @@ -50,7 +50,7 @@ const secondaryNavbarItems = { link: "/docs/deploy", links: [ { label: "Get Started", link: "/docs/deploy", sidebar: "deploySidebar" }, - { label: "Kubernetes", link: "/docs/deploy/k8s", sidebar: "deployK8sSidebar" }, + /*{ label: "Kubernetes", link: "/docs/deploy/k8s", sidebar: "deployK8sSidebar" },*/ { label: "Production", link: "/docs/deploy/production", sidebar: "deployProductionSidebar"}, /*{ label: "AWS", link: "/docs/deploy/aws", sidebar: "deployAwsSidebar" },*/ ], From 57db8e0269dd033ab84e153669522816b0f253c2 Mon Sep 17 00:00:00 2001 From: DanielleWashington <dwashington.100292@gmail.com> Date: Sat, 22 Mar 2025 21:53:27 -0400 Subject: [PATCH 14/39] migrating docker and k8s installation guides, adding cards to deployment landing page --- docs/deploy/aws/_category_.json | 4 - docs/deploy/aws/index.mdx | 52 --- docs/deploy/index.mdx | 74 ++- .../docker-installation.md | 438 ++++++++++++++++++ .../installation-guides/k8s-installation.md | 254 ++++++++++ docs/deploy/k8s/_category_.json | 4 - docs/deploy/production/Kubernetes/index.mdx | 6 + secondaryNavbar.js | 2 +- sidebars.js | 17 +- 9 files changed, 785 insertions(+), 66 deletions(-) delete mode 100644 docs/deploy/aws/_category_.json delete mode 100644 docs/deploy/aws/index.mdx create mode 100644 docs/deploy/installation-guides/docker-installation.md create mode 100644 docs/deploy/installation-guides/k8s-installation.md delete mode 100644 docs/deploy/k8s/_category_.json diff --git a/docs/deploy/aws/_category_.json b/docs/deploy/aws/_category_.json deleted file mode 100644 index 13cc9bd6..00000000 --- a/docs/deploy/aws/_category_.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "label": "AWS", - "position": 1 -} \ No newline at end of file diff --git a/docs/deploy/aws/index.mdx b/docs/deploy/aws/index.mdx deleted file mode 100644 index 713a3823..00000000 --- a/docs/deploy/aws/index.mdx +++ /dev/null @@ -1,52 +0,0 @@ ---- -title: AWS and Weaviate -description: AWS docs -sidebar_position: 0 ---- - -# Tacetve a gemit quisquam praestat meruisse gradientis - -## Nec sum vagatur nupta tantus - -Lorem markdownum pugnando ventoque et ducta et et adurat locus inde cervos -refeci Phaethon clivum linguaque Salmacis geras coeperat mollia. Leucothoen Ceyx -est viret nostraque; meum utque latens -quae, patrios plebe inpositum: torvum. **Stipite fluminaque videri**; ictu -duabus sua *condita monstrum*. Imo undis: aut niveo sidoniae; placato sorores -at, quae perque. *Candore dolore*, et secum rastra ceratis et sollicitat vincula -matri mei alios in rigore murmur foedataque, cum. - -Et solvit ex comitante super luctus. Unda posse perque venitque quod algae -lymphis postquam optime. - -## Flammis levi harena illi membra caudam - -Ipse inducitur stridore Aiacem intonsum! Est arma, hausitque *tu* litora -aetasque, at fuit Aegea vides. Non laborum longi fortisque *putes bracchia* -umbras te fingit enim manum! - -Ingentia sive Idaeo serpere, dives inpia. Oculos in aras ergo bracchiaque vera, -omnis solutus vellet: et. Est et putat nec obvia unda -totidem amisit *coniurataeque sic arabat* mea. Caune -quodque **addita** truncis quid latebra: incubat pallorque turribus et ignarus -signum pectore quicquid Abantiades locus. **Ante** aliqua Aiacis deferre, ferunt -hunc omnia, et hic Aconteus nec. - -Odit festas dixit et quas fidissima, *est umbrae matrona* palude. Ait et quod -pectora circa. - -## Elegit sim ulla poteramus stridente cessit auras - -Tanta *Elinque*. Mea quae cultum Palameden Aglauros si sacra miserere quam ego, -**e scires** imo sonitusque tumidarum fremit quae ictu? Tum est sub vate vasto, -Galanthida in potui huc et temptat Cenaeo praeterque septem caede. - -> Suo ipse cubitique et vento in onerosa adunco, non. **In paelice Quirites** -> sunt stant sinebat superstes differt non per potentia illiusque nostris -> Hecateidos? Tempore haud imagine facta ora, uni quam fatorum. - -Altis animalibus pampinus venit mirabilis busto: tamen hunc, **salutant** -Stheneleia vultibus pectore. Evocat posuere anxia. - -Aper est; in tuum medius, responderat tamen: magis vix! Amor regno tamen tuli -remige facitote **reverentia**: loqui vade pignora. diff --git a/docs/deploy/index.mdx b/docs/deploy/index.mdx index 19a5c3b3..d88d5afc 100644 --- a/docs/deploy/index.mdx +++ b/docs/deploy/index.mdx @@ -1,9 +1,13 @@ --- -title: Deployment Overview +title: Overview description: Deployment overview page sidebar_position: 0 --- +import CardsSection from "/src/components/CardsSection"; +import DeploymentCards from "/src/components/DeploymentCards"; +import styles from "/src/components/CardsSection/styles.module.scss"; + # Deploying Weaviate :::info[Section under construction!] @@ -26,7 +30,69 @@ Weaviate is designed for: Choose the best deployment method based on your needs: -- [**Serverless Cloud** ](https://weaviate.io/deployment/serverless)- The easiest deployment setup to test out your Weaviate use case. -- [**Enterprise Cloud -**](https://weaviate.io/deployment/enterprise-cloud) Deploy on dedicated resources in a secure, highly available environment. -- [**Bring Your Own Cloud (BYOC)**](https://weaviate.io/deployment/byoc) – Have a fully managed deployment within your own cloud environment. +export const deploymentCardsData = [ + { + tabs: [ + { label: "Evaluation", active: true }, + { label: "Deployment", active: true }, + { label: "Production", active: true }, + ], + header: "Weaviate Cloud", + bgImage: "/img/site/hex-weaviate.svg", + bgImageLight: "/img/site/hex-weaviate-light.svg", + listItems: [ + "From evaluation (sandbox) to production", + "Serverless (infrastructure managed by Weaviate)", + "(Optional) Data replication (high-availability)", + "(Optional) Zero-downtime updates", + ], + button: { + text: "Set up a WCD instance", + link: "/docs/cloud/manage-clusters/create", + }, + }, + { + tabs: [ + { label: "Evaluation", active: true }, + { label: "Deployment", active: true }, + { label: "Production", active: false }, + ], + header: "Docker", + bgImage: "/img/site/docker-doc-icon.svg", + bgImageLight: "/img/site/docker-doc-icon-light.svg", + listItems: [ + "For local evaluation & development", + "Local inference containers", + "Multi-modal models", + "Customizable configurations", + ], + button: { + text: "Deploy Weaviate with Docker", + link: "/docs/deploy/installation-guides/docker-installation", + }, + }, + { + tabs: [ + { label: "Evaluation", active: false }, + { label: "Deployment", active: true }, + { label: "Production", active: true }, + ], + header: "Kubernetes", + bgImage: "/img/site/kubernetes-doc-icon.svg", + bgImageLight: "/img/site/kubernetes-doc-icon-light.svg", + listItems: [ + "From development to production", + "Local inference containers", + "Multi-modal models", + "Customizable configurations", + "Self-deploy or Marketplace deployment", + "(Optional) Zero-downtime updates", + ], + button: { + text: "Deploy Weaviate with Kubernetes", + link: "/docs/deploy/installation-guides/k8s-installation", + }, + }, +]; +<DeploymentCards items={deploymentCardsData} /> \ No newline at end of file diff --git a/docs/deploy/installation-guides/docker-installation.md b/docs/deploy/installation-guides/docker-installation.md new file mode 100644 index 00000000..7191ec9f --- /dev/null +++ b/docs/deploy/installation-guides/docker-installation.md @@ -0,0 +1,438 @@ +--- +title: Docker +image: og/docs/installation.jpg +# tags: ['installation', 'Docker'] +--- + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Weaviate supports deployment with Docker. + +You can [run Weaviate with default settings from a command line](#run-weaviate-with-default-settings), or [customize your configuration](#customize-your-weaviate-configuration) by creating your own `docker-compose.yml` file. + +## Run Weaviate with default settings + +:::info Added in v1.24.1 + +::: + +To run Weaviate with Docker using default settings, run this command from from your shell: + +```bash +docker run -p 8080:8080 -p 50051:50051 cr.weaviate.io/semitechnologies/weaviate:||site.weaviate_version|| +``` + +The command sets the following default [environment variables](#environment-variables) in the container: + +- `PERSISTENCE_DATA_PATH` defaults to `./data` +- `AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED` defaults to `true`. +- `QUERY_DEFAULTS_LIMIT` defaults to `10`. + +## Customize your Weaviate configuration + +You can customize your Weaviate configuration by creating a `docker-compose.yml` file. Start from our [sample Docker Compose file](#sample-docker-compose-file), or use the interactive [Configurator](#configurator) to generate a `docker-compose.yml` file. + +## Sample Docker Compose file + +This starter Docker Compose file allows: +* Use of any [API-based model provider integrations](../model-providers/index.md) (e.g. `OpenAI`, `Cohere`, `Google`, and `Anthropic`). + * This includes the relevant embedding model, generative, and reranker [integrations](../model-providers/index.md). +* Searching pre-vectorized data (without a vectorizer). +* Mounts a persistent volume called `weaviate_data` to `/var/lib/weaviate` in the container to store data. + +### Download and run + +<Tabs queryString="docker-compose"> + <TabItem value="anonymous" label="Anonymous access" default> + +Save the code below as `docker-compose.yml` to download and run Weaviate with anonymous access enabled: + +```yaml +--- +services: + weaviate: + command: + - --host + - 0.0.0.0 + - --port + - '8080' + - --scheme + - http + image: cr.weaviate.io/semitechnologies/weaviate:||site.weaviate_version|| + ports: + - 8080:8080 + - 50051:50051 + volumes: + - weaviate_data:/var/lib/weaviate + restart: on-failure:0 + environment: + QUERY_DEFAULTS_LIMIT: 25 + AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED: 'true' + PERSISTENCE_DATA_PATH: '/var/lib/weaviate' + ENABLE_API_BASED_MODULES: 'true' + CLUSTER_HOSTNAME: 'node1' +volumes: + weaviate_data: +... +``` + +:::caution +Anonymous access is strongly discouraged except for development or evaluation purposes. +::: + + </TabItem> + <TabItem value="auth" label="With authentication and authorization enabled"> + +Save the code below as `docker-compose.yml` to download and run Weaviate with authentication (non-anonymous access) and authorization enabled: + +```yaml +--- +services: + weaviate: + command: + - --host + - 0.0.0.0 + - --port + - '8080' + - --scheme + - http + image: cr.weaviate.io/semitechnologies/weaviate:||site.weaviate_version|| + ports: + - 8080:8080 + - 50051:50051 + volumes: + - weaviate_data:/var/lib/weaviate + restart: on-failure:0 + environment: + QUERY_DEFAULTS_LIMIT: 25 + PERSISTENCE_DATA_PATH: '/var/lib/weaviate' + ENABLE_API_BASED_MODULES: 'true' + CLUSTER_HOSTNAME: 'node1' + AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED: 'false' + AUTHENTICATION_APIKEY_ENABLED: 'true' + AUTHENTICATION_APIKEY_ALLOWED_KEYS: 'user-a-key,user-b-key' + AUTHENTICATION_APIKEY_USERS: 'user-a,user-b' + AUTHORIZATION_ENABLE_RBAC: 'true' + AUTHORIZATION_RBAC_ROOT_USERS: 'user-a' +volumes: + weaviate_data: +... +``` + +This setup enables API-key based [authentication](/docs/weaviate/configuration/authentication.md) and role-based access control [authorization](/docs/weaviate/configuration/authorization.md). + +It defines the users `user-a` and `user-b` and corresponding keys `user-a-key` and `user-b-key` which serve as authentication credentials for connecting to your Weaviate instance. + +The user `user-a` is granted admin access rights using the **Role-based access control (RBAC)** method. A custom role can be assigned to the user `user-b` by following the [authorization and RBAC guide](/docs/weaviate/configuration/authorization.md). + + </TabItem> +</Tabs> + +Edit the `docker-compose.yml` file to suit your needs. You can add or remove [environment variables](#environment-variables), change the port mappings, or add additional [model provider integrations](/docs/weaviate/model-providers/index.md), such as [Ollama](/docs/weaviate/model-providers/ollama/index.md), or [Hugging Face Transformers](/docs/weaviate/model-providers/transformers/index.md). + +To start your Weaviate instance, run this command from your shell: + +```bash +docker compose up -d +``` + +## Configurator + +The Configurator can generate a `docker-compose.yml` file for you. Use the Configurator to select specific Weaviate modules, including vectorizers that run locally (i.e. `text2vec-transformers`, or `multi2vec-clip`) + +import DocsConfigGen from '@site/src/components/DockerConfigGen'; + +<DocsConfigGen /> + +## Environment variables + +You can use environment variables to control your Weaviate setup, authentication and authorization, module settings, and data storage settings. + +:::info List of environment variables +A comprehensive of list environment variables [can be found on this page](/docs/weaviate/config-refs/env-vars.md). +::: + +## Example configurations + +Here are some examples of how to configure `docker-compose.yml`. + +### Persistent volume + +We recommended setting a persistent volume to avoid data loss as well as to improve reading and writing speeds. + +Make sure to run `docker compose down` when shutting down. This writes all the files from memory to disk. + +**With named volume** +```yaml +services: + weaviate: + volumes: + - weaviate_data:/var/lib/weaviate + # etc + +volumes: + weaviate_data: +``` + +After running a `docker compose up -d`, Docker will create a named volume `weaviate_data` and mount it to the `PERSISTENCE_DATA_PATH` inside the container. + +**With host binding** +```yaml +services: + weaviate: + volumes: + - /var/weaviate:/var/lib/weaviate + # etc +``` + +After running a `docker compose up -d`, Docker will mount `/var/weaviate` on the host to the `PERSISTENCE_DATA_PATH` inside the container. + +### Weaviate without any modules + +An example Docker Compose setup for Weaviate without any modules can be found below. In this case, no model inference is performed at either import or search time. You will need to provide your own vectors (e.g. from an outside ML model) at import and search time: + +```yaml +services: + weaviate: + image: cr.weaviate.io/semitechnologies/weaviate:||site.weaviate_version|| + ports: + - 8080:8080 + - 50051:50051 + restart: on-failure:0 + environment: + QUERY_DEFAULTS_LIMIT: 25 + AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED: 'true' + PERSISTENCE_DATA_PATH: '/var/lib/weaviate' + CLUSTER_HOSTNAME: 'node1' +``` + +### Weaviate with the `text2vec-transformers` module + +An example Docker Compose file with the transformers model [`sentence-transformers/multi-qa-MiniLM-L6-cos-v1`](https://huggingface.co/sentence-transformers/multi-qa-MiniLM-L6-cos-v1) is: + +```yaml +services: + weaviate: + image: cr.weaviate.io/semitechnologies/weaviate:||site.weaviate_version|| + restart: on-failure:0 + ports: + - 8080:8080 + - 50051:50051 + environment: + QUERY_DEFAULTS_LIMIT: 20 + AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED: 'true' + PERSISTENCE_DATA_PATH: "./data" + DEFAULT_VECTORIZER_MODULE: text2vec-transformers + ENABLE_MODULES: text2vec-transformers + TRANSFORMERS_INFERENCE_API: http://t2v-transformers:8080 + CLUSTER_HOSTNAME: 'node1' + t2v-transformers: + image: cr.weaviate.io/semitechnologies/transformers-inference:sentence-transformers-multi-qa-MiniLM-L6-cos-v1 + environment: + ENABLE_CUDA: 0 # set to 1 to enable + # NVIDIA_VISIBLE_DEVICES: all # enable if running with CUDA +``` + +Note that transformer models are neural networks built to run on GPUs. Running Weaviate with the `text2vec-transformers` module and without GPU is possible, but it will be slower. Enable CUDA with `ENABLE_CUDA=1` if you have a GPU available. + +For more information on how to set up the environment with the +`text2vec-transformers` integration, see [this +page](/docs/weaviate/model-providers/transformers/embeddings.md). + +The `text2vec-transformers` module requires at least Weaviate version `v1.2.0`. + +### Unreleased versions + +import RunUnreleasedImages from '/_includes/configuration/run-unreleased.mdx' + +<RunUnreleasedImages /> + +## Multi-node configuration + +To configure Weaviate to use multiple host nodes, follow these steps: + +- Configure one node as a "founding" member +- Set the `CLUSTER_JOIN` variable for the other nodes in the cluster. +- Set the `CLUSTER_GOSSIP_BIND_PORT` for each node. +- Set the `CLUSTER_DATA_BIND_PORT` for each node. +- Set the `RAFT_JOIN` each node. +- Set the `RAFT_BOOTSTRAP_EXPECT` for each node with the number of voters. +- Optionally, set the hostname for each node using `CLUSTER_HOSTNAME`. + +(Read more about [horizontal replication in Weaviate](/docs/weaviate/concepts/cluster.md).) + +So, the Docker Compose file includes environment variables for the "founding" member that look like this: + +```yaml + weaviate-node-1: # Founding member service name + ... # truncated for brevity + environment: + CLUSTER_HOSTNAME: 'node1' + CLUSTER_GOSSIP_BIND_PORT: '7100' + CLUSTER_DATA_BIND_PORT: '7101' + RAFT_JOIN: 'node1,node2,node3' + RAFT_BOOTSTRAP_EXPECT: 3 +``` + +And the other members' configurations may look like this: + +```yaml + weaviate-node-2: + ... # truncated for brevity + environment: + CLUSTER_HOSTNAME: 'node2' + CLUSTER_GOSSIP_BIND_PORT: '7102' + CLUSTER_DATA_BIND_PORT: '7103' + CLUSTER_JOIN: 'weaviate-node-1:7100' # This must be the service name of the "founding" member node. + RAFT_JOIN: 'node1,node2,node3' + RAFT_BOOTSTRAP_EXPECT: 3 +``` + +Below is an example configuration for a 3-node setup. You may be able to test [replication](/docs/weaviate/configuration/replication.md) examples locally using this configuration. + + +<details> + <summary>Docker Compose file for a replication setup with 3 nodes</summary> + +```yaml +services: + weaviate-node-1: + init: true + command: + - --host + - 0.0.0.0 + - --port + - '8080' + - --scheme + - http + image: cr.weaviate.io/semitechnologies/weaviate:||site.weaviate_version|| + ports: + - 8080:8080 + - 6060:6060 + - 50051:50051 + restart: on-failure:0 + volumes: + - ./data-node-1:/var/lib/weaviate + environment: + LOG_LEVEL: 'debug' + QUERY_DEFAULTS_LIMIT: 25 + AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED: 'true' + PERSISTENCE_DATA_PATH: '/var/lib/weaviate' + ENABLE_API_BASED_MODULES: 'true' + CLUSTER_HOSTNAME: 'node1' + CLUSTER_GOSSIP_BIND_PORT: '7100' + CLUSTER_DATA_BIND_PORT: '7101' + RAFT_JOIN: 'node1,node2,node3' + RAFT_BOOTSTRAP_EXPECT: 3 + + weaviate-node-2: + init: true + command: + - --host + - 0.0.0.0 + - --port + - '8080' + - --scheme + - http + image: cr.weaviate.io/semitechnologies/weaviate:||site.weaviate_version|| + ports: + - 8081:8080 + - 6061:6060 + - 50052:50051 + restart: on-failure:0 + volumes: + - ./data-node-2:/var/lib/weaviate + environment: + LOG_LEVEL: 'debug' + QUERY_DEFAULTS_LIMIT: 25 + AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED: 'true' + PERSISTENCE_DATA_PATH: '/var/lib/weaviate' + ENABLE_API_BASED_MODULES: 'true' + CLUSTER_HOSTNAME: 'node2' + CLUSTER_GOSSIP_BIND_PORT: '7102' + CLUSTER_DATA_BIND_PORT: '7103' + CLUSTER_JOIN: 'weaviate-node-1:7100' + RAFT_JOIN: 'node1,node2,node3' + RAFT_BOOTSTRAP_EXPECT: 3 + + weaviate-node-3: + init: true + command: + - --host + - 0.0.0.0 + - --port + - '8080' + - --scheme + - http + image: cr.weaviate.io/semitechnologies/weaviate:||site.weaviate_version|| + ports: + - 8082:8080 + - 6062:6060 + - 50053:50051 + restart: on-failure:0 + volumes: + - ./data-node-3:/var/lib/weaviate + environment: + LOG_LEVEL: 'debug' + QUERY_DEFAULTS_LIMIT: 25 + AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED: 'true' + PERSISTENCE_DATA_PATH: '/var/lib/weaviate' + ENABLE_API_BASED_MODULES: 'true' + CLUSTER_HOSTNAME: 'node3' + CLUSTER_GOSSIP_BIND_PORT: '7104' + CLUSTER_DATA_BIND_PORT: '7105' + CLUSTER_JOIN: 'weaviate-node-1:7100' + RAFT_JOIN: 'node1,node2,node3' + RAFT_BOOTSTRAP_EXPECT: 3 +``` + +</details> + +:::note Port number conventions +It is a Weaviate convention to set the `CLUSTER_DATA_BIND_PORT` to 1 higher than `CLUSTER_GOSSIP_BIND_PORT`. +::: + + +## Shell attachment options + +The output of `docker compose up` is quite verbose as it attaches to the logs of all containers. + +You can attach the logs only to Weaviate itself, for example, by running the following command instead of `docker compose up`: + +```bash +# Run Docker Compose +docker compose up -d && docker compose logs -f weaviate +``` + +Alternatively you can run docker compose entirely detached with `docker compose up -d` _and_ then poll `{bindaddress}:{port}/v1/meta` until you receive a status `200 OK`. + +<!-- TODO: +1. Check that all environment variables are also applicable for the kubernetes setup and associated values.yaml config file. +2. Take this section out and into References; potentially consolidate with others as they are strewn around the docs. (E.g. backup env variables are not included here.) --> + +## Troubleshooting + +### Set `CLUSTER_HOSTNAME` if it may change over time + +In some systems, the cluster hostname may change over time. This is known to create issues with a single-node Weaviate deployment. To avoid this, set the `CLUSTER_HOSTNAME` environment variable in the `values.yaml` file to the cluster hostname. + +```yaml +--- +services: + weaviate: + # ... + environment: + CLUSTER_HOSTNAME: 'node1' +... +``` + +## Related pages + +- If you are new to Docker, see [Docker Introduction for Weaviate Users](https://weaviate.io/blog/docker-and-containers-with-weaviate). + +## Questions and feedback + +import DocsFeedback from '/_includes/docs-feedback.mdx'; + +<DocsFeedback/> diff --git a/docs/deploy/installation-guides/k8s-installation.md b/docs/deploy/installation-guides/k8s-installation.md new file mode 100644 index 00000000..c9b43685 --- /dev/null +++ b/docs/deploy/installation-guides/k8s-installation.md @@ -0,0 +1,254 @@ +--- +title: Kubernetes +sidebar_position: 3 +image: og/docs/installation.jpg +# tags: ['installation', 'Kubernetes'] +--- + +:::tip End-to-end guide +For a tutorial on how to use [minikube](https://minikube.sigs.k8s.io/docs/) to deploy Weaviate on Kubernetes, see the Weaviate Academy course, [Weaviate on Kubernetes](../../academy/deployment/k8s/index.md). +::: + +## Requirements + +* A recent Kubernetes Cluster (at least version 1.23). If you are in a development environment, consider using the kubernetes cluster that is built into Docker desktop. For more information, see the [Docker documentation](https://docs.docker.com/desktop/kubernetes/). +* The cluster needs to be able to provision `PersistentVolumes` using Kubernetes' `PersistentVolumeClaims`. +* A file system that can be mounted read-write by a single node to allow Kubernetes' `ReadWriteOnce` access mode. +* Helm version v3 or higher. The current Helm chart is version `||site.helm_version||`. + +## Weaviate Helm chart + +:::note Important: Set the correct Weaviate version +As a best practice, explicitly set the Weaviate version in the Helm chart.<br/><br/> + +Set the version in your `values.yaml` file or [overwrite the default value](#deploy-install-the-helm-chart) during deployment. +::: + +To install the Weaviate chart on your Kubernetes cluster, follow these steps: + +### Verify tool setup and cluster access + +```bash +# Check if helm is installed +helm version +# Make sure `kubectl` is configured correctly and you can access the cluster. +# For example, try listing the pods in the currently configured namespace. +kubectl get pods +``` + +### Get the Helm Chart + +Add the Weaviate helm repo that contains the Weaviate helm chart. + +```bash +helm repo add weaviate https://weaviate.github.io/weaviate-helm +helm repo update +``` + +Get the default `values.yaml` configuration file from the Weaviate helm chart: +```bash +helm show values weaviate/weaviate > values.yaml +``` + +### Modify values.yaml + +To customize the Helm chart for your environment, edit the [`values.yaml`](https://github.com/weaviate/weaviate-helm/blob/master/weaviate/values.yaml) +file. The default `yaml` file is extensively documented to help you configure your system. + +#### Replication + +The default configuration defines one Weaviate replica cluster. + +#### Local models + +Local models, such as `text2vec-transformers`, `qna-transformers`, and `img2vec-neural` are disabled by default. To enable a model, set the model's +`enabled` flag to `true`. + +#### Resource limits + +Starting in Helm chart version 17.0.1, constraints on module resources are commented out to improve performance. To constrain resources for specific modules, add the constraints in your `values.yaml` file. + +#### gRPC service configuration + +Starting in Helm chart version 17.0.0, the gRPC service is enabled by default. If you use an older Helm chart, edit your `values.yaml` file to enable gRPC. + +Check that the `enabled` field is set to `true` and the `type` field to `LoadBalancer`. These settings allow you to access the [gRPC API](https://weaviate.io/blog/grpc-performance-improvements) from outside the Kubernetes cluster. + +```yaml +grpcService: + enabled: true # ⬅️ Make sure this is set to true + name: weaviate-grpc + ports: + - name: grpc + protocol: TCP + port: 50051 + type: LoadBalancer # ⬅️ Set this to LoadBalancer (from NodePort) +``` + +#### Authentication and authorization + +An example configuration for authentication is shown below. + +```yaml +authentication: + apikey: + enabled: true + allowed_keys: + - readonly-key + - secr3tk3y + users: + - readonly@example.com + - admin@example.com + anonymous_access: + enabled: false + oidc: + enabled: true + issuer: https://auth.wcs.api.weaviate.io/auth/realms/SeMI + username_claim: email + groups_claim: groups + client_id: wcs +authorization: + admin_list: + enabled: true + users: + - someuser@weaviate.io + - admin@example.com + readonly_users: + - readonly@example.com +``` + +In this example, the key `readonly-key` will authenticate a user as the `readonly@example.com` identity, and `secr3tk3y` will authenticate a user as `admin@example.com`. + +OIDC authentication is also enabled, with WCD as the token issuer/identity provider. Thus, users with WCD accounts could be authenticated. This configuration sets `someuser@weaviate.io` as an admin user, so if `someuser@weaviate.io` were to authenticate, they will be given full (read and write) privileges. + +For further, general documentation on authentication and authorization configuration, see: +- [Authentication](../configuration/authentication.md) +- [Authorization](../configuration/authorization.md) + +#### Run as non-root user + +By default, weaviate runs as the root user. To run as a non-privileged user, edit the settings in the `containerSecurityContext` section. + +The `init` container always runs as root to configure the node. Once the system is started, it run a non-privileged user if you have one configured. + +### Deploy (install the Helm chart) + +You can deploy the helm charts as follows: + +```bash +# Create a Weaviate namespace +kubectl create namespace weaviate + +# Deploy +helm upgrade --install \ + "weaviate" \ + weaviate/weaviate \ + --namespace "weaviate" \ + --values ./values.yaml +``` + +The above assumes that you have permissions to create a new namespace. If you +have only namespace-level permissions, you can skip creating a new +namespace and adjust the namespace argument on `helm upgrade` according to the +name of your pre-configured namespace. + +Optionally, you can provide the `--create-namespace` parameter which will create the namespace if not present. + +### Updating the installation after the initial deployment + +The above command (`helm upgrade...`) is idempotent. In other words, you can run it multiple times after adjusting your desired configuration without causing any unintended changes or side effects. + +### Upgrading to `1.25` or higher from pre-`1.25` + +:::caution Important +::: + +To upgrade to `1.25` or higher from a pre-`1.25` version, you must delete the deployed `StatefulSet`, update the helm chart to version `17.0.0` or higher, and re-deploy Weaviate. + +See the [1.25 migration guide for Kubernetes](../more-resources/migration/weaviate-1-25.md) for more details. + +## Additional Configuration Help + +- [Cannot list resource "configmaps" in API group when deploying Weaviate k8s setup on GCP](https://stackoverflow.com/questions/58501558/cannot-list-resource-configmaps-in-api-group-when-deploying-weaviate-k8s-setup) +- [Error: UPGRADE FAILED: configmaps is forbidden](https://stackoverflow.com/questions/58501558/cannot-list-resource-configmaps-in-api-group-when-deploying-weaviate-k8s-setup) + +### Using EFS with Weaviate + +In some circumstances, you may wish, or need, to use EFS (Amazon Elastic File System) with Weaviate. And we note in the case of AWS Fargate, you must create the [PV (persistent volume)](https://kubernetes.io/docs/concepts/storage/persistent-volumes/) manually, as the PVC will NOT create a PV for you. + +To use EFS with Weaviate, you need to: + +- Create an EFS file system. +- Create an EFS access point for every Weaviate replica. + - All of the Access Points must have a different root-directory so that Pods do not share the data, otherwise it will fail. +- Create EFS mount targets for each subnet of the VPC where Weaviate is deployed. +- Create StorageClass in Kubernetes using EFS. +- Create Weaviate Volumes, where each volume has a different AccessPoint for VolumeHandle(as mentioned above). +- Deploy Weaviate. + +This code is an example of a PV for `weaviate-0` Pod: + +```yaml +apiVersion: v1 +kind: PersistentVolume +metadata: + name: weaviate-0 +spec: + capacity: + storage: 8Gi + volumeMode: Filesystem + accessModes: + - ReadWriteOnce + persistentVolumeReclaimPolicy: Delete + storageClassName: "efs-sc" + csi: + driver: efs.csi.aws.com + volumeHandle: <FileSystemId>::<AccessPointId-for-weaviate-0-Pod> + claimRef: + namespace: <namespace where Weaviate is/going to be deployed> + name: weaviate-data-weaviate-0 +``` + +For more, general information on running EFS with Fargate, we recommend reading [this AWS blog](https://aws.amazon.com/blogs/containers/running-stateful-workloads-with-amazon-eks-on-aws-fargate-using-amazon-efs/). + +### Using Azure file CSI with Weaviate +The provisioner `file.csi.azure.com` is **not supported** and will lead to file corruptions. Instead, make sure the storage class defined in values.yaml is from provisioner `disk.csi.azure.com`, for example: + +```yaml +storage: + size: 32Gi + storageClassName: managed +``` + +you can get the list of available storage classes in your cluster with: + +``` +kubectl get storageclasses +``` + +## Troubleshooting + +- If you see `No private IP address found, and explicit IP not provided`, set the pod subnet to be in an valid ip address range of the following: + + ``` + 10.0.0.0/8 + 100.64.0.0/10 + 172.16.0.0/12 + 192.168.0.0/16 + 198.19.0.0/16 + ``` + +### Set `CLUSTER_HOSTNAME` if it may change over time + +In some systems, the cluster hostname may change over time. This is known to create issues with a single-node Weaviate deployment. To avoid this, set the `CLUSTER_HOSTNAME` environment variable in the `values.yaml` file to the cluster hostname. + +```yaml +env: + - CLUSTER_HOSTNAME: "node-1" +``` + +## Questions and feedback + +import DocsFeedback from '/_includes/docs-feedback.mdx'; + +<DocsFeedback/> diff --git a/docs/deploy/k8s/_category_.json b/docs/deploy/k8s/_category_.json deleted file mode 100644 index 78521841..00000000 --- a/docs/deploy/k8s/_category_.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "label": "k8s", - "position": 1 -} \ No newline at end of file diff --git a/docs/deploy/production/Kubernetes/index.mdx b/docs/deploy/production/Kubernetes/index.mdx index 971bf23f..8c887185 100644 --- a/docs/deploy/production/Kubernetes/index.mdx +++ b/docs/deploy/production/Kubernetes/index.mdx @@ -1,3 +1,9 @@ +--- + +sidebar_label: "Kubernetes in Production" + +--- + # Kubernetes Weaviate leverages Kubernetes for scalable, resilient, and production-grade deployments. diff --git a/secondaryNavbar.js b/secondaryNavbar.js index 5e45cc42..4f7ecb14 100644 --- a/secondaryNavbar.js +++ b/secondaryNavbar.js @@ -51,7 +51,7 @@ const secondaryNavbarItems = { links: [ { label: "Get Started", link: "/docs/deploy", sidebar: "deploySidebar" }, /*{ label: "Kubernetes", link: "/docs/deploy/k8s", sidebar: "deployK8sSidebar" },*/ - { label: "Production", link: "/docs/deploy/production", sidebar: "deployProductionSidebar"}, + { label: "Production Environments", link: "/docs/deploy/production", sidebar: "deployProductionSidebar"}, /*{ label: "AWS", link: "/docs/deploy/aws", sidebar: "deployAwsSidebar" },*/ ], }, diff --git a/sidebars.js b/sidebars.js index 18aa2cda..5edbd50a 100644 --- a/sidebars.js +++ b/sidebars.js @@ -408,7 +408,22 @@ const sidebars = { "weaviate/more-resources/glossary", "weaviate/more-resources/example-datasets", ], - deploySidebar: ["deploy/index"], + deploySidebar: [ + { + type: "doc", + id: "deploy/index", // document ID + label: "Overview", // sidebar label + }, + { + type: "category", + label: "Installation Guides", + collapsible: true, + collapsed: true, + items: [ + "deploy/installation-guides/k8s-installation", + "deploy/installation-guides/docker-installation", + ], + },], /*deployAwsSidebar: [ { type: "autogenerated", From 19ed67dfe59134a0a6932064d249c143ae240ef3 Mon Sep 17 00:00:00 2001 From: DanielleWashington <dwashington.100292@gmail.com> Date: Mon, 24 Mar 2025 10:20:23 -0400 Subject: [PATCH 15/39] migrating aws and gcp installation guides --- .../installation-guides/aws-installation.md | 165 ++++++++++++++++++ .../installation-guides/gcp-installation.md | 145 +++++++++++++++ sidebars.js | 5 +- 3 files changed, 314 insertions(+), 1 deletion(-) create mode 100644 docs/deploy/installation-guides/aws-installation.md create mode 100644 docs/deploy/installation-guides/gcp-installation.md diff --git a/docs/deploy/installation-guides/aws-installation.md b/docs/deploy/installation-guides/aws-installation.md new file mode 100644 index 00000000..6d88d782 --- /dev/null +++ b/docs/deploy/installation-guides/aws-installation.md @@ -0,0 +1,165 @@ +--- +title: AWS Marketplace +description: Install Weaviate through the AWS Marketplace for quick cloud deployment. +image: og/docs/installation.jpg +# tags: ['installation', 'AWS Marketplace'] +--- + +import ReactPlayer from 'react-player/lazy' + +<!-- NOTE: To show this page on the sidebar, remove the `sidebar_class_name: hidden` line above. --> + +You can use [AWS Marketplace](https://aws.amazon.com/marketplace) to directly launch a Weaviate cluster. + +We use an [AWS CloudFormation template](https://aws.amazon.com/cloudformation/) for delivery. + +:::info Prerequisites +- An AWS account with sufficient credit / payment method. +- (Recommended) Familiarity with AWS and the AWS console. +::: + +<details> + <summary> + What resources are used & installed? + </summary> + +This will set up the following resources: +- EKS Cluster with a Single Node Group + - In the default VPC or a fresh VPC with CIDR 10.0.0.0/16 +- Load Balancer Controller for EKS +- aws-ebs-csi-driver for EKS +- The latest selected version of Weaviate (e.g. `1.20.3` if you select `1.20`) + - This will be installed using our official Helm chart + +</details> + +## Installation instructions + +### Video + +If you prefer a video, you can watch the following walkthrough. This video is recorded in September 2023, some details may have changed since then. + +<ReactPlayer className="react-player" url='https://youtu.be/_2rBrKp83iM' controls='true' /> +<br/> + +### AWS Marketplace + +1. Go to Weaviate's [AWS Marketplace listing](https://aws.amazon.com/marketplace/pp/prodview-cicacyv63r43i) +1. Subscribe to the product in AWS Marketplace by following the instructions on the page. At the time of writing (August 2023), the steps are to: + 1. Click <kbd>Continue to Subscribe</kbd>, then go to the next page + 1. Click <kbd>Continue to Configuration</kbd>, then go to the next page + 1. Select the fulfillment option & software version from the list. Then click <kbd>Continue to Launch</kbd>. +1. Launch the software using a CloudFormation template (select the one for your preferred availability zone in the table below): + +| Region | CloudFormation template link (per Availability Zone) | +| --- | --- | +| AP | [ap-northeast-1](https://ap-northeast-1.console.aws.amazon.com/cloudformation/home?region=ap-northeast-1#/stacks/quickcreate?templateURL=https://weaviate-aws-marketplace.s3.amazonaws.com/cdk-assets/latest/WeaviateEKS.template.json); [ap-northeast-2](https://ap-northeast-2.console.aws.amazon.com/cloudformation/home?region=ap-northeast-2#/stacks/quickcreate?templateURL=https://weaviate-aws-marketplace.s3.amazonaws.com/cdk-assets/latest/WeaviateEKS.template.json); [ap-northeast-3](https://ap-northeast-3.console.aws.amazon.com/cloudformation/home?region=ap-northeast-3#/stacks/quickcreate?templateURL=https://weaviate-aws-marketplace.s3.amazonaws.com/cdk-assets/latest/WeaviateEKS.template.json); [ap-south-1](https://ap-south-1.console.aws.amazon.com/cloudformation/home?region=ap-south-1#/stacks/quickcreate?templateURL=https://weaviate-aws-marketplace.s3.amazonaws.com/cdk-assets/latest/WeaviateEKS.template.json); [ap-southeast-1](https://ap-southeast-1.console.aws.amazon.com/cloudformation/home?region=ap-southeast-1#/stacks/quickcreate?templateURL=https://weaviate-aws-marketplace.s3.amazonaws.com/cdk-assets/latest/WeaviateEKS.template.json); [ap-southeast-2](https://ap-southeast-2.console.aws.amazon.com/cloudformation/home?region=ap-southeast-2#/stacks/quickcreate?templateURL=https://weaviate-aws-marketplace.s3.amazonaws.com/cdk-assets/latest/WeaviateEKS.template.json) | +| CA | [ca-central-1](https://ca-central-1.console.aws.amazon.com/cloudformation/home?region=ca-central-1#/stacks/quickcreate?templateURL=https://weaviate-aws-marketplace.s3.amazonaws.com/cdk-assets/latest/WeaviateEKS.template.json) | +| EU | [eu-central-1](https://eu-central-1.console.aws.amazon.com/cloudformation/home?region=eu-central-1#/stacks/quickcreate?templateURL=https://weaviate-aws-marketplace.s3.amazonaws.com/cdk-assets/latest/WeaviateEKS.template.json); [eu-north-1](https://eu-north-1.console.aws.amazon.com/cloudformation/home?region=eu-north-1#/stacks/quickcreate?templateURL=https://weaviate-aws-marketplace.s3.amazonaws.com/cdk-assets/latest/WeaviateEKS.template.json); [eu-west-1](https://eu-west-1.console.aws.amazon.com/cloudformation/home?region=eu-west-1#/stacks/quickcreate?templateURL=https://weaviate-aws-marketplace.s3.amazonaws.com/cdk-assets/latest/WeaviateEKS.template.json); [eu-west-2](https://eu-west-2.console.aws.amazon.com/cloudformation/home?region=eu-west-2#/stacks/quickcreate?templateURL=https://weaviate-aws-marketplace.s3.amazonaws.com/cdk-assets/latest/WeaviateEKS.template.json); [eu-west-3](https://eu-west-3.console.aws.amazon.com/cloudformation/home?region=eu-west-3#/stacks/quickcreate?templateURL=https://weaviate-aws-marketplace.s3.amazonaws.com/cdk-assets/latest/WeaviateEKS.template.json) | +| SA | [sa-east-1](https://sa-east-1.console.aws.amazon.com/cloudformation/home?region=sa-east-1#/stacks/quickcreate?templateURL=https://weaviate-aws-marketplace.s3.amazonaws.com/cdk-assets/latest/WeaviateEKS.template.json) | +| US | [us-east-1](https://us-east-1.console.aws.amazon.com/cloudformation/home?region=us-east-1#/stacks/quickcreate?templateURL=https://weaviate-aws-marketplace.s3.amazonaws.com/cdk-assets/latest/WeaviateEKS.template.json); [us-east-2](https://us-east-2.console.aws.amazon.com/cloudformation/home?region=us-east-2#/stacks/quickcreate?templateURL=https://weaviate-aws-marketplace.s3.amazonaws.com/cdk-assets/latest/WeaviateEKS.template.json); [us-west-1](https://us-west-1.console.aws.amazon.com/cloudformation/home?region=us-west-1#/stacks/quickcreate?templateURL=https://weaviate-aws-marketplace.s3.amazonaws.com/cdk-assets/latest/WeaviateEKS.template.json); [us-west-2](https://us-west-2.console.aws.amazon.com/cloudformation/home?region=us-west-2#/stacks/quickcreate?templateURL=https://weaviate-aws-marketplace.s3.amazonaws.com/cdk-assets/latest/WeaviateEKS.template.json) | + +### Configuration & Cluster creation + +:::info Before you get started +#### Some settings may not be changed after launch + +Not all settings may be changed after launch. For example, these settings are currently not changeable after launch: +- weaviatePVCSize +- albDriver +- ebsDriver +- vpcUseDefault + +#### Some settings may lead to recreation of the cluster + +- Changes to the instance type will lead to recreation of the node pool. + +#### Suggested configurations + +- The default values should be suitable for a majority of cases. +- `weaviatePVCSize`: For production environments, at least 500GB per StatefulSet pod is recommended. (Smaller disks may be sufficient for dev environments.) +- `weaviateAuthType`: We recommend not running Weaviate with anonymous access. We suggest setting it to `apikey` and setting a key, for example by executing `pwgen -A -s 32` to generate a random string. +::: + +Once you open the CloudFormation template, you should see a set of options similar to below. + +Here, you can: + +1. Set the `stack name` for identifying the stack in AWS (required). +1. Set Weaviate/AWS parameters, such as: + - number of nodes + - instance types + - Weaviate authentication parameters. +1. Confirm required resources & proceed to <kbd>Create stack</kbd>. + - This template may require additional resources and capabilities. + +After clicking <kbd>Create stack</kbd>, the creation process may take a while, such as around 30 minutes. + +You can check the status of individual resources in the `Events` tab. Once the stack has been created, the status for the stack will change to `✅ CREATE_COMPLETE`. + +## Accessing the cluster + +Once the stack has been created, you can access the cluster using [`kubectl`](https://kubernetes.io/docs/tasks/tools/), and Weaviate itself using the load balancer. + +### Interaction using `kubectl` + +You can run the following command which will update or create a kubeconfig file for the Weaviate cluster: + +``` +aws eks update-kubeconfig --name [cluster-name] --region [aws-region]--role-arn arn:aws:iam::[AccountID]:role/[StackName]-MastersRole[XX] +``` + +:::tip How to find the kubectl command +The exact command can be found in the CloudFormation stack, in the `Outputs` tab, under the `EKSClusterConfigCommand` output. +::: + +Once that's set up, you can run `kubectl` commands as usual. For example + +- `kubectl get pods -n weaviate` to list all pods in the `weaviate` namespace. +- `kubectl get svc --all-namespaces` to list all services in all namespaces. + +### Finding the Weaviate URL + +Once the stack has been created, you can access Weaviate via the load balancer URL. + +You can find the Weaviate endpoint URL by any of: +- Going to the `Services` section of AWS, under `EC2` > `Load Balancers`. Find the load balancer, and look for the `DNS name` column. +- Running `kubectl get svc -n weaviate` and looking for the `EXTERNAL-IP` of the `weaviate` service. + +The load balancer URL (e.g. `a520f010285b8475eb4b86095cabf265-854109584.eu-north-1.elb.amazonaws.com`) will be the Weaviate URL (e.g. `http://a520f010285b8475eb4b86095cabf265-854109584.eu-north-1.elb.amazonaws.com`). + +## Deleting the cluster + +You can delete the cluster by deleting the CloudFormation stack. + +Caution. This action deletes your data from Weaviate. If you want to keep your data, back it up or export the data before you delete the cluster. + +### Some resources many require manual deletion + +:::caution +Verify that all unused resources are deleted. You continue to incur costs for undeleted resources. +::: + +There may be some AWS resources that are not deleted automatically when the CloudFormation stack is deleted. For example, EBS volumes, and Key Management Service (KMS) keys may not be deleted from time to time. + +You must delete these manually. + +#### Tips + +- If your CloudFormation stack indicates "DELETE_FAILED", you may be able to re-initiate deletion of these resources. +- Review the `Resources` tab of the CloudFormation stack to find resources that may not have been deleted. +- Key Management Service (KMS) keys may be deleted by going to the KMS console, and deleting the keys manually. You may need to schedule deletion of the keys. + + +## Billing + +You will be charged for Weaviate and associated resources directly by AWS. + +This will, for example, include the EC2 instances, EBS volumes, and any other resources used by the cluster. + + +## Questions and feedback + +import DocsFeedback from '/_includes/docs-feedback.mdx'; + +<DocsFeedback/> diff --git a/docs/deploy/installation-guides/gcp-installation.md b/docs/deploy/installation-guides/gcp-installation.md new file mode 100644 index 00000000..477c4cda --- /dev/null +++ b/docs/deploy/installation-guides/gcp-installation.md @@ -0,0 +1,145 @@ +--- +title: Google Cloud Marketplace +description: Set up Weaviate using Google Cloud Marketplace for simplified deployment. +image: og/docs/installation.jpg +tags: ['installation', 'Google Cloud Marketplace'] +--- + +You can use [Google Cloud Marketplace](https://console.cloud.google.com/marketplace) to directly launch a Weaviate cluster. + +:::info Prerequisites +- A Google Cloud account with sufficient credit / payment method. +- (Recommended) Familiarity with Google Cloud and the Google Cloud console. +::: + +## Installation instructions + +Broadly, the steps are as follows: + +1. Go to Weaviate's Google Cloud Marketplace listing page and click <kbd>Configure</kbd>. +1. Configure and deploy Weaviate by following the on-screen instructions. +<!-- 1. Review the GC Marketplace Terms of Service, and if you agree with the terms, confirm accordingly. --> +<!-- 1. Select Deploy to start deploying Weaviate on your GKE cluster. --> + +We go through these steps in detail below. + +### Configuration options + +:::info Before you get started + +<!-- #### Some settings may not be changed after launch + +Not all settings may be changed after launch. For example, these settings are currently not changeable after launch: +- weaviatePVCSize +- albDriver +- ebsDriver +- vpcUseDefault + +#### Some settings may lead to recreation of the cluster + +- Changes to the instance type will lead to recreation of the node pool. --> + +#### Suggested configurations + +- The default values for settings such as `Global Query limit`, `Modules` and `Storage Size` should be suitable for a majority of cases. +- `Storage size`: For production environments, at least 500GB per pod is recommended. (Smaller disks may be sufficient for dev environments.) +<!-- - `weaviateAuthType`: We recommend not running Weaviate with anonymous access. We suggest setting it to `apikey` and setting a key, for example by excuting `pwgen -A -s 32` to generate a random string. --> + +::: + +Once you are at the deployment page, you should see a set of options. + +You will need to: +1. Select a GKE cluster to deploy Weaviate to. + 1. Optionally, you can create a new cluster and then specify it. +1. Set the `namespace` (for dividing cluster resources) and a unique `app instance name` for identifying the application. +1. Set the app instance name. +1. Set the service account for billing. +1. Set Weaviate parameters, such as `Replicas of Weaviate Instances`, `Global Query Limit`, `Enable Modules` and `Storage Size`. + <!-- - Weaviate authentication parameters. --> +1. If you agree, accept the terms of service and click <kbd>Deploy</kbd>. + +Once you have done so, Weaviate will be deployed to the selected cluster. This should take a few minutes. + +## Accessing the cluster + +Once the application has been created, you can access the cluster through the load balancer. + +You can interact with the cluster using [`kubectl`](https://kubernetes.io/docs/tasks/tools/), or through the Weaviate API. We show examples below. + +### Interaction using `kubectl` + +You can run the following command which will update or create a kubeconfig file for the Weaviate cluster: + +``` +gcloud container clusters get-credentials [YOUR_CLUSTER_NAME] --zone [YOUR_GC_ZONE] --project [YOUR_GC_PROJECT] +``` + +:::tip How to find the kubectl command +The exact command can be found in the Kubernetes Engine page, by clicking on the vertical ellipsis ( <i class="fa-solid fa-ellipsis-vertical"></i> ) for your cluster, and clicking <kbd>Connect</kbd>. +::: + +Once that's set up, you can run `kubectl` commands as usual. For example +- `kubectl get pods -n default` to list all pods in the `default` namespace (or whatever namespace you specified). +- `kubectl get svc --all-namespaces` to list all services in all namespaces. + +<details> + <summary>Example output</summary> + +An example output of `kubectl get svc --all-namespaces` is: + +```bash +NAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +application-system application-controller-manager-service ClusterIP 10.24.8.231 <none> 443/TCP 11m +default kubernetes ClusterIP 10.24.0.1 <none> 443/TCP 11m +default weaviate LoadBalancer 10.24.13.245 34.173.96.14 80:30664/TCP 8m38s +default weaviate-headless ClusterIP None <none> 80/TCP 8m38s +gmp-system alertmanager ClusterIP None <none> 9093/TCP 10m +gmp-system gmp-operator ClusterIP 10.24.12.8 <none> 8443/TCP,443/TCP 10m +kalm-system kalm-controller-manager-service ClusterIP 10.24.7.189 <none> 443/TCP 11m +kube-system default-http-backend NodePort 10.24.12.61 <none> 80:32508/TCP 10m +kube-system kube-dns ClusterIP 10.24.0.10 <none> 53/UDP,53/TCP 11m +kube-system metrics-server ClusterIP 10.24.13.204 <none> 443/TCP +``` + +Here, the externally accessible Weaviate IP is `34.173.96.14`. + +</details> + +### Finding the Weaviate URL + +Once the application has been created, you can access Weaviate via the load balancer URL. + +You can find the Weaviate endpoint URL by any of: +- Going to the `Kubernetes Engine` section of Google Cloud, under `Service & Ingress`. Find the load balancer, and look for the `Endpoints` column. +- Running `kubectl get svc -n [YOUR_NAMESPACE_NAME]` and looking for the `EXTERNAL-IP` of the `weaviate` service. +The load balancer URL (e.g. `34.38.6.240`) will be the Weaviate URL (e.g. `http://34.38.6.240`). + +## Removing Weaviate and the cluster + +:::caution +Verify that all unused resources are deleted. You continue to incur costs for any remaining resources. +::: + +### Removing Weaviate + +To remove Weaviate and the associated services, go to the `Applications` section of `Kubernetes Engine` in Google Cloud, and delete the Weaviate deployment. + +Review the `Services & Ingress` section as well as the `Storage` section to ensure that all associated services and storage are removed. You may need to delete any remaining resources manually. + +### Removing the cluster + +If you no longer require the cluster (e.g. if you created a new cluster for Weaviate), you can delete the cluster by going to the `Applications` section of `Kubernetes Engine` in Google Cloud. Delete the cluster by selecting it from the list, clicking <kbd>DELETE</kbd>, and following the prompts. + +## Billing + +You will be charged for Weaviate and associated resources directly by Google Cloud. + +This will, for example, include the compute instances, volumes, and any other resources used by the cluster. + + +## Questions and feedback + +import DocsFeedback from '/_includes/docs-feedback.mdx'; + +<DocsFeedback/> diff --git a/sidebars.js b/sidebars.js index 5edbd50a..72dd6141 100644 --- a/sidebars.js +++ b/sidebars.js @@ -422,8 +422,11 @@ const sidebars = { items: [ "deploy/installation-guides/k8s-installation", "deploy/installation-guides/docker-installation", + "deploy/installation-guides/gcp-installation", + "deploy/installation-guides/aws-installation", ], - },], + }, + ], /*deployAwsSidebar: [ { type: "autogenerated", From a72c8e0bbfd4494a9a65218e412f07147ed7fb70 Mon Sep 17 00:00:00 2001 From: DanielleWashington <dwashington.100292@gmail.com> Date: Mon, 24 Mar 2025 10:38:30 -0400 Subject: [PATCH 16/39] adding config guides --- docs/deploy/config-guides/authentication.md | 482 ++++++++++++++++++++ docs/deploy/config-guides/modules.md | 152 ++++++ sidebars.js | 12 + 3 files changed, 646 insertions(+) create mode 100644 docs/deploy/config-guides/authentication.md create mode 100644 docs/deploy/config-guides/modules.md diff --git a/docs/deploy/config-guides/authentication.md b/docs/deploy/config-guides/authentication.md new file mode 100644 index 00000000..bb479d5f --- /dev/null +++ b/docs/deploy/config-guides/authentication.md @@ -0,0 +1,482 @@ +--- +title: Authentication +image: og/docs/configuration.jpg +# tags: ['authentication'] +--- + +:::info Authentication and authorization +Authentication and authorization are closely related concepts, and sometimes abbreviated as `AuthN` and `AuthZ`. Authentication (`AuthN`) is the process of verifying the identity of a user, while authorization (`AuthZ`) is the process of determining what permissions the user has. +::: + +Weaviate controls access through user authentication via API keys or OpenID Connect (OIDC), with an option for anonymous access. Users can then be assigned different [authorization](./authorization.md) levels, as shown in the diagram below. + +```mermaid +flowchart LR + %% Define main nodes + Request["Client<br> Request"] + AuthCheck{"AuthN<br> Enabled?"} + AccessCheck{"Check<br> AuthZ"} + Access["✅ Access<br> Granted"] + Denied["❌ Access<br> Denied"] + + %% Define authentication method nodes + subgraph auth ["AuthN"] + direction LR + API["API Key"] + OIDC["OIDC"] + AuthResult{"Success?"} + end + + %% Define connections + Request --> AuthCheck + AuthCheck -->|"No"| AccessCheck + AuthCheck -->|"Yes"| auth + API --> AuthResult + OIDC --> AuthResult + AuthResult -->|"Yes"| AccessCheck + AuthResult -->|"No"| Denied + + AccessCheck -->|"Pass"| Access + AccessCheck -->|"Fail"| Denied + + %% Style nodes + style Request fill:#ffffff,stroke:#B9C8DF,color:#130C49 + style AuthCheck fill:#ffffff,stroke:#B9C8DF,color:#130C49 + style AccessCheck fill:#ffffff,stroke:#B9C8DF,color:#130C49 + style Access fill:#ffffff,stroke:#B9C8DF,color:#130C49 + style Denied fill:#ffffff,stroke:#B9C8DF,color:#130C49 + style API fill:#ffffff,stroke:#B9C8DF,color:#130C49 + style OIDC fill:#ffffff,stroke:#B9C8DF,color:#130C49 + style AuthResult fill:#ffffff,stroke:#B9C8DF,color:#130C49 + + %% Style subgraph + style auth fill:#ffffff,stroke:#130C49,stroke-width:2px,color:#130C49 +``` + +For example, a user logging in with the API key `jane-secret` may be granted administrator permissions, while another user logging in with the API key `ian-secret` may be granted read-only permissions. + +In summary, Weaviate allows the following authentication methods: + +- API key +- OpenID Connect (OIDC) +- Anonymous access (no authentication, strongly discouraged except for development or evaluation) + +Note that API key and OIDC authentication can be both enabled at the same time. + +The way to configure authentication differs by your deployment method, depending on whether you are running Weaviate in Docker or Kubernetes. Below, we provide examples for both. + +:::info What about Weaviate Cloud (WCD)? +For Weaviate Cloud (WCD) instances, authentication is pre-configured with OIDC and API key access. You can [authenticate against Weaviate](../connections/connect-cloud.mdx) with your WCD credentials using OIDC, or [with API keys](/docs/cloud/platform/manage-api-keys). +::: + +## API Key Authentication + +API key authentication is a simple and effective way to authenticate users. Each user is assigned a unique API key, which is used to authenticate the user. + +Note that you can either: +- Set one user for all API keys, or +- Define one user per API key (the number of users must match the number of API keys) + +Make sure all listed users are also configured in the authorization settings. + +### API keys: Docker + +API key authentication can be configured using environment variables. In Docker Compose, set them in the configuration file (`docker-compose.yml`) such as in the following example: + +```yaml +services: + weaviate: + ... + environment: + ... + # Disable anonymous access. + AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED: 'false' + + # Enables API key authentication. + AUTHENTICATION_APIKEY_ENABLED: 'true' + + # List one or more keys in plaintext separated by commas. Each key corresponds to a specific user identity below. + AUTHENTICATION_APIKEY_ALLOWED_KEYS: 'user-a-key,user-b-key' + + # List one or more user identities, separated by commas. Each identity corresponds to a specific key above. + AUTHENTICATION_APIKEY_USERS: 'user-a,user-b' +``` + +This configuration: +- Disables anonymous access +- Enables API key authentication +- Defines plaintext API keys in `AUTHENTICATION_APIKEY_ALLOWED_KEYS` +- Associates users with the API keys in `AUTHENTICATION_APIKEY_USERS` + +These users can now be assigned permissions based on the authorization settings. + +### API keys: Kubernetes + +For Kubernetes deployments using Helm, API key authentication can be configured in the `values.yaml` file under the `authentication` section. Here's an example configuration: + +```yaml +authentication: + anonymous_access: + # Disable anonymous access. + enabled: false + + apikey: + # Enables API key authentication. + enabled: true + + # List one or more keys in plaintext separated by commas. Each key corresponds to a specific user identity below. + allowed_keys: + - user-a-key + - user-b-key + + # List one or more user identities, separated by commas. Each identity corresponds to a specific key above. + users: + - user-a + - user-b +``` + +This configuration: +- Disables anonymous access +- Enables API key authentication +- Defines plaintext API keys in `allowed_keys` +- Associates users with the API keys in `users` + +:::warning Environment Variables Take Precedence +If you configure API keys using environment variables, those settings will take precedence over the values in `values.yaml`. To use the Helm values configuration, ensure you have not set the corresponding environment variables. +::: + +For enhanced security in production environments, you can store API keys in Kubernetes secrets and reference them using environment variables instead of storing them as plaintext in the Helm values. + +## OIDC Authentication + +OIDC authentication requires the resource (Weaviate) to validate tokens issued by an identity provider. The identity provider authenticates the user and issues tokens, which are then validated by Weaviate. + +In an example setup, a Weaviate instance acts as the resource, Weaviate Cloud (WCD) acts as the identity provider, and the Weaviate client acts on behalf of the user. + +Any "OpenID Connect" compatible token issuer that implements OpenID Connect Discovery is compatible with Weaviate. + +This document discusses how to configure Weaviate as the resource. + +<details> + <summary> + More about OIDC + </summary> + +With [OpenID Connect](https://openid.net/connect/) (based on OAuth2), an +external identity provider and token issuer ('token issuer' hereafter) is responsible for managing users. + +OIDC authentication requires obtaining a valid token from the token issuer so that it can be sent in the header of any request to Weaviate. This applies to both REST and GraphQL requests. + +When Weaviate receives a token (JSON Web Token or JWT), it verifies +that it was indeed signed by the configured token issuer. If the signature is +correct, all contents of the token are trusted, which authenticates the user based on the information in the token. + +</details> + +### OIDC: Docker + +To configure Weaviate for OIDC-based authentication, add the following environment variables to your configuration file. + +An example `docker-compose.yml` file looks like this: + +```yaml +services: + weaviate: + ... + environment: + ... + # enabled (optional - defaults to false) turns OIDC auth on. All other fields in + # this section will only be validated if enabled is set to true. + AUTHENTICATION_OIDC_ENABLED: 'true' + + # issuer (required) tells weaviate how to discover the token issuer. This + # endpoint must implement the OpenID Connect Discovery spec, so that weaviate + # can retrieve the issuer's public key. + # + # The example URL below uses the path structure commonly found with keycloak + # where an example realm 'my-weaviate-usecase' was created. The exact + # path structure depends on the token issuer. See the token issuer's documentation + # about which endpoint implements OIDC Discovery. + AUTHENTICATION_OIDC_ISSUER: 'http://my-token-issuer/auth/realms/my-weaviate-usecase' + + # client_id (required unless skip_client_id_check is set to true) tells + # Weaviate to check for a particular OAuth 2.0 client_id in the audience claim. + # This is to prevent that a token which was signed by the correct issuer + # but never intended to be used with Weaviate can be used for authentication. + # + # For more information on what clients are in OAuth 2.0, see + # https://tools.ietf.org/html/rfc6749#section-1.1 + AUTHENTICATION_OIDC_CLIENT_ID: 'my-weaviate-client' + + # username_claim (required) tells Weaviate which claim in the token to use for extracting + # the username. The username will be passed to the authorization plugin. + AUTHENTICATION_OIDC_USERNAME_CLAIM: 'email' + + # skip_client_id_check (optional, defaults to false) skips the client_id + # validation in the audience claim as outlined in the section above. + # Not recommended to set this option as it reduces security, only set this + # if your token issuer is unable to provide a correct audience claim + AUTHENTICATION_OIDC_SKIP_CLIENT_ID_CHECK: 'false' + + # scope (optional) these will be used by clients as default scopes for authentication + AUTHENTICATION_OIDC_SCOPES: '' +``` + +:::info OIDC and Azure +As of November 2022, we were aware of some differences in Microsoft Azure's OIDC implementation compared to others. If you are using Azure and experiencing difficulties, [this external blog post](https://xsreality.medium.com/making-azure-ad-oidc-compliant-5734b70c43ff) may be useful. +::: + +### OIDC: Kubernetes + +For Kubernetes deployments using Helm, OIDC authentication can be configured in the `values.yaml` file under the `authentication` section. Here's an example configuration: + +```yaml +authentication: + anonymous_access: + # Disable anonymous access. + enabled: false + oidc: + # enabled (optional - defaults to false) turns OIDC auth on. All other fields in + # this section will only be validated if enabled is set to true. + enabled: true + + # issuer (required) tells weaviate how to discover the token issuer. This + # endpoint must implement the OpenID Connect Discovery spec, so that weaviate + # can retrieve the issuer's public key. + # + # The example URL below uses the path structure commonly found with keycloak + # where an example realm 'my-weaviate-usecase' was created. The exact + # path structure depends on the token issuer. See the token issuer's documentation + # about which endpoint implements OIDC Discovery. + issuer: 'http://my-token-issuer/auth/realms/my-weaviate-usecase' + + # client_id (required unless skip_client_id_check is set to true) tells + # Weaviate to check for a particular OAuth 2.0 client_id in the audience claim. + # This is to prevent that a token which was signed by the correct issuer + # but never intended to be used with Weaviate can be used for authentication. + # + # For more information on what clients are in OAuth 2.0, see + # https://tools.ietf.org/html/rfc6749#section-1.1 + client_id: 'my-weaviate-client' + + # username_claim (required) tells Weaviate which claim in the token to use for extracting + # the username. The username will be passed to the authorization plugin. + username_claim: 'email' + + # skip_client_id_check (optional, defaults to false) skips the client_id + # validation in the audience claim as outlined in the section above. + # Not recommended to set this option as it reduces security, only set this + # if your token issuer is unable to provide a correct audience claim + skip_client_id_check: 'false' + + # scope (optional) these will be used by clients as default scopes for authentication + scopes: '' + + # groups_claim: '' +``` + +### Note: Configuring the OIDC token issuer + +Configuring the OIDC token issuer is outside the scope of this document, but here are a few options as a starting point: + +- For simple use-cases such as for a single user, you can use Weaviate Cloud (WCD) as the OIDC token issuer. To do so: + - Make sure you have a WCD account (you can [sign up here](https://console.weaviate.cloud/)). + - In the Docker Compose file (e.g. `docker-compose.yml`), specify: + - `https://auth.wcs.api.weaviate.io/auth/realms/SeMI` as the issuer (in `AUTHENTICATION_OIDC_ISSUER`), + - `wcs` as the client id (in `AUTHENTICATION_OIDC_CLIENT_ID`), and + - enable the adminlist (`AUTHORIZATION_ADMINLIST_ENABLED: 'true'`) and add your WCD account email as the user (in `AUTHORIZATION_ADMINLIST_USERS`) . + - `email` as the username claim (in `AUTHENTICATION_OIDC_USERNAME_CLAIM`). + +- If you need a more customizable setup you can use commercial OIDC providers like [Okta](https://www.okta.com/). +- As another alternative, you can run your own OIDC token issuer server, which may be the most complex but also configurable solution. Popular open-source solutions include Java-based [Keycloak](https://www.keycloak.org/) and Golang-based [dex](https://github.com/dexidp/dex). + +:::info +By default, Weaviate validates that the token includes a specified client id in the audience claim. If your token issuer does not support this feature, you can turn it off as outlined in the configuration section below. +::: + +## Anonymous Access + +Weaviate can be configured to accept anonymous requests. This is strongly discouraged except for development or evaluation purposes. + +Users that send requests without explicit authentication are authenticated as `user: anonymous`. + +You can use the authorization plugin to specify which permissions to apply to this `anonymous` user. If anonymous access is disabled altogether, any request without an allowed authentication scheme returns `401 Unauthorized`. + +### Anonymous access: Docker + +To enable anonymous access in Docker Compose, add the following environment variable to your configuration file: + +```yaml +services: + weaviate: + ... + environment: + ... + AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED: 'true' +``` + +### Anonymous access: Kubernetes + +To enable anonymous access in Kubernetes, add the following configuration to your `values.yaml` file: + +```yaml +authentication: + anonymous_access: + enabled: true +``` + +## Client-side Usage + +### API key + +import APIKeyUsage from '/_includes/clients/api-token-usage.mdx'; + +<APIKeyUsage /> + +We recommend using a client library to authenticate against Weaviate. See [How-to: Connect](../connections/index.mdx) pages for more information. + +### OIDC + +The OIDC standard allows for many different methods *(flows)* of obtaining tokens. The appropriate method can vary depending on your situation, including configurations at the token issuer, and your requirements. + +OIDC authentication flows are outside the scope of this documentation, but here are some options to consider: +1. Use the `client credentials flow` for machine-to-machine authorization. (Note that this authorizes an app, not a user.) + - Validated using Okta and Azure as identity providers; GCP does not support client credentials grant flow (as of December 2022). + - Weaviate's Python client directly supports this method. + - Client credential flows usually do not come with a refresh token and the credentials are saved in the respective clients to acquire a new access token on expiration of the old one. +1. Use the `resource owner password flow` for trusted applications like [Weaviate Cloud](/docs/cloud/manage-clusters/connect). +1. Use `hybrid flow` if Azure is your token issuer or if you would like to prevent exposing passwords. + +### Support for Weaviate clients + +If Weaviate Core is configured to use the `client credentials grant` flow or the `resource owner password flow`, a Weaviate client can instantiate a connection to Weaviate Core that incorporates the authentication flow. + +import OIDCExamples from '/_includes/code/connections/oidc-connect.mdx'; + +<OIDCExamples/> + +### Get and pass tokens manually + +<details> + <summary> + Manually obtaining and passing tokens + </summary> + +For cases or workflows where you may wish to manually obtain a token, we outline below the steps to do so, for the resource owner password flow and hybrid flow. + +#### Resource owner password flow + +1. Send a GET request to `WEAVIATE_INSTANCE_URL/v1/.well-known/openid-configuration` to fetch Weaviate's OIDC configuration (`wv_oidc_config`). Replace WEAVIATE_INSTANCE_URL with your instance URL. +1. Parse the `clientId` and `href` from `wv_oidc_config`. +1. Send a GET request to `href` to fetch the token issuer's OIDC configuration (`token_oidc_config`). +1. If `token_oidc_config` includes the optional `grant_types_supported` key, check that `password` is in the list of values. + - If `password` is not in the list of values, the token issuer is likely not configured for `resource owner password flow`. You may need to reconfigure the token issuer or use another method. + - If the `grant_types_supported` key is not available, you may need to contact the token issuer to see if `resource owner password flow` is supported. +1. Send a POST request to the `token_endpoint` of `token_oidc_config` with the body: + - `{"grant_type": "password", "client_id": client_id, "username": USERNAME, "password": PASSWORD`. Replace `USERNAME` and `PASSWORD` with the actual values. +1. Parse the response (`token_resp`), and look for `access_token` in `token_resp`. This is your Bearer token. + +#### Hybrid flow + +1. Send a GET request to `WEAVIATE_INSTANCE_URL/v1/.well-known/openid-configuration` to fetch Weaviate's OIDC configuration (`wv_oidc_config`). Replace WEAVIATE_INSTANCE_URL with your instance URL. +2. Parse the `clientId` and `href` from `wv_oidc_config` +3. Send a GET request to `href` to fetch the token issuer's OIDC configuration (`token_oidc_config`) +4. Construct a URL (`auth_url`) with the following parameters, based on `authorization_endpoint` from `token_oidc_config`. This will look like the following: + - `{authorization_endpoint}`?client_id=`{clientId}`&response_type=code%20id_token&response_mode=fragment&redirect_url=`{redirect_url}`&scope=openid&nonce=abcd + - the `redirect_url` must have been [pre-registered](https://openid.net/specs/openid-connect-core-1_0.html#AuthRequest) with your token issuer. +5. Go to the `auth_url` in your browser, and log in if prompted. If successful, the token issuer will redirect the browser to the `redirect_url`, with additional parameters that include an `id_token` parameter. +6. Parse the `id_token` parameter value. This is your Bearer token. + +#### Code example + +This example demonstrate how to obtain an OIDC token. + +```python +import requests +import re + +url = "http://localhost:8080" # <-- Replace with your actual Weaviate URL + +# Get Weaviate's OIDC configuration +weaviate_open_id_config = requests.get(url + "/v1/.well-known/openid-configuration") +if weaviate_open_id_config.status_code == "404": + print("Your Weaviate instance is not configured with openid") + +response_json = weaviate_open_id_config.json() +client_id = response_json["clientId"] +href = response_json["href"] + +# Get the token issuer's OIDC configuration +response_auth = requests.get(href) + +if "grant_types_supported" in response_auth.json(): + # For resource owner password flow + assert "password" in response_auth.json()["grant_types_supported"] + + username = "username" # <-- Replace with the actual username + password = "password" # <-- Replace with the actual password + + # Construct the POST request to send to 'token_endpoint' + auth_body = { + "grant_type": "password", + "client_id": client_id, + "username": username, + "password": password, + } + response_post = requests.post(response_auth.json()["token_endpoint"], auth_body) + print("Your access_token is:") + print(response_post.json()["access_token"]) +else: + # For hybrid flow + authorization_url = response_auth.json()["authorization_endpoint"] + parameters = { + "client_id": client_id, + "response_type": "code%20id_token", + "response_mode": "fragment", + "redirect_url": url, + "scope": "openid", + "nonce": "abcd", + } + # Construct 'auth_url' + parameter_string = "&".join([key + "=" + item for key, item in parameters.items()]) + response_auth = requests.get(authorization_url + "?" + parameter_string) + + print("To login, open the following url with your browser:") + print(authorization_url + "?" + parameter_string) + print( + "After the login you will be redirected, the token is the 'id_token' parameter of the redirection url." + ) + + # You could use this regular expression to parse the token + resp_txt = "Redirection URL" + token = re.search("(?<=id_token=).+(?=&)", resp_txt)[0] + +print("Set as bearer token in the clients to access Weaviate.") +``` + +#### Token lifetime + +The token has a configurable expiry time that is set by the token issuer. We suggest establishing a workflow to periodically obtain a new token before expiry. + +</details> + +### Add a Bearer to a Request + +<APIKeyUsage /> + +For example, the cURL command looks like this: + +```bash +curl https://localhost:8080/v1/objects -H "Authorization: Bearer ${WEAVIATE_API_KEY}" | jq +``` + +## Further resources + +- [Configuration: Authorization and RBAC](./authorization.md) +- [References: Environment variables / Authentication and Authorization](../config-refs/env-vars.md#authentication-and-authorization) + +## Questions and feedback + +import DocsFeedback from '/_includes/docs-feedback.mdx'; + +<DocsFeedback/> diff --git a/docs/deploy/config-guides/modules.md b/docs/deploy/config-guides/modules.md new file mode 100644 index 00000000..25d48bda --- /dev/null +++ b/docs/deploy/config-guides/modules.md @@ -0,0 +1,152 @@ +--- +title: Modules +image: og/docs/configuration.jpg +# tags: ['configuration', 'modules'] +--- + +Weaviate's functionality can be customized by using [modules](/docs/weaviate/modules/index.md). This page explains how to enable and configure modules. + +## Instance-level configuration + +At the instance (i.e. Weaviate cluster) level, you can: + +- Enable modules +- Configure the default vectorizer module +- Configure module-specific variables (e.g. API keys), where applicable + +This can be done by setting the appropriate [environment variables](/docs/weaviate/config-refs/env-vars.md) as shown below. + +:::tip What about WCD? +Weaviate Cloud (WCD) instances come with modules pre-configured. See [this page](/docs/cloud/manage-clusters/status#enabled-modules) for details. +::: + +### Enable individual modules + +You can enable modules by specifying the list of modules in the `ENABLE_MODULES` variable. For example, this code enables the `text2vec-transformers` module. + +```yaml +services: + weaviate: + environment: + ENABLE_MODULES: 'text2vec-transformers' +``` + +To enable multiple modules, add them in a comma-separated list. + +This example code enables the `'text2vec-huggingface`, `generative-cohere`, and `qna-openai` modules. + +```yaml +services: + weaviate: + environment: + ENABLE_MODULES: 'text2vec-huggingface,generative-cohere,qna-openai' +``` + +### Enable all API-based modules + +:::caution Experimental feature +Available starting in `v1.26.0`. This is an experimental feature. Use with caution. +::: + +You can enable all API-based modules by setting the `ENABLE_API_BASED_MODULES` variable to `true`. This will enable all API-based [model integrations](/docs/weaviate/model-providers/index.md), such as those for Anthropic, Cohere, OpenAI and so on by enabling the relevant modules. These modules are lightweight, so enabling them all will not significantly increase resource usage. + +```yaml +services: + weaviate: + environment: + ENABLE_API_BASED_MODULES: 'true' +``` + +The list of API-based modules can be found on the [model provider integrations page](/docs/weaviate/model-providers/index.md#api-based). You can also inspect the [source code](https://github.com/weaviate/weaviate/blob/main/adapters/handlers/rest/configure_api.go) where the list is defined. + +This can be combined with enabling individual modules. For example, the example below enables all API-based modules, Ollama modules and the `backup-s3` module. + +```yaml +services: + weaviate: + environment: + ENABLE_API_BASED_MODULES: 'true' + ENABLE_MODULES: 'text2vec-ollama,generative-ollama,backup-s3' +``` + +Note that enabling multiple vectorizer (e.g. `text2vec`, `multi2vec`) modules will disable the [`Explore` functionality](/docs/weaviate/api/graphql/explore.md). If you need to use `Explore`, you should only enable one vectorizer module. + +### Module-specific variables + +You may need to specify additional environment variables to configure each module where applicable. For example, the `backup-s3` module requires the backup S3 bucket to be set via `BACKUP_S3_BUCKET`, and the `text2vec-contextionary` module requires the inference API location via `TRANSFORMERS_INFERENCE_API`. + +Refer to the individual [module documentation](../modules/index.md) for more details. + +## Vectorizer modules + +The [vectorization integration](../model-providers/index.md) enable Weaviate to vectorize data at import, and to perform [`near<Media>`](/docs/weaviate/search/similarity.md) searches such as `nearText` or `nearImage`. + +:::info List of available vectorizer integrations +Can be found [in this section](/docs/weaviate/model-providers/index.md). +::: + +### Enable vectorizer modules + +You can enable vectorizer modules by adding them to the `ENABLE_MODULES` environment variable. For example, this code enables the `text2vec-cohere`, `text2vec-huggingface`, and `text2vec-openai` vectorizer modules. + +```yaml +services: + weaviate: + environment: + ENABLE_MODULES: 'text2vec-cohere,text2vec-huggingface,text2vec-openai' +``` + +### Default vectorizer module + +You can specify a default vectorization module with the `DEFAULT_VECTORIZER_MODULE` variable as below. + +If a default vectorizer module is not set, you must set a vectorizer in the schema before you can use `near<Media>` or vectorization at import time. + +This code sets `text2vec-huggingface` as the default vectorizer. Thus, `text2vec-huggingface` module will be used unless another vectorizer is specified for that class. + +``` yaml +services: + weaviate: + environment: + DEFAULT_VECTORIZER_MODULE: text2vec-huggingface +``` + +## Generative model integrations + +The [generative model integrations](/docs/weaviate/model-providers/index.md) enable [retrieval augmented generation](/docs/weaviate/search/generative.md) functions. + +### Enable a generative module + +You can enable generative modules by adding the desired module to the `ENABLE_MODULES` environment variable. For example, this code enables the `generative-cohere` module and the `text2vec-huggingface` vectorizer module. + +```yaml +services: + weaviate: + environment: + ENABLE_MODULES: 'text2vec-huggingface,generative-cohere' +``` + +:::tip `generative` module selection unrelated to `text2vec` module selection +Your choice of the `text2vec` module does not restrict your choice of `generative` module, or vice versa. +::: + +## Tenant offload modules + +Tenants can be offloaded to cold storage to reduce memory and disk usage, and onloaded back when needed. + +See the [dedicated page on tenant offloading](/docs/weaviate/configuration/tenant-offloading.md) for more information on how to configure Weaviate for tenant offloading. For information on how to offload and onload tenants, see [How-to: manage tenant states](/docs/weaviate/manage-data/tenant-states.mdx). + +## Custom modules + +See [here](/docs/weaviate/concepts/modules.md) how you can create and use your own modules. + +## Related pages + +- [Concepts: Modules](/docs/weaviate/concepts/modules.md) +- [References: Modules](/docs/weaviate/modules/index.md) + +## Questions and feedback + +import DocsFeedback from '/_includes/docs-feedback.mdx'; + +<DocsFeedback/> diff --git a/sidebars.js b/sidebars.js index 72dd6141..0fa7fd5e 100644 --- a/sidebars.js +++ b/sidebars.js @@ -426,6 +426,18 @@ const sidebars = { "deploy/installation-guides/aws-installation", ], }, + { + type: "category", + label: "Configuration Guides", + collapsible: true, + collapsed: true, + items: [ + "deploy/installation-guides/k8s-installation", + "deploy/installation-guides/docker-installation", + "deploy/installation-guides/gcp-installation", + "deploy/installation-guides/aws-installation", + ], + }, ], /*deployAwsSidebar: [ { From 5085b2f95fa705464801d3258a7fed7fbf1a4944 Mon Sep 17 00:00:00 2001 From: DanielleWashington <dwashington.100292@gmail.com> Date: Mon, 24 Mar 2025 12:14:30 -0400 Subject: [PATCH 17/39] adding monitoring, persistence and images --- .../weaviate-sample-dashboard-async-queue.png | Bin 0 -> 410449 bytes .../weaviate-sample-dashboard-importing.png | Bin 0 -> 98454 bytes .../img/weaviate-sample-dashboard-lsm.png | Bin 0 -> 80924 bytes .../img/weaviate-sample-dashboard-objects.png | Bin 0 -> 72006 bytes .../img/weaviate-sample-dashboard-startup.png | Bin 0 -> 57628 bytes .../img/weaviate-sample-dashboard-usage.png | Bin 0 -> 38989 bytes .../img/weaviate-sample-dashboard-vector.png | Bin 0 -> 64636 bytes docs/deploy/config-guides/monitoring.md | 141 ++++++++++++++++++ docs/deploy/config-guides/persistence.md | 112 ++++++++++++++ sidebars.js | 8 +- 10 files changed, 257 insertions(+), 4 deletions(-) create mode 100644 docs/deploy/config-guides/img/weaviate-sample-dashboard-async-queue.png create mode 100644 docs/deploy/config-guides/img/weaviate-sample-dashboard-importing.png create mode 100644 docs/deploy/config-guides/img/weaviate-sample-dashboard-lsm.png create mode 100644 docs/deploy/config-guides/img/weaviate-sample-dashboard-objects.png create mode 100644 docs/deploy/config-guides/img/weaviate-sample-dashboard-startup.png create mode 100644 docs/deploy/config-guides/img/weaviate-sample-dashboard-usage.png create mode 100644 docs/deploy/config-guides/img/weaviate-sample-dashboard-vector.png create mode 100644 docs/deploy/config-guides/monitoring.md create mode 100644 docs/deploy/config-guides/persistence.md diff --git a/docs/deploy/config-guides/img/weaviate-sample-dashboard-async-queue.png b/docs/deploy/config-guides/img/weaviate-sample-dashboard-async-queue.png new file mode 100644 index 0000000000000000000000000000000000000000..903f8aa6ea9b45223dd6756a3dcd1827e3d795bb GIT binary patch literal 410449 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�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%0Agb%=5j9)Bq&`O_?Yv=>3eTq;Xpm! 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≀g%4I((*Y5v0T1_Md5*c49n7Qg=kb^_`^()j<{!a~*%Z9xJh@ue zHCh}hRH>jltG5~X><He2B)B5vVA%Db<dLEE$14rlB70hB#g7F=4MP|tiMpw}2D%3p z+^y6f$%|+2=s6!bSYL4#II>KQXID(v*QmR<4<sKB?{gJ%s}C|)tl3BQCQCnGy=}^m zN4<x@?F%?qBm=mth(=Xfae(^&%cXbT&ha23;kR9+Gvt#5*GMHb2&0UpVVtA`4D7q{ zr*Sny?=D?~a)MCrGrP_v!X1u3|Ayd#y{6%H4;JiCe!mp|`HGT&7UI8&a;4EhA>WA6 zQH2HfuRO{ofu#(Se@BH8ho%Q`xZPWajF!8l+xQP~6*w=y#;X0ffp*-xFX=_XY1N2b z;2}b?cA4_7B3O}q!RQ%iuAt)6G-h4F>G=+b8{S@!IUEn-1_-8~=l>8)Z;ssmLzsbz zA3#@H`cOb98<Ml`T?Io8%*Fn)*;O9=;p3(fXgA;T>FxkC0Dzz(Z#}o-0#pd!eQTk+ zZJsYx-tj@D`|2(%sTQ$quV~x2HH^bs8^xiqE#9-&N8m|}tq;3GJ6hd-QQVI+n<hih zn#w>y$6ZOURZz~U)H{(Az|PAG1cARtko7U6&8}#9XZh`kit)WcX=J3WT@$*x@RyN_ z)r<oj8H&WTMerDQeJmHJ*RoD4U7D}HJ*16@1PTyDW}klh`ZDhtPt-=gwb+OPnmC-= zleRjd#)Qu`0971fNH=}pc5KOs_tgWm2x(DXm_nimwaN5g5y#F2s#fnIacE7<p29k3 z|L3nXc5{-A-WcC-?0LJQPWifHh1DPvrvoKYmO7#@aVzJNI@D6F-)E^bEZ~R%fnjH_ zzV!_=g|-~ZS1TR(41o^OCtQy+8q)Ch@$AYZ{nq2#33e&Dbyr>KY1DCU1|Ji#LMXv1 z-Z7jO3{vakHG;sX$RVf#;m9O`ruZRwyqy=nhF;6Gp7oNeOhkk3x3)0gJcf%!%!~36 zvg-7woj&2>$4OZAq`4k|4GvnyLW=MLP_@bIH&4R(9ga35%wl*&QY_SshST}7_sLSQ zWa6yz=d)r~#SjVivUBo5RU#xbcs;i3Rj4(=_jae4Hb$(d6O9wJ^o49dLGMsJ=vuN* z5ny~YkIzO}_BBr{9dDic191E`I~n423%n}t1833u_8nV8x?dhC7tH4Bt=$jY^jIdR zk$aS&QqsVv$<?+_n!6oKjvNS7_TuyYv##gc&9;5KC7_ViCE>PbPvhAwtRD0bW3>_g zc((r1vnj?>sn0J2d8y(`;(9B8Kbvjo0y@JZaGw({Kmb|&^)S1X5Wpjm3|c;k1(w$6 zBrR~@F$PM8D{9IYs;G67PKxOJ<sNM8sS0;Mw%%8|T~<a3_^+2CK_;B8l~7l=2J6D@ zI~2f-kAV0%Q}U^fW{877dc)SLe}Bo}_@cQli`QxJJON0nYc#JQ#pWYnS7#HGSYMUB zim|vxe1Y0wGRw!JMxmh<3UG~yp%B}L6z?dkm=5mZjo!xH=P7Up@K!pH5>W*X$^2G$ zveb&^;qdizU#J=+_K2plnULqup-^XuopImFib0)8ZJI-Pm&9*{UenV2$}0I$N-RcE zTn~%%Nb|Z?m}BUKa<(*W4ErgT6%*lQK12UT+S^VEjyVhtSyHCw0~n#LtE!82$h*#w z00Cdq==0rwQ563NbrVmcF%;mC$pX?^0Eg@dkk<0rqipJSq`J}Xpfb2|eElxx9V3>% zpcxb-yMDuz$~E@hpZF5S?R&{DlG^XTC#58qlYHl<Ek&4{=I1y1DAb#-gZ>B*v3uqC zp$kix6zP2ezw&0<X;eTk&^>lhi+W*Ro8#}$WIk3IqU>^_bJA;d2&f<$uj~k9Xt@VR zqSuMBN&ra3ul<4tIk_K%w<co%K(z%^uIdveFV<{FMc;6_Y*v%evkgLOq}@%U+<k(R zSy7W|=Kd3PBFN#6K$xc6sbX}o;zp}m>&I$jcshCIKwq+iQ7N9<ngEQ^i?3%A$P^i# z#PGWLa{d%{zXA<qC{C9WVGJqRVXs6(2xjsDh)Bn;QI$&jsg5iaCk62zu1Q!jC(hGx zOJP(mU5$%XDohxJMK{lmNaQ{4V`53W7#&7wdv?~vy>|p>vISgrb{-%I;LNN5XP6IY z=O#Xt{MkVd9CFDQs8tK~8h?PP1P|WvYiATg0C|P%m}kMLScGW??>}}PAS9k3mPki! z0K_95QTqjH6+Q?J_DE7joqrPNwyYMRHqxcPY#W?3lqyA(X>w%!t8V(mcf;hq=tevy z;7K*Z#|BXDG3kDwC7k6n_{AR|%?ip?C?EkdW6zaORvu-YImyQe+JtNhoLx)-2Y`+k zu2`cH+5#^dg1mloX4zTtpM1MyXU24}Dz1m4puRvXJKc|hRna%OM3xX;BYw|@?K_+4 z)eF|oV8;ADr#d0gC0bHHBIel_8I&CMkAbN`*5O^e{N!4xZzGb&ON2s}%qFg|?6#J- zeBKciolPtIRvOHweOfXAFLA9;82aVF0Z}A{bWJ@<T+W@x_sLr5l+5$LD|Z*1i3^ZJ zJsu0(9^N}Y*I8Bf_|aYwG3QGJEVGcJNEtW@k6ttp55-6jK|WWn6ER<zkCvAfu+F-W zi3df|zpik-QVo`FTu5wF`xRP|&>01?BHVMApEb+_=qeIUsG2s5J@JulGZjrcE`>%7 zZ!4x(O1X^`{DZz}94gMb4y1J@FSdtv0`IQzfph}LsOu*#Sk%$bXaSAU_#j_@CuN!O z)Y*<v@2rq3BQmtfQLt4TP$c0rJyvkayUM4&0*;ky9YaiqTV>hJmKDVN5%F-?Jn8Yz zQnx0!rm1L=y>${I0(B@m?jyRbWqCFF6Qjs8-wC9aD$W)Ts|dpz@io-XPs8?#9lx!V zK}-(lbS~A4Gt%pPpMbOr9Mj&x`T%)NMY+}x!KS?!8i4Mw4;LS?*fMUjoCr9#ml;$i z4ccwaEgdy4inmn)+J^^x{;?+xSl1JGuqeJqG8-wR!yO3E6td-%@<J4mG`;r6V>)N+ zZNj!wbFEX?4_~^$V#JpU`1jH70Ep@QN^>U2N=XY=T}15D{6y~w_(advU}lk_7ZR)3 z<pi!}Z-c4Zv3GNw>Cx<;PN<Sy5zlZRjUXxg=B3SjeYY3>j&x#yF@x+!UB=Hq+IKS^ z)*g(i7utF-YEo=q!OEEV7iZZ(#!@>gEL1y+ggg7|CE4@poL{_nCj}1FCr+|Kd=x^q zzs1)@B#}nQnBI>YBB!G(aNmm5Ac)RiFc3Nj@4n+Q0IDO@bFXyp(BA;sDPJ7_iqhVt z`$PWiym#?B+37Dc85vMrvcA?N@uq_Z*G$EPTfKS*Y_Yz_*&{gs8ZNE>6pN@?dd2bs zpvt=_9l3s*{L!)TXjQzhI`r&^_T{4VHlPp@jc9{8yj-!Z^;IE*KS$B8ZmZ%sVC`X4 zX~{lU63;bLIXq2KeZ;2e8f^<y$%{YD5%nkTE;Q0+h#&Fy(@TXXW66vri(c0@rM$%5 zc?@XIqaf6i8S*;LHQlnbpx-zf=c;evLXj=2ul!kruipr|*hTDBYDYuwh&}@#dU1w2 zG|4^(bq}|Kev}l9>HxYHjRF!#Sx>MbqrC4>wdN!dN6U{x<NMtHI4UUx=I2UpquFU+ zboQr$<{xs8=V%s@Y2YpRA^SU&YuU`YnC<>X3t{fb&?+n7d>GEtLJ2s66#y+!@vCoD zA{&jxB83*cP`z?R%`ge)|6tZM0;C~{*~()X^!>jF%M!RP20bysi(?E?EqDt)aw)33 z_7_o{)AKIU=h3Pa238lEZzGtQEDNaoX0qe!TX)P*U~_;-6Q|)cc8CMVl1tqkD=k^H z4`+EjO06kpxc&FM%P8Gon@1}?D;)AozVBOJ`1d{40CI8=uhl*;4*75bFoG?8Q(pgV zcyifv2gAXdcs-5p`@{fZj&?`4VOY9!Vkp4PtKvJ5Rh-jUSxZj{f%{@_$;?1CbO%X0 zzFDY0{(c+ix}|;Sq}z(K;BMq&j<UoS)}*8LMa8>Dss70d6LCRo+$jb-7|bF|^^J|M z8&ytL`<fJr-!L%JwuYVMt!fVPZUG>M)V5@xLgRm0heb|wxzn{K-;aPs`xCIdr<DpT zVCETh__0w+8rOsMC*E!SXS}-z01$aSL;xZ$k1h_+>}sws{7t>GV<SbHBgINRBy*W9 zil(-pb9E_FGqwK}`ku+~$dVvrX2bo1M&1M7Mg;2PmYvs}&Iz!j=PjG2s;-G!XBOJt zC#Mgjgu}zr@c`s*zGLaA;DS3hTEb<EZN;*#Hsekgbl=MPGPY?12zkA(ct((d^=x2_ zbQ;jVCN%{a<QoJ^n6=wH!?GESJKl20HtrbQ^X%5&V*yJze|DVzMt5rE{X-iWIP*n= z?jK({QN(e$WafmffQ~8JO$Bk4wy>3+ttf&!;BeeBtMwHd-fxfC0gYiFi<wH671bb{ zGY$W@a~MU+n#fM(qwXU2E8Lb18MN}gtMCxcrFDJ+o&f}9ESc&acctY(={L}d@MflE z?-#j!IHuNtB`)Es7*x${riRF|%g;V^7NspYV6u_S1;a2t|HtsgnA#vbhM7vc0mjS+ zmb9Qb6aW`;%{qH^v>2MH#|QESCU|@b%Y-`wEjmn<xjQtt2`qJlOI-A1Ng5A04=2{{ zbkRSJkvX({uAB=a-ghonkvH7U$vkxij&+BC-rhmxgPWX9yk%a@iC5lglO+Om+o0i{ zW25=XsXuZZ^e(cK+0|PRcV~F+J4*0Lfm|4LH${EyZFB6)&!a$_ALnN*(PXHtUsDZ- z(@YQLQ59w*zCiI0w7*r*S&y5J$$iv+VLn*@5j()Nq)Yc13AGEsss9I=_wq)GLAx47 z?_Z+Ye@a6UM&AJKg^$m_Dt-fii(^Z|Ip5#0-{W}P?|?HLD5mAkB5<_%qF%~1kqCyC zyV>F+YKtzT^7y&^;fk+S@id`b51NKXWoc;D&#dyVOGf(DCInE(L`O#WPLa{qzz5N} zs<RqPLzc2Y%rLg8ja7S0W?!^P8D{{So*FFGkQbsorbp12qpyHz3;p=s7I(M+2CXj7 zdXL69|2Q~m1LOD|Gq#+jm}|nfz{xDd+?JLTRBn<0KR+5&E}%jwJy|X%#fHpRha~1b zCOuyHBEyp6xcXOsIUvjjgeb?ab8iW<&$&A{KJqj!k}6%wIaTa-m{~W7mu@zQ`pBL~ zcNnf@kaCY?Yjr>G!HyWgb>U{W=uJ$Uqy`k|*`Mh*4FZ7q$7n~jb{hvdtRU^=$;<@U z(L>^s<t2?6wGv}yA7<BJA8D}5{Zg`>xaG|;4ux!KefcD$nfrvc3ypv<lr*1;mEx8y zBWUgd5lYV8$i}c9xX^rPaQJFL01c9E8^M=JN%^*r-X7nrs9GzbMWbCilPWKx{rfUc z`2*OZNPZho@bZ4sudAMmSs3Fmcqtnsy@Hy}4eTh~s^A;6#Lbz?O`Pr^b;=d)(oF<} ziWS)>cY(_9jOlm^0a)dEzhmUWVf_;TIFjrg?+QbN2FyqFV%@Rg+ruy`6PBhOzq&qz z6w!nCah&2B9mzth)fRqOnge@5*B94_N4>Gg$Cm(<TOA-6gUVwEZ`yFD%8eNA7!P0I z^E<A7sV<c#!t!4KUgEjmjJJ8Y0+2Gt%Ql{L0<M`GQp0VXZ(^9w&IetW2mV$qkM1~9 z(>b=54L#5e7yS%CbO|>dQql=GjuI*@xkeDpDnFeBd7xdwY_VKFE$KQ_GBnxI6)kv= zuq~1ie~m#G0LN;2YDWK_zYpKACIERF7d@TBl$kX1S3T#IcB+`0d9L57ChQLp{()$W z_B>g|O>lO(>ODXIhEM0`^U1(NP-{3(t-Vv=hic`j-@t2|$@`sQ3s$zB8I`Y28DDwt zoOb_)OGPp~eO)Z>=|Ts9Z_`b6YAj}EK64mICjpGlHOT-Q;OsS{XIXeQs<05U10c@0 ztH8q{$@-t}7vs0S=W(+PWA4`N<%l@_ytApfK6~#-?Qvu1Y|am)e;oNPP2yE@N0QgQ z9n;QFj~%u4lJ~y`h}dGte9(U*4ahbjI1C%YHynoYnVY_+Q{Bwd^?SGaUtfd&LrqTY zaR-$cLi*)baLGVS*j$_Nz5B8Q21fxpDu*H4(TA;eiJ_g5Z2nV@`1juGOjdo~L&{Zy z$5(Gpnc~$Pn{XR5HwYx0qj8IE4%s9IYzrsSnO{&_BNOzDlt{4&C$9oDo<!m6Nfrn8 z<$%iFrz+qMS;HpZ9pic`SWt1+d$YwJ--l#bN^H80zOwLzR&anboQw)YT|H0d$m_g` zjzcl|_3FYD`i=rqjqnk`)l*Z%-z|5)7CO5Oo<U0c_C3~w?i@jY1QPqlihzZqR8kj0 zdp!ph+Yf}e%qPX2p|Vb+QF`tDsEtv(G1Q>voocgQ_cJZx#lz@B9O|mU=iCTQQWC+| zg>J9TrKyym9o1<cr_PA(EPkiOc=xZ^BrG#bq^iR?8XlOKqLKn0Tm7|XCehlv_^Z*Q zM)FS6&t1~kb<+13!%c}HLZiFaGc@;>wlA1n=Y`5o+X4sEEgkC8xXgOhNkSN*42*Y4 z8KmR6zbWNvCjAOP^lnY2&g7{V+jSqW=2NYd#R~upl^3tfxL&6X3ASZ)$#GE}3iW^( zl`>ds9%VS6{x*-}a^YuDUo^jCF+{nADdR}y-k<2JN#N5Dt7b>5n2m36TA4N-aip_$ zL37G_!;QI6!Fu4Yst^X+A3e33V6z^vn5I@i1uI)}U+5q|C-_MxLw#P$p7UWZT_)j? zt`V=@#(Ff}7*pp+c0~3>V>u@(csQ3$zvHm_K^xtqZ?Z)2o2ELT$Kf=k3ln6CEenO^ z&dj<2(JpvU?a-8adD&`S?}C6$>H9i{r68G*v5Ne5W!^~BN*3F0nQt8*BkvrZA5-K+ zwW`3Fdz9qfPgF(4R;xbGaO-zF)0YAzKn=uCnNGU3xWh#_X!7eQ={HP`sxpB8Uz#N~ zkUX&0a+xQUPSJ|HlJ%LpOD|;W(VScx&u-jM`iRIWjxyYJ1j(aAqueMj${{T)r?t;y z`o%-<&-1pL`6gb9)g~VjEsLl2vO4B<pSMa6+sy@-TF7S{(5}qkb@23r(l}qE#k!Ys zAyj7o0B^xzYugTR(htU_E_3#zk+@2ge&yX+HF%CjXCoZhFuf#nRqkCd%xkk;tYWGd z*1{x%W|lFNC}*d$@L3R;#6a!s@0IdJF4*wp``FU=#)rQp_XUgYrA&jX)+84zLRS_8 zJeHA*oSvy@E%9A0G`8r)I+`nGzGZOgac4*0K?M+<5&T2);$#WC@P%LvflP-43*S}m z1+N-+18$e)R~6#Jsy3S0_GnC@2PEM2N!7X6um!o`1-=xSYi3}c%FG5SY{zTHA2Z2q z#Pc#weu+PRL#3<UG}>%zTK0824V2?6CX~3^V6NiJh|*N0!}ETXp|*{}yO$Eb-Fl|6 z&X0Dq7m1nO4D&^%q|u*&<V>SKA<1Oh0;$ou)1akAHdl~pEkbmh(oATluPAhGOd=c# zhXb4eS+;@#A6BDT+s(VVqHRiPHV{TS{@_aVfR!eoTJ5L^JJ<~{KF}wFjo^?B9aciM z5G*iFIv`d`yU83ZGlwpG898DG_4By)4ip;VLtIW~9)B!0F`Aq&7^^X*)HT~z|LxI9 z%&kLJVl+JbI5y$vWbk(z-A+wpFbR(t^*Ppmma=x~AIM%)0~lC|wcG_&N_(U}T99@S zf%9S{uY{u3Nxp8&!HpW37(SwX3`mO%V2N_w9`Sb35u~uI8Z&g6ZAzCaE+!gk?rrno zUlip0i({)slTn!nL8j906`$vjXr&^$ls<B!&yrhAVVZSyp#4y8v8Xe{gW8|lWnaj4 zYA^T^Y5smv^HTlMlUN`miq@hHC*|vFnhomF?OL={o9;Cc0y-E)oGJoV^SoOR#YfFj zba?WUNJ;Tpf(T--F5%C&@O_yacBTtrr#LktnArwIw0RA9qMUMO4Rw-R0PzM=*kHMw z|CdI5MM~0(r|)A1A7?WPjfUXhXgOY?&PCIaPgS_6ZCYGLX71If@)`H1qyjBpUo+dK zW5?$k3uc_*au?UY2%{8<r1KZ|%BNt2Y!@H5d#@%eCsI71V*(h2k-Sz9JAR((zlA(O zB^S02yLxzlyu-ZpG(SWwi04WI(5}a{n!wcw=CMaAn`<HB7`Ps*!e3?Vs0v<ixBtPi zsfPTm5Z}X_(f2jskzYr)A11vgr-*rODYOJUBM)<#KA@16kz-2yX*6Y$oBLgVfY4v9 z^GTv#&Z|ZeszP5Dyf-QbJsjE*Pi<^grlTiaY!1j}Dq!(W5JSjmR}IgAo*UeFtgvKr zA~riPiPKeCRqZHxI@i=;%Qs(q+(p;lK6G!6edyBhI(+T9H{Be+cfS9REN3T~uf@sq z%DC{$)Y^(_7r5s5Mrj_mOT8x8H~y2bu)?e~m|LsTmG2Wcd&U`<w*k4D#vF!Hdb_!@ zp1i<yp=_9j9#@L<MOks?Z8Tn1+a7TA@NTc4s6aIZw*&{}0rDM{k0I=>bWbVf2tXtt z=rOEYm#7&5M2fO%;P$2sQcP5twb9opga#R#XYZ%NrmGyj4??xHxGkqwP2yTdn*^nY zrq6&m+kCp4JcAMhZ?>{7T@{KJ$cNmxvl24x(`C<1NAkcv2?a^V4@|&EHpTw--Dy25 z)GWPfZr@rGOxHQGE$bAF2P)%_X_5GT##U8b<ZB2kLrc=eOZqUjPE6N-8N_tOomaY@ zKx-hW_g+n@WWYRxFZTp%vSKveb+a!Qj|#(vfGXgt@3PZ$jI%jzWr;#krIs^F)SJu2 zu=QHjI9P;A`7>6q<#FV2?znNn*Y%o;wxdj=vBGen*k63GZxI>{fza~p#<<H+VwuTU zIsCgf(+hRP>Y=3P)fBiqXwC#Fg1{_dPER_2gS=h?q0EzR&fyGt>My`>PO4eydgz9H z9@~_YJl5?;C$VyfL9d`7{Q-V>V8)vNod$fZ$Jxc9Y9-O6ZhOtpF7V@-!t?n!VTF@c znW7IBo@c|lb{u}OucuC4Ts2fpDFjaNCyf#kC5#x@8qIdR0&nbDLatJ?D-|%cM5YeY z4MeP}-o*>`4F#TAc+pwF)il<9_T4ftpjJok>kowK;{~5`m<9oEGqg0R)WVy+eyL2L zn<|5H@o?6rflcxZnDBvu=a=>+W=x{nBAM_=;4W8eO0527&BCIDyjza)Ws_-ip<cTV zPj`lw2%bl_6}~6k%ec`1#BzZ(ThY#r1cEi?%3t(mQ*AxSM|naFA`S_8W*+*`8yIdX zgMoMq^|4>HM$*-_oCWR|izBWF%qabigd)QjBW8lr5c)>aWg@upRCjR8K@w1sOHD}; z+orIIEyFbqyn{rIH8?mc`CHa%S_Is=Z)pfhcPA8nekI%pNqyQA%?m;?3A>Yk#kFp0 zlMmdG$RuV4TeYl~t5w!)%Db2gk=_M`qAVf)OAJXF%3m<F3=+^)v#t5FqRB+_%r7FJ z?|RZT1ZMo5&um5aXEECUz8Fd3XlAf4UFUeqSfTwKw<%s2aQDCx(B*Glbra|=r|9jP zz5r`N>Q^{L^Q2Rh-kiW)AI_waY#))F;NH?ZiV3ehl9E8!$QNKpeYzv`Xx3YDzt=1H zH=rG)_qNsB5$F&B^U2lGcPnO*zA^rJyf4^xFLpRmCE$=k>m_!l?b8`F@|}7QuSItV zM0<Fm#PloZbWnHM1{2*8pUQE*J9zld$Iz){Sx_%33t$@!HoA$*FUM&<VTiFi{xT4d zD}s>y7E0@OE}SGmp}n#0#z(swXJH$i&t>j(-z-j~UXCi)$x|;i<!#T{D<=cxAYF1L zrT9Ayp;<+#hJd}Wc`yXO3w;3(7%;3Xhu2OlY|QeKj3DKHEE%@=y+Mm0sn)o_%Pk~c z1OHj;t`N~Ye9~GE@q*qzd^23T`b+dY=x1n=qI4YS!C~)EfYvp<j$>)E;+5)o_Xs<W zO@w-dHJ_0H<L%R;Gr94vFCyv~Cw96C%8x9t4;kOMpfCe3Faq_@Iy}~aw|B%a5;?Rp z$)R)Wx2j)eC2e824WX-NMGiMVyItYUD+69+J{BIRz*P3HU6MTcV*?fcZUb^I<iffs zwFh18SUE3cU;X(g)w{cOc`_BX*as-R*ndp=E(#fHn!R*{@i)mrpk|`#dXo5`PwkK0 z{MQ#?;NYxehR&eGtqJks?QXORK_5*%URC^YjIM$df(r@w{U)?j5~I*)8I$ivyd{qJ z!yDhzMnACwcO2<IKH>c1#ei4cSfH35azm)!^CCc)^S>_l=iAS;BD>85_~Ey|q^d<h zm`XP0-{1y>s7}v6*AO|vzcGz<hi&2)H&-oS7TJATY4{a*u$N;3H$S^Ix<4@x@nsYh z9Wu&APjmAF5u68q7N!30i%JQ27a`OXS~4abWLyMcE<=0uCsf?=cn;i+(9#(@wrdO` zz#wc!#3N@zo;Fw26IA6=rAGw8PzlCSq!HOoF;QP5xPA8jwbI51RE`gWNX&14oEU@k z$8OO6+KtDXdottCXn*?!0Fiu{A<_F!_<nig(}Hm*F;8x<jS5&8!J8+Qp0ko-6=SzU z;QxEQ3XH(be4ya|`yp4%KUX9F_p1#;+F*|}?^D_ABbieD4I-kqL8Lw%<Mv6SJW}Cs z^sY7UNVB`Uk)O1V0?Y}HXA!)8l($j$@AXA8fQa*oAX(`4!_6LFw0Mr4QfFI5pq|AN z^$-0FcJ=zY2*$hUPKQ6;Zc=!^ZlbX-x{Teefn+EER+tJ>tPPo!4971*{(rF>7Qk+} z2nha+|HTuba=Wn`^uKn4*c55l`%}z6cmgifgM8zbySMKX<o@y2iN6#97G@avCYRRn zA%pSp-%06z7j?VF2Ec|;crZWEyeRO0`piC}nbLOH)P5MU1Di;XJgA*vb8=dDPlb8e zwiw*ruHTP8t0!mu_ZwoM2~CCV>Zw-ostvPF8sPZeIuAAQiV)7@x2y2i_r4$*cjG^0 zqE)o+A?)C&vPK%#6&=FB17-57Ip2nd|1vfYS>PtU84ZS&JwjiuiHf1V_he!8`}K+* zP{F`f3g5b265idrbrzck{0jfrgAt0%pc$RXa47OvTd}H4gql~<9}D~<;)mp>kzfrb zegYc$`<xSjxci0k!35xUI)j_&|8)<y-+E%=fiT`KDrom6Cb9E^GX~P$j^utU`nfBa z`pQh~CS<WAxlN6(*cJcdhbS`4Sa1K_<dDpbC1%f57&hPBc5_z!U{5<c%L_?DN<Mo3 z`;-Ag+O0?B=#b{4wWZnr^0%9BGYk;+D5Nc&gwK`S4ooU~3pqAoHW3eNZtfvKV$9mE zzJFz+u<*bm>LDWOI$WIwMr)5#y?(u-V`7Gl1}tS4*j9l|E9e_3at&rb#a$^Xk_P+| z_#TJ&y4UZx>Ut9F+fD1$?WTn{ml<?xF?SIblk#m8*nS@*8vtAFjSK&$&)^|UUG|BK z&wdhqdi}SWS~+_YqMf-=G#rxO`LPlmb|ZG-zBr_k@%(m+`%9g`_}jO*6d<Yz2R$i^ zZ3-{Hw#Rs@IX<ba!Lb>^DPnIIQ!9#=8hs94JZJYsT<(PJ&-NkF8t9>kY8?E97B6?U z9SAbUv0+p|!uSJu>~#3cUq|%3b;K{yivQ_|560f?K7G=)iSobSwK`ywRxNr8XGiif zq_0&=3{rD6Yx-R&a%6>EADWzhx@_w|e$ZqYeizx|$H#H^aFz-e_-{|2gOrrTb*zHI z4zq)&vQ_rxYXj%ba_K3vgA8&>nfsmO$>LIP6Ka>&QxjN2Sk$<qVGM{TxcBtWir)XT zA)-T62yfz7R>I8!l<I6?emB<Yr}$s7`rH3Mqft+I?(+HRVDFn>+@and(Nga};L7$c zxNsZZ3DB7Y1yRC(*at}J2T628lKvzyVfT|CL0G~ZuJ$7y?MwKx8@LG@_x(zJ*Lm`7 zdTWg%eQ9WfooVycP;|^*hFcJ;dNozFs?FhnQqmJ9z*If{&o<kK3Hd)elGyEzgolV= zTzPCmJ8C`gf~1Y;8Q=ffR2Tu3<A-4y5*Ru}Of(*R8~^|Q_SOJz;vLb~lH)PyNfdE~ zQ6NqX>fDbVt-|H1*Rdq^UkahI485Dl6D7(dq{Xb2_mP^EJ7-{IC`(a_-+uEc;6J!q z0uh<%uW-9ub$*^`e#QsM2`J7b0%D?_4PN(LDUrz$S1!1DQ^D=!FLqb^Xf&&S2_kW6 zQhjVdWDo35XaZ*?1Km-P5N7Ilv#(28u6X>-7(Zbk4l3^K`toZtjyWu0Pk=1p>4*N! zd;i-8J%O|d!y;t}-L5orZ{Zmlb}aAKa|$GSK)E~w$PGCRIopNp6%yLTx^3r+CmoyK zvu`ekET>rxgK0Y>t~*_&8?^40HQ>9$-&z8WDzf=!#~h(q{AcH~-xUjdir6eg{%)4H zyR)cBIxz6}&$GSRcOiaePaPjVFtGRhuLpnoZ62_Pmg`uPg5-+g-u1qslkU8#1}~eW z6U%0~oakMYe=W{`|I;l17$)|kBDx4@iZLy}5Fns{@V3OAE&{mspGO`3(nBf0)Bfo; z@M�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%0AR8Fzbn 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�F-K%DD$P`4KQNXkF-R$6xvD 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�vupIymzn*Q9p3LA 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�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 literal 0 HcmV?d00001 diff --git a/docs/deploy/config-guides/img/weaviate-sample-dashboard-importing.png b/docs/deploy/config-guides/img/weaviate-sample-dashboard-importing.png new file mode 100644 index 0000000000000000000000000000000000000000..09fceb95626072782ab5c0b6ccefdba9c5140e79 GIT binary patch literal 98454 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%0A~<m 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 E5A;XZlK=n! literal 0 HcmV?d00001 diff --git a/docs/deploy/config-guides/img/weaviate-sample-dashboard-lsm.png b/docs/deploy/config-guides/img/weaviate-sample-dashboard-lsm.png new file mode 100644 index 0000000000000000000000000000000000000000..7cd3a9fd58d47df685ceb8b4f5d918435dac8505 GIT binary patch literal 80924 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 a-Qy!%NRf@wvOgYRKI+QaN>vIrpZ`A_ZjNmL literal 0 HcmV?d00001 diff --git a/docs/deploy/config-guides/img/weaviate-sample-dashboard-objects.png b/docs/deploy/config-guides/img/weaviate-sample-dashboard-objects.png new file mode 100644 index 0000000000000000000000000000000000000000..4b0c148bc47693eb25cde00a48991ca3d653b11d GIT binary patch literal 72006 zcmZ^}1y~%<vImMKxCD0zF2UU;f#B|zh2ZY)mf!?;cX!tf?h@P<cNVt=9{Hbh?>+Cn z`)0rXrlzZYRozoP-Mv-)Q%OMz6^RfD3JMBU`s-&EC@ARbw?cyO{;lRQGqDE>3Te?o zLPAMeLV{e$(azMu+5`&f>(9hwc(wRp+`;{)u4{2*a&qeHXlIzOh(gYX<O~#u(sUFw za5%N~ErC{IU*H(q$n!RjkcM<Hkej~r20p*j#-4MjC1+qbhb0BLZFrn#x=p5zov*I8 zI-P&t%kYEB39aehvetU%Ppq6pMY9-_m5?DmC<2SY3dPX#p0}P)g^h!spE!q`>-CTD z>X&@wb`ycD<Bjgu>Y{;NX+9{?Qo3TN!VKbsm8pwB%A_4=e`3k!fr!iB+um3vE{Hnh zBi&IPe!oPbogU$g>9E)w*k0&np~;mNtr5wf!cmWk_nq#|Nk`n#Z$DNk1v^rVtP?}0 zM_ke;*f=^m4thYDAafd^K;a0H^n86)Rd_MHEM~l{U-EvZc*_L{hRRjT7&o}|BOQNj z%CKIVBQ-t9L7<{w+kVR3cVl7Xk?YO79x9>7b)>Z-Gz(y&@(t%xc}<|-tAp*swyLKD z7V}Er|5n)<Htv^aQzXO}=>N5f-)}&G>9>bnPmT5TODSozZVSg3I;L>Qko<>i#+Elg zd<R>$-UwJ^48igJ$t0;PqKJLM(`gr*cSn4f{fJYCZFL3bKoP#aG<$RPdF(J_hU$xr zo`LA5vs}kVgN*&+McE9J${+hC@Qjcdh*tly;I*Sdb(BU1fJT7RGduv}GZgpcRAMoL zzu@{-$Au)ssb7{#yo)?$;<F)9%mk*xiS<GBZFDqLWcS+eG5Bo#cX}`<;;itY4V2)N z7tGHhpQ{LHa~D|u+oy&}I3KK?XQ+&`y&<ZHc;T^oc--fkgaH1j_m4gJT2Q*12zmju z;CBJ!*q;M<V^Q|<8<9lOV*S75U{t{L=U`jItcX%C!rlf2Z6ff#PwS<(N7I8@=#jUF z7ld=1LN^Gc07FNLV+4nlV4%)~qL8Z&5jqCr$MRq!gh;R{u_wI0p!h%)gp|vrM6dQ< zUHmDB|A6*@${DQ<#zpKd*T5XZ6WJ&9Lkdhe(6fd>5ZSaxju$05XusFnok9-^ua{^O zsfAD&g{OCa(+W(Yh1MM$_Q5~)gZyud+AsJ&L@+}N$O(SHX-6lJ?|$W)@o)G@GW6+l zbceVwz#gA4G`hCm-AJ7E0w2wk!j#Wcs0h;uV>Y<ezcu8r9|h0_DAm%h;F^aW?V|xa zEPh!uvgT`g?*-%a!3%yR=Gh+z;&j;K<<Uc6CP@CN8?GC(5@Pkc5!7by(*h7At&VCQ z@B-z7t-VRR@VjCC@cnQ%qRt2XsA3V{!%2x_P=t_wte{E2Li;d*(S|sQnEx3kkA6A` z|H}?$G6oMOI)?5~o*&P@m47h|XY70lr!@Jc5y$WqwIHHEs=)0#`_hjSg)9l&Uz)!d zhopv+hdXx^vAM!=`m=w@#3^$tS<>4iJSDiPG5m=<l9kWhQ|3`RF4-?tEFnuYmvNP0 zqOO`jDr6|6DYPwI82N0XYEpFRy$iGJxVt^VlVDhip+2StQD0;jRWDOhD7!8}DW6dz zQOj3zQd=k|Rq4#*&k5D!P(@bTF2gB3)fA|nmy$3a;PfL5YYKJsca58`j#lN-G%GbL zOD-c*K35}~QJS@%|2m~rp<L*oBT@C!Jk6qxv!08`l61DC{J|r19c2$?J<^4P(A0Sn ze>$ynx4eIrVcK%8E&oP4y^5qHv#?XUUHhpPO>$7iEPCQ&<{Ceqi@~^B_90(9NB#G` z+EjFBfIj0I{#s$%lS}n6+VSD>yW^iXt_PV5UWL`A=jGX@-RiHAFFDZTJu9N-HGeiM zdXd}SXG%{NX-=_Bg`v2hN}!m8KA{MpN=1!DZAEDiaS;k}(-3e(azr*0HWQ(z;-`F0 z!A_e?7i6VQW0!kZv?4DcCp9)UjyXP`#+8nmVwGAyhCFsWPNuE&$(spRM@@IN>9;mJ zQ$3TL_Ig8LrCtS`hPnn%1;9$vD))x@n3<>|sy%9`Xt`)G$!N4;yt%UZv~jipxmnj{ z!TQcKX}BUmJKfA>?9uexDBH%b=Os5NO`-&78Kx1|9IX*eJjgJ(qM%kxUW}vgNx?3o zGSg$CJ@dSEO7ElId|N}iw~LEYVheW*T3c#MVe6^$F`$GakKmXfd9C)$_l$8>vDNR= z{$}Wkckd#sxY8_XpJFm#X|LX+9)0ZWiv7~a>-6fE*KFr($DQY>4~oyC@E>7CpD3T! zF0QW0)TA-FJ;0uoh?mIE4aDvbe(0|zFE-F$MeRkUMa^<_zIlH$*^DR8C-+tInNq5e z1<!0YVOW3F8rq8`O(Kl|mKmdlw1qGucVb8)Mxd6XcoEv-FeBPU`BREhHhmTh=ZwPs z!Yvg*r!kjQGB~|Ajhye78kCMDRBSm>j~|xOmlCa|a}u~HQA@T3+2S4$ifsOo+}}(~ zM_WKMM;%G^o+^oYB;J(zlWbd3MLd(7t#ofORl!^V$|Pz=yN#`1nXIM5(VEBJ74Bp^ zyP=uyEo2rs0j~y+SP@u6T|^@D)E8}}Ssym5eJC&+#`}_Snvtw$c&2eiJ{h4o;FSeR zR8C^+x!bY>p(A<2?FMR!`vD5U@}^(+vc}>nN-CBsYEOQj3=oSe=uAk*rP0YcQ)r5~ zIoKvI>gX{gv0Q7l*nncG<Wwj_3a$!1c^s8|ZDX#F^`Si;zniEYd2OKsOkebuMSO{< zW~tSwvmL$)%n2k*HcE0#YQiJLtztOQAJA*E<7*J~@pwYo#`(hdsQJEHuqC{K!Rk+S z`Ke}drEfQlgS=Io!SqO8*Lh%fIg18E682rijb8h{*VtX(xxfNn<x1_DE@JbJWvP#a z$6@kK#*L<*{eA9MSS>065kF6x?P@1tvvkAZnQ8Vo{HWR}(#T`eXKRaPnGKz~o9Cu? zD^&>s$>&Q7%gigx)d<z*OMp7#*=Ux;z!3p;U-c*f7q_YvzPgC^a<As|vrr*VFPS^< zb;eaMJ40|+k!AhS<#WsP!&5fNSKg@$%I(26!pyXpwCct@orm6(AiSg1qa(CK(q%35 zh0!B;^kUL3530?tvOzY$F3ItMnf%R?lY@xt8Q(T9rW36vhk=XGY<a(Rk3iSF0z^xl z8O}K-^Q2~~X6H;4p{4bsCC@Fqc0)@=f~+$BN(awvf|=Aj4r4Rq3AE;)D+Za{*~eCf zQ!ilenTHj;J-veteAkQ1!W`LsffN!m7B78am;UXM;qu7x@ddqVE`7IF-!08#Lq+E{ zSMD|Y_G!o2XH%<%lPZoi;kA9+cdKpA=`K&pnL`5lZrkVU$I_>98{6wdE!jS=<3SMk zd~{9WK4Auripv(r&$IX=KdqO1<ueA6HKHl6XN!~BFrSRB<Zfxdry0ZR$j1suYwuMX z^k9H$kXR6p;h4|#s|v*NTK(d@toz*C=HhW*#QU{HIDvESRr1pG<n+;P`P_0tpxcft zn$-7_Vjp<$by(^&23~|s*u`4`0`Yd9#)Bk>S0@?jc8B<QaVBwa)0oOGVyQrh!Dqxl z_pIos5z*!^L;u+=XpLX??8_N`g~ft<!BRXrM|66Z(}e2pu!Pfu>EEg9h)Xiv1@-#@ zW^q`W?ZspUg?4aQZ^u+EEg>eVQ=*Y_9n-&B$k;f4+}POAYRZTVYU&oCG8;pL_U97y zD{6C;AEhHu2F#N__vCkUan6BX-9rHJd7-_c!jDJ(`qlDntD9t^C2cA%55@3CBS5`_ z#)N`>qoCh@P|$=>@BX2opk$zl{+m{Tru(-H3=~wD1r*%BWpv)|f3MiL@`nER9rjl! z6#Uy0=35EQf%z|K=<6KV|E5Xacu-=h64KIdcU5CY6BAn}b313*!t9;53Pk&_+D=eV zxYU0Ow6qEp7zzqz$wE!bSxa7y-`LKE8SvfC$b{M5#{RD!C_#7rH`2z$89?rCV{Pli z?=JN59|`_9`foMMNAiC}oUMdDYRM~+OV~M@kaIJ$GP8aZMj|IC7j*n?%CGWS^55{c zC!vq#&d&DyEG%wrZp>~R%yy1uENpyyd@QW&EbQ!`-XuObdDuDw+&|emQT|KGf9d&b z;$-Y-Vef2VXG{K9FTlvo#aZa%$G?XD`}$WqP24U1$C9nnzq|F;L6*N97B*&9mj4Up zY+?HU1N+PQ7wn&Y{mY!-UuFDC7Vak2TAwX!-d^=v(}cPBcsT|CvGf07{ZC8(1yy%4 zag?yLc|$r2|Bti&4gOE&{|5eJQ~Q5xa&WT!zij>o>p!4>JHfAF;$&y-^7kdG+gdma zvkS8PU)BE`rTsrJVK&Y;TmOLmv-W=@wEj=Tf7bqQgrcLx+lv7FZJIFKzb*V{-M{4p zS^hfzKL*3UM%q8MZ$nKONs#5ghpjMDf9}THw<!uG{aH-S9r~mbKDKhuWq*N3PT_pK zBLiz)f<_dI3OZJt99rfhwM-tB%CwG!rtWfMhwG9?V)F>|F!k`RPUY^WN-EuXhN{n1 zUzvmG_TX6k$wfaF!*A|p?8#4Xyu2#-?N9J*wBJo+rV5}#d3f!$uNmGQIw@qIRV(hJ z<pKyX&A;YQ1cbu<B{or60#?~oYBG37$!CAe#EMG5pdxZoO~v-0cfjpgCW_X+@2P;9 z>{{^8gZ>Zhn;2t)sQRvfd~W-es{mwd5)#=unJr>?sY~G$b?`40|JD^7*YkLDEbrmB zLrFFqylAD}Zy?Rq-o4cQa@=juay6077;H~<eRt=jg-=Y()H<qceb4pQfd6iZ=qcvG z*%>qaaii73NGGG<<xrUE%gN-6HBIjp$X4@9^sl|)WBL-!^^6u1F1i0||37d&6T}@X z{fg+uL(_#><i#Ei8_1f!-xZHv{k@dmwG_u+a`vgIef`2NBBU>?H8wpfJ^jm)?CHMv z`ZB^}91({A-r9$rjxjq^Q*Lf7fB3mm1k4QwGoZiIHsHkozFlc3tiwGUC(~O_9HW?q zt(ih~B8n`u!L#Lox<zo+ACq@A(fmWwfJqHOH|GRr#q1sLqN$4GtzaqK@%@ivSE<hz z3(xf}b-c46QjybSR~B5f6Br1=gD0>1s(xQ~;HL*_`yK&<=2>409#9IW?_C7N#R8DA z*V8=-52zlnfXR%mXbr(jpnh1nlMo%@mG4;1EXuxB{KAN=%j`?2$-la*$}A{fujf9@ zk~xp<l-PHnIP3Dj1jdrXMVsqs@k8|6+6OJ#T82~xms@&IT74KDFpN#Y&bZojRfiz1 zGck`S@@I|0WiZP+UB#zx`ne}Y*g3O%q=r&v&Fb`EL9@S4|4AmXcgRQFv_14#=u!E3 zW814`+y12vWRdab8)CVsj38rXiXJm<b?esH*jTQe-|=zx>u5J*G}-s5*-xN4EQ?<W z@%u2^?%tHLmEeO_b!U_G?e9~&)+@iIcDIG@R(A*TuccwF9lyREd}fhygcF93(xW@@ zF=eg`jm}o5H@9R6oln|h<w5S~xmVuINa*g|N@UBa#x{k{N`Ny*V5<HaMNL5@O; zbjK&lMwsQ`D4NT63#}U*--^WFvg1oT1UIx3Tk~~06R$S*eBZ7Z@Zu95d8mAUYRQ`k z-(23Sfvn5)qSBWPqZ?i9crp5r7}1_W=Fa+O#3i`o{9NU}`n@jl>z}O!9`(fTNgWR@ z6x&*`<DvARL-Pt+wvU_NiL=&nW@u@$7aN51>{jKFnQPq${AP6JLFTD&tuYj~*qvi` zHn+N(R!&jzs_+FpP4hfKD3_LDX$&tz;~=*G+rHcBvby^P#A9~8U)%wG#QXbqcWZ7# z^ASb4v2p3zF!A_=Yc*yb4xGKTWpQOf2WwBJ2Hcgx88aukrND&O`A<Z17&$C<KHu=2 zbf$nUhVu$x1mBL}wNP3Fvpl~0&HyZ$19l~5SAWhr=!-J%%xMhon!C3&%(Nh6BRg5X z|D4Y1R($GAyg7S*$gAy!TcyYAOw2qU@l<@+YKXhOG21kF<y-(9dH9fZt2jHd<;dGS z>oD3cJ6pA*uw4eHI=r!Mddlg|J+=|xz|%B1ycaUs0~Au=_oa3toCnk}g5-e39t?Q! z-4)V<cQp;!?Q8GfHv^3X>~_EDaib+iA72n_a{KZNlI(#Smq~f7inqN|o(ebCqE10s zRh%)Tp{EWEtt6VQ_oR}m&hCV?0Q@i)UoazHv7X+ywK>eQnneXl5|-mCxa5KO==j^g z&ea-cy+M#`k|b`Dn_@aJ>CK^rg<!|~3)uBTzQ}~ZgjJh^Z=zGf2YZxK(NKYDAES?Z z7(EZFyd8afd>#(#w<8yL#z(L(ug8$(LuzZc2K-*V0GB;3pjG%6?M3@b%3POCkzm;c zZwf&X7w(R$lT1*&Pc~}v-Ky<Kr<OI+7td?<cqz1yRMkO=(R5qn*60aV_Xo$Ja=_Hg zvSqjkOUv-^uu|*>7;JxVa)J_K#CCgvV_2EMN@=pPJY&QyvHQCh1wCf5#7{~}3ZIB* zwnt33fzwJ&lmQ<<K4Fz`fK_nQ@<WzU?Kg-vOJ^)HENrrbmsc3%izXO3Du%8_zNCHs z&7XMY%XY#F{4e4^9(V?ig|7s^tdf#G<ISXpQ8xhviW-E-CNBylM*q4syV!-AIm}6b zq*<?n^Hk=Hvr2|F5h7$euK+XyLP+r4%sjI1vXcY0uWOtkZ*1#eP&4}kCqz(jcY8CP z>+qg5>DH-vrAIB#iCS()ps#rCTWLnoS7U%XArDBF?XOcE-2ZW^P`0h&s5q$*bJJky zj>0Gv2}@u5q&UPP11)YK-gPpJWx}eUH8yF`%}e<7ehgUTp>t4$vd>#P>oD`eh$uVg z0<kr-U<%%~5w=0oWj-_V-35+r5AuxgRJt7q=b=yc!kDKCdo}snCW+q((^e$0)2vCr zQ@;0Ky}x(&^@cEk<Y%l@P7v8#>WX=65bM{3kkXJjLe5xcos%E8AEq+wkk08LpUuac z8K`n|hvtiML}tTC(I2WBDNr(yRc%N>zkgzZE_=S2+gPDuVPWM;gg3OdN=u;lfL0%_ z0M6g%uvukV3LC$SxRN`&xTNN(M^MYj%ZK<p-CBO_=F1Rv;zvP6WALrl*g!9(P(m2L zT!2Vu)tg53vUQ_ZjV8nQVJQlJSih-qV?ZtV_{afyiL&#iT=l+6?~5i8kh_50VEvEP zx1tHoT1^)Taxk4=G}LUjVaxGb89t2Wa5s<C^R%egBsqbvqgC9ka#xg4J$neb^=8Us zKb3J(mVUCaA@r*ImPkAq`3q{J;rjJA1R^rlFRk@0T#$=fk?9^!VYx~9)K8M1RYZ=c zc{c2wQiueJ`_c^PU-cGSoy-<L?MW519Mbb}acSET7Ot+ZlMW0F%F|<o=EjLzy`x4& ziSlpaM!hNL>9jeXXKnYW@1?*d_1wEYAh;cDaWtqeqFwd5)2G(@4C7rciFDR>Y#W8* zjQ=T2ijE2x^8EuN1S;%phV8BpIk)IQOD>GRb>nfE9XJH-U%V}k9ZY(-QmyxB+YY^n zA+li}?yc^mp;4u9SQ6VT4R!a3(pQ_H#BY>E_s1843YCB!z86Q{I$yNoi;U>m@jd~) zRxqbEVfCQH>f+n7yl*?WeU6rX>n0NBAb=WVh|5fJ2Cxtrl)!(nz;}a<N81*%nYkB? z2AZ8ZzNzD`$mj+ZTx=zW-qbKLod*}9UaYc20Re)McT5#wh1;Oy5ZP_VMdwv#;+SK5 z(uGsUnqc*aeFtKx;oGm&G1wpPWI49vih*^$q<c-X_AAe|Ru|=xB2l9kfMSm_3=z~{ zUyMr%G^fAlHd%}HFCR249eg|1o5YzKcf6XCy_-upMbdx4-E>uum^sRg!7AnD5Qvxf zsbE#;$=s;3mLiLfhYpaW7e`c>luwU>vDG|Z!7+B&Zd7^k#GEZ%=YGGN$%WE<rN)7h z+AdbhVk+ZZ0xe1j6=bL!aZ4jLSh+SmTQ7NA!9|D*TtKk<uZ?8vmKecTJgOt|u6&SM z_r%lmG&>8dq%xq+LDrXdhWC>{+2DsY2+fWx>3r!d5mm=JEk;Z5Cq2{1F1-o#ti&zd z;IWuN#j6n`dwc)cBJZdgb92o<d6EuS2ekdEX<2d1zl49GX$X4mdpOsxCN;p}+2+S; z97v~V7fm5&W`1U}*6QYN?yA-u(T>>sHe*i@$7zchy2e67V^+RG^4n2?{xblR0AJQY z`XeHh%FttCtll9x5M?1zjG8QHI=%h`jNtX$)~ItTYysegL?esN?0k?(VUKoXCD2YV zD){#4kW?vP044>y;;DE_+x&JdKLIl9yrX^TCaPH9-L5~J4dzq`vs?W8<$>SFie3T? zl|QI`>m=6O8uX;eFkMx2Ij(Sn!Vx9Om_7K!rI>*ky{W-dPm8vF^V7hIus;*H@%-_3 zVz;y!^4D*@!(Z9j2AWhDr;g=;QW;bah3;px=%~`kP@K#*<XXyR^kv}mI5Kae49#x` ztn4^rI+dmLhqyD9y!G4paUUX-9|pCQGXnX`PSb3&Qfnt%pffX64m8Q>il;tN8!>36 zWPE;nh`x2*Zprt#FaYCV&ydPY-T$VlL^Uxd#-ue?E|V#IO|Jo`Pde-HUkLRT#eF3E zMHYojDB^|%Q#I4R%Y=O7IRDto%#D)}aw1jSYgD1d>#c$*;~=&NRrgahui8y1C}!t3 zpV!B4MjS)W9p7k&qd#DI8$j*PBBAH_;~sw9Nu1JX7>e&?)blgNMCS1h_<j0=2x<^j zE}{N`0F5#Y<!NjiE-cY3;)u*F9KQfJ<%e0o0y<>$PweoYoD0wKA+os!mQQPQ)N?kq zRX67%dlsbzswB|FH-t!O3g`onlKAT|akCGO%Q-`7I{Pl~+rx^KZOc|7=wCfZVx#3V zD^GvxM0OHOtXkaIA}{~!=R8%3dhC};bdG;kk2!CnuB4O<3+ua5^x?5yspqNCZ|)sZ zG~~_YcV*ZKk7SY!RVz5?(xR8bJv`CDm8lxCRJgQSBW`P0)TN10(CAWHD#}iwxEy1+ ze%Dy11Jkk3wQ6uF;&SACaCV56`EipVTBtz%&}M`Rw-F%OI0Jdh6LO3AetY#zr_4^t zK#JEHa@8(hVKL~y=C;<di&$mWYr$9sXt^tKjzz)N1Ay=I19Bv#q-@N6l_C!G48`D= z$2w^lp=}bqy%$&?cY;wfgRn%vb%B|{?~;;|C;Cs1a{^?|xHya_sp;^f-W5q^2APSs zvs*+G6h$@nQa$2r8jU$xl_KR9hzC6a+^UFj>OJ}L+9i#lWR=_p?J6eO!i>+-A^<sR zjIe$$1!Ui%;v$K#B8q{*!C&Y~@eFyeS@a>}V{$73ydSF_La5%g>qoH(qnTfbp(5N} zHy|Z{j}U=0T6hMx2paIxR}4Wd{h-bt{U|A{071~Lcda~4#x4uB_&b#>w8E9>mh2mN z9v0fSzB;ztwpkeqNs({}5ulL?V|uC$+O4(>A7LM5O;6|MB>n;Q1i%)y0VJ(T6tab> z7qfb<=}F?6z7t;GUu+`@kldau8AoK4Dt28?0YT_p*PnT(;?TRFiMp+C-n*cB20n&8 zt{-<z`n(_$uBrPJ@Sg^Jzqm~0FzfpnPb;D5)(i?^nPKPT{O)pAB%jWt|Kk<e@ILP} zVTP>?6ac?PSlt_U0lpj_oiAzeIF~#u$1Oh=ep;Fg)im_s>Ue!VM`scTdT;H<1W%Ge z)ZCx4p88k}pRDFrvXy-9S|@!dR_%c<fQ|Le_hAZrOsyG72CE$&s#8m!bjE}*g|DSv zg;BCZh)ih)fz>Y)WWkM<Uot1zaga#X01BSciS|SF=3a81Ioda!GuiQ3!xpv83DPMf zXXt#HYvSGsobn9X*AwOQb=o1ea+j21yT3dRF=2vV!!f%wQ|GF3{YzpSNaPVoM5lGc z05|Qpb+UjGGrO~y*kBzpPHN}(9rU=^xFMhtICgGsW|Kbv0<Xgv>QPSiSd<{<)Mi7} zAY?q2V0tbTEjoB+Yy~VNO&Kd0q;QWrM0)MLe&w`^V6#Mla4&arUO5I>bMNchTOA7g zxe<>9HUe0ZP#L8i@D~ay=Jcn@vZ-1ZbVA}P*vvPDgv2254AZX6c8=Xzn<$}uvor{` ztS8r98X1)WNrdrsGDDbhQJC@fkiDb@d8WK2cI`7-cfHwU=vkHR1$W_e)K8ViA%mvn z-fSLU^XqT(KirVWLOC;eefthXH;4##)}(!iPndclqoWArcc4&094o)WDVV3oT|0oM zvsAkxhx{^UhO1zSY*mlf!u8r3O;T?1d8Kon3aqI#8I0&(d0Of%)1+6}XFBO7KAZNW z%9Rfb1^CD_?VmGXRI8h61|*uql_dIwIkh9Pohuvp?F(#7->qTYeif^AcmEaIb_Av0 zW8y;N>%Ecu^i*kEP?gKvkAiv=1`I=!y|6=A(D(BpHb@q^!F3^XS#+8d!aHl-Ck;9$ zOGU^gvO$iKj|_cPcfkwgN90Xlw?(-*dmE~iwuS2su-)69WEkj7CDEu+)8LC3ztx1h zAar5;s@6TiSww3unvBOt<@vxSs%}S!IPZc8rX)=f@NC>lJ~y9?)b~Eue)Lnbj@hV1 zrq5xCtGExHp5Y>{c-;wdE9B3{i%*N`Mi$r)a(12ozB3<Oc(}rwTjVuCdaiSxThcT{ zuzM{vM9F@L>BgEUot|yCvKq27Tgc!y#wv~pPK^^g)*3JE6;~uK6c%8^<*)LSrK`cR zw$uw$GE;HjRH*)GM?}q<$;78#!OF<stcc%)OlacvWYe6=E_u*UR%3B$qh?3+#ea(J zxS&Kq7I0H`Cz%Tt|2&EIuD7W{-V!>`{+1pKgDE^Qi#7F+q@spx-=VTj@2^gmV+|m> z{=GO`uCuv!Wb{nF?FTZ41NfIM?@rv4;kA_otJEnf-(E$ldc#j@k~lrEF`Ie*0UNXL zNj#@E{i8z=N&DrOi+@vISZFE59yaEoC|~2>Z&cvi7rb-#gftK<|LC~Fh{<9{#ktR6 z6))D*y{{>Kl}7gH5fE|=?YVy+i|G4%+c;1PiCqw9ZcAc)JqK*S58%`hv;%SUl}~?c z4T@nUi<_c`PGSZFz2e@7AH-?c3A)p7*Z<CJ%#Gthi@&M9MiU&c=x^@#%Zy$*#NUM= z7)B<A!KUvGKG*yH`L4o@=05u#e=yax7+^2Jyowgnj=Sw%&+V|ra_Xw1P)sbBWJ^dx zq*3iw9Jf1p;nmW;U@0KHDKt*ntdW7X-%{sJOx6U{a4H7QfbWg#obRhj$+V=OC)_$m z`SDNQ*O7>oxs}8y|EP7?Aa+E`pRm^G6!j7J8EjS*s@GfzJzSm2wX|T?A^EH?5q5Z3 zoQ=k_=B%m`vs3VSA;iz^xpiu#OT)#0c(^bNI;(PI&StK5&gX8;P0@WX)eNY+afv1i z`*Ph=>ZSD3qq3pw)^#XvS2sa)Q%ZF7S)a<(J65^ip(onqNRTV+Y+}B~R(^FD?v(8H z;x0tL-SyoO?}3ukde>`ojm>s;D5{mKwoaix%FXM;Q@8Pcj=PWSvzufla}m+)$+`{e zF^?T0&&FLo2owWxX#we<qYK=g)ax6nKJSaiySn2%a$7vzro~!WD#z%NsM6o)DVr57 zLfgpC5XA$MSf9sH^pN@|Pyw!<i}uAtyjk-NrzVK$@KqK_oTWUgo(uYJE-!x!pZ_$l z-%e7uxQ&vbs;g3p+H(=i`C+TeZ@Ro=(7dmQvkVv>&^{50;CMQ_V0`d$r*2PjZ|qU) z%f5wI1pX6mB~pYjcmR4l3b?*jWG@hCzw#K2RHF^%O9bWW=a*A+6i$b-MSYj`U|~hb z$Rc3Snr+?F$nRS{6(Y>CWiF$<@sO8-Tp2zj8q)h7>uwMVyMuGuPF=%^B}ht?F~-!@ zCK{$vIC{Nr>$B?txS=(bQnYOjpg-R86YWglxiLb5o#i;DlA^Vm!&^+Aezkbkyz%B* zn=(cP-gs`zLZoU{n}QNUeA+0?BsLTVmm^;=a*gf<yOBZr0Q)~OJW-UVxS@5|$$<in z*iO_ybdMC!ue%26K{~v>i&<BG-%8tqxj-O@*zR`i8LwU_YsJDH!kV?tBzG$$KDc3> z(w$r{WRMp91ZekLu1;IAfQon342MNAW#hNdJDXVEbP!ohIq|yAe7&)67W%zW@5;Tp zVb#b8qU;Let2$|aYS;g?3S7PAUHk(X2{GBeRPa?k_Y~^L351ar5AkH|T4sUPurpSz z{{5w`mbCfZZvza>Ri(NweSx%sMt~0_5f{Wfi<p!mN>fj!p6I-@1f;g^@A9XmImCzf zDZ%W02j!<W{jJ3ThoT`;zV8rGt7GHuBR?nE!!SOYqHtGvNNHqAnx`tiO$--qshs6^ z!u=oZZytNcA@><kwg+px;dHnVow{q_7B9Wa-k%k&GJ8<p7g!0}{B*|DaHQwCQq_R{ zN;@B``=8nFhK2X2um1|p|2s;rWrCO!(S6%ktzM|2oQoCl5Fkb7qvnKdH!sALR<9(x zEzRtsO#Ax0ocB_zJbqY~dujTKHzlV(R|B;ild(xyrUD_1z$!YydsM*Rg*PTS^!jg% zO{i*67bVF(q8H=LJyT(RVn!E5n5cXGyqfFTv$!~*`fWFs57z;&liIA+ZtfHQhhi5* z9O^k>^~*6<y1Sl1uGPK#bf4>cn!;P))Sc^2W{ZD4ag&^R;Ob-7<P-C?q6Iur;13V2 zK+_b_qH9~bT|XwjKlNtM_*U3c{RiLYb=BF`aoVH=z0Nv9MN*ElP+zYG_UwVnMfSRe zviA=GrQltsZIB|GVyKUPh`m8MJZ+;+CJ3b|wDwy71wyEz(zW%4(XIgFjyAPW-WO}u z(bz9?6vGMWnjmrmP0cV|Gr8rDthgNn6*;_FiSKln&?qzd(TH(IF;FkGPN2}O<8{l` zGf=#)4N2uf{XUXVGV*Wkcxt-8BL%hgtU-%xn)c!g66kBJM1=0fePkVjC28{RfwhP{ z!~#+WC)VYGHvT3k?6eS-%t|jCjmvgjfzdceNJseU6ix9VZM}HSj{9&C7JR6YkCFU8 z_=8E9dRT+y)_|_63?FdkG0D7{6pWz>ZuBHq5ZLFff@_D6B}n8*-l5v-=rd#y<NAU3 zd&8s|xHo%%_8b?R=vs2OYYsihh1%@BO|Yg+l93X;hvdGT(Yg}jmzSOyU~ODjtCr=> zkeD^mDKYi7I@#`(8r}}X`PqRb+7`Adqs%&wBnU-z&riDp-7JO-!9aMFI{0YTZ&NN= zEJLhfY}qWhRxe@fVl$n@_eSQ1!E%IC5;PLfI;4zk$2%T!$og--3Yw6)CyHnVkHwXO zuiRW^Qz#(CKuXZ3<20bWm9E73Zfj2agm~EAqf>pGzWlqmN*#$HJmQe0^yZT}-_CrH z%2vBovPQG2fAADLvY!e)umeHn;UG>^+{r3A;WEwsc1&7a+$o~TM_<^?{;Tcid?sja z*ch;1B}4-Uj<O)a#p}MdXxuH0mqKy9%X)q^*XkW-MA9KcAd8+^sQ%=<sn`6LU)Ej8 zLQr{#!#08&wmfq=<_<4Tme9OwtEqC6$DeP5Vac#owo*6V1?MJ5u7^ggY)LWjm)foN z5sLit-~E{aT9v=-U`b-!ReN2Ta}3(B!(P~0w^_10xgkWR?VH982}$g2v}=&D{>&1` zV57Tb<x#vrc}xk@qRlpIM>e3ksi~??cfhs_+m^Z7(k8;}8@aTqZP{dw9g+g8v*^Te z271Dyqz#Y6ut$DRA~O;p4^lyU@#vNoA!Z@6Ex4g!KwqxkC_QRkB`&aBm4w(j0o`86 zs?8?7+=f=+UW|LwS&!48ghlz9?k!8EXMH-8J#F>V%(aK;h6M~BNhMq_fl`cdrCu7U z0bikIgJDq6N9yz!yn^sZ-7Dg91tpU3v4x$n$=C8FW4OL00De99zsS<0y9_haWAl}d z2T<sPefH+q0QA9Ujh#9_$yhLgq7S*2IF(X#n_Zw~7+21f*7f+`$Lw=SMX&F$k~-s- z@6pp14Bm(5aTt_8&lODRhMWZ7_8HbIRx*=#UJYwX0w?5Uyd#iGSoH|Akylm{TJwS( zJ4&9H77X2d+`(%imWY-!IAw}Qa~Ui?7ukJlcHJT!r<HDDVWcmP?vPqL_3iP#_1D?% z99Rqkgh}D6PWwR;H`yO5UCGR$cQ1>Ip~(i`>+FxChA)wz=RKY-mA-|U`A@!gA$VDS z43KiaXOU&$k?z;0Zn_XN61okZjYog;PW)&xFD@eDo`r?>`Gg0byJve|=X-T0yY)H= zT^h+x#){cAsuK6D*-vK6I&ApD&xbMZG>;5Yszq19|0GX&8sL=Brau!=uldDI^oH8c zR=NdCk?~PPv0=ELPR;8CDDkM0O%W`1TDjfllC|+<h`4bJ-mVQcKD!0cBOFsB;hKc8 zx1X;+o#d6#W<O?0esF<FKT^XG`|wDY=(L>Osj$-RE+yvJf@h|(>bpWR@8G%h^PDi< z`Z-Y8UHKzjp)@^us1rH~A2GMhqPa64W02$*vG6b(6W?#R7YEj2VI1rVHIq6d%oCt* zinkzRsl<7bCiik#%DNsBK3Ar(qgd=ly1rWy0h>6km67Fw3=s4SU&=}3jz3z!VE$l? zE@kk*_?~?FDGFxO2x^^YN2NZJU0+jL<_t9V8b3NLv9IZS84OZgXWsGOzguivfave| zawbgOG>eC)Jpa&qIjkLBwyKVUl8ozY9xpjxbL(95+?*7;lXC=U)$J+}K*^)^c$~*P zH%tq-Jbrh7Trv~SZtCGf`^J2HlE`dxE+Ki}E|v;h2s-!dY2uL80`(^wG+1@`uu)u= ztNXnTv-Wf+(BjV}u+{mTLA#Yp{gOEa<gl2wPv4F?*wCk)yUWj%%K0=&v|w7f#i<_4 zb#o}1q&-hu^P@sW<j7f=-+iY>tZmoBJa{wcJkColb;gPot&u(+Unei*x3|z!^Ah7Y z$?h-Zmh%_*zN<-*a-r~Z_73!}Cm~Ep<uI64(~zf^Co;}2GFIlJNtK{H?AM!xjgsdG zUFZAWJ#c&XT^Me3-L7#y&XA>~j%`NxZxFW~X4S+5GtPimre1?~SapdK{YgIAb1WBw zFrA6dab+{3H=Q74O0!P_-G{<@t%)&1(BU&J>T}?2upM&y-O22*1pKE-{P5h(KWP+M z)2Qu#Gx+P@Fk^oeT$+enDL(HghV2`8v#ok=-+-EJZIBE-_WHqtien-AZFWa>ze4)H z0M3>=7mku$eE4fsZhn`C88jLTyQn9qU(*&cZQM-2_f_e8Roo4E;AcYy6@x2}N+pni zFAmsir_J48;9CV%%j`-d>^d$?Z_FF_b<T8cJ)G{h_FvgnsYH(G6p}vY=1lUkMo1L( z)W7yL79sFW1}R|4fJ2Gw>eiV?4y_EI9Pe|z&gzfL7D^Xhcj7l@0~i*<oR(uc^~1fd zM&S!<coxm6T^^k#g)8~5xXbIGTsG&m=}!eVT$?**=|DZWJH1P|w9#Z7yR8=W6GY07 z%tx_FW?3FG7GCA_f}T}|FC%z;HqD*=o~_59_Y;#1>o~-|BHuh-7)zP6l`^kaDQgm< zo`URNA1C{8|IE@se4eVNdkyg_x1}lH`#4BPA!FZ#T<!ObR(Iu1{}Sesiw<^^S*SSH zHB+tS+3=RVFP`+}x7H*fOSBejDYvoFU91p#E^vytC!J=vR&AR|4~2H|OTHdn?|hmg zKU%Q7K~55`iv~DL*4cG{Bxm_zyr0r#7D!xO?vlGN9T)R_?xw$f<x2DZWRFL?*B9k= z#ouHn2<gp-1r@KakiLNZjuBp;S)4<q6w3b;0*EVP>XVA`*x9p^5NI>Lq`wIK{2^8F zOAI^k`Kh`-u+Hzb5u`ysyVicEeQaF`_qfNiK>=_MlYKiMw&Wxl6?_Ih^n;Wv5%YaL zw)*~^_hhkEHvEakWX@N&N9ujF!^apM(=|&rG&D4=_Z5cS%J6H~Ay4Oi&C&NOrDkC! zx1X9<nJJnVW6@Aib@ZCoZn+u3JO?8S`T}>sR_J<m5HgHxvpJ;v8>xKgZTKa<{2C%# z@A%Lug>og5Mpi;pR1@1gbI4n8+~*T?!Z<zG$$96U{(M}E=15L;Cs)VAW3K(I@2M2& z6o^rt&gZ8XdL~(D4~xauWP>|y?5RShJw;xeqZ91o=q(Dmxl%g4(D^l`W_y42a?j>f zY(x~_xmIVIl2L_h{!*Z#!g0cgyB9UQ?lfajGCB&dOU_}dTdeacI+}Ufg2&tI&cL|S z>Bz=&B*Sqy;bV9>Y>Q5sZe`fy@UKlKB(r4Cg&K546b>g|je0`(&1Jt${^NlB4s8*C zksGe7+27|FF+Rsz6edC{UAoOSn%l-PMcV0wbYYP!Gr}bbq=O-<=(Et<zZKmJ;_3jv zq7>hdX>AEjxXkQmx!Cdf$`!eNaCEQTcW@m@%n(J|FqVZ1MqNe+pX(bOK!LUeI;OYi z!vI}>95AepGRAiWZ8I0p>s&=7soi9~WXd1Pr9(<K78y;xaP#Xa2p#fuvCF2ID`!e7 zuFbe~e7>cXpyWxyqBncJ-LxNgl9t6KBFvY(QcN^s7DlswnUA^rBXlWSL;&aIhAbvz zO`st~Zm@H<zG!f?wL6{L4q1S!LHszH<BwtnZx!fd-?_u8Ss`$x5_Bt7Nlqr>%1f+< ze4L^q(NLt2#s48|z6SFrDJj8>ay>kda^ocl`=)Z9*ZuP6V8YK&mKSRj#4%dAIT-ni zhMtEWR=Fzpin537oY%>I7qp-kx0jm64s#5>7JKHm^E?YS-#4XE#T<6%!(TUh@fv^F zP<42N-w}B}uHTW)QeTDHIDZp|h`d5Lwk~S=mR)WyPyuqO;MeDe*Ybxv16kt;2%k7O z`{hs-B(-t1J--E+$lp-2^2x+`d5}x^OjPuDuIxIe@)swbu8d0Ow2lrWjfZLD<;HqB zJBA0633=04>*Zq+b19CuuF0z?T~9QXs`emIcYZ$Vc?rm!VxX4okLk0C!xYnYKq3qe zA?1CFwGf=r7X4WZj^1u4HC7I%!``db#{1oIMT4q2OXse9vmGLP5sl&**K=3S){6~I z8J%AyLH774Q52jC!|Mw9A&Fw3(doT(RIh2khaXMywyq=&So}HOch=y`&s=nFE0I-h zD=rXKrjh#fh{bO<Hw^e3xXyuu(iLN=$aNit4KFyiz|sZohzg&v5-BOwApAHf@|tl| z5koBW{W`|to>T}{VXsaxn-AxGLGWZm4BMv$;d0)wpH~ygASuo$fA&xs3m-^(j4pi4 z0E#LR-7Pcy<y$QE$3A76&M60hqa2R~pd<q>*9@P(nAr?K>U-UnTkEuNX5Y@AbA6xf z2ht8=D`eIp6p8V>V-t8tupeW(2=Tvxl1j`X<x0SpHvN2Gj_&hE!GPK?F}XgER;^WY zP%=!U@auuu#7$9{Ttu)@ukrg<;~EdWRGwi}lQid9-KO)$E7oK$9_tdIzMva-lQlN3 z?Q$~uzH_j<*e62F!z;#T1~?AY3u}i>)-F2cu0JoMFr2}B+@5^eP;Sm*I|Aoz3!Yoq zudB3p_g8gIZuxtwlWA{}ct{*Lk;U&8DMd#p1%2PR)g9FEg+d5hAvA(@%tLQ3Rwltk ztl{QE8Q;3n9!=JOq6ExFGv=m%S+RV*rykR{bV8yuMXS-<8W;VOsCtBy2TNv)yaAIE zH#r$e9pQ@U8n3Xu3T?VjBbd;vk4OO|9CTI*aCfvh!2^=cbB)Y0FarsZM>Htm5pM2; zu`otrY&Y!4g9n9%b2U68?fOEx%-(5p?<n5gAehle0h>s?n9w3Za=!#Y**ILRmQEGZ zfAyT9<3AGe>|P!0?GS=sgh`I*$j9g1^Y_2DVEeh{VFXaib4pHR3lX%<SJac9CAc#V z*_j$qS+91i+3P3h{eV~48zgu*&?k#QGD9Fr?ZI<1weM(Is0D6~;%&2y`_F_LCd0dM zMbUbWgCi?MvF)Iu^5M>6PT31UJw`layZ8&&OcHxLJhM2kK@!|{zL)m^qGdPVo&ch@ z%`Fn1yQs~{A=sA$Sod6t!8~5wO}ggIqAN@K@ZCv6LBGdr#$o3MK5a>fZOts~FwDVk zS88ep4D9C`rV3UG1&d$0^`}0!&}CL$ejm%7`p`fN)!Qe?_@oqkJx{=%x2b!~UJY_X z&acg_BnYI9M~DFOR6NcWQjOT702x~>b{k}3EBMWjS92xCG$)s81S9bANdX4Zzv{lA zctcHzcx=^#+Pe}l-{-|aRc{s+2Cg)@U>Jh25kf<>=z8Jb35wIA2FDNob_gQsG8W6} ziB0=gChFV`QHfqRvye-44zGwV!92mhSEE^OVyIAnt3*O655-9}Kt;25nE+VB;{xx3 zCzB1*;ztZl7te8(OF(xaTJb;3l)!t`z@t`={$p|(gnq=J`uOpnyj9uqcP}p!w~Pqd z;h-lf{)-kWnjKg!2-cSs9QKQ6d05~k3#2A^3@z&sIPL=N!sN|Hj4ocLq(y-SfgXLN zznUZR)u^U%o;eKY`qLbWNGy~5!aBwMA|3Q0mR1bo2f3uG9qySRmg!lr2sV%VC%f3f z`;6GE04Z#CaD{sqi*t&N1*LNIf*yUIQO^w(Dq1|trKoLz)Zy=(CpCj2Y99J)J$WP& z8^d@uz8|#aH?(-0o3xK6s6Wkodr`&7u{s;2bEWa<HU}`;PzV$O)IbL;ydW5<7ETnU zqD|v_3*bQIp0L|XAbVCI-a856gBpG;;&kr8#N-wb`YOH~P?6hO!3Oc(KPe2gjO)ED z=|=29*!_1H`z&sBtAAzBpBbUMJQ$p@xoMuCvGxX5JqwKk`v4c|KvPf&V>!X51+o3p zcVI;{T!nJ%jxx6&{;e4mwaq|5pUP4un$G5XyoYE~-KoB>V$ktLsYqo9723JQY`nm$ zeom6MsnbYc2j1!;Ok`yaX9EX1F=xl_(S?6v6?YJOe|8cPl7WKi9^8zj)AmT3+tUxs zz1fk)HHD3hpWEIA9`+Cmk#B2imv`XMwb&l3PtYvKQFU$ne4xv5BgN75EP^6pYeMD- z;D%Lz!(wQsAfnnxzD%9lS_^(-$OTqmlU4y?UvlA;RgV=poh}a*cHyXf7<x!bHY^o) z880*knc`7LxB-4I@IoHQi`I;&*zPe{@N92PtjIm~OsV#;!HE`g-Zc2NThkFX9qsLy z6AuI`o{QS=oo7&RC~D{c63$oagDIK05?S`h&-m}6;8Pl+yo7D_ra+)LUzO`9Q)_K; z*hgk%NzE;=USu!JbwHf@uP1MF54;*%!Ai*iA-vj5jY?N)=fk&SGZ1jr-Y|fK`T5M& zT8^Le{OlZnb`G$(=VSsQN5aU@*9|+NY?M6di)n$hSC`x*eg!%`_JCZ8cw_z^lj*A; z0IhZt+oF#yle)FK;%0XjU$kZy2h{1sOCuNR1yg0%O?9hZ{y;-JchE{>?aCffZV(%| zBZ^}$!w)OiPAHD=i#hEQPTPDz^+LoXk6~@x^9as*t;7`BJBIM^lUX<{bPVVdH<=<J z;a!R7>qLr`2DvfX|Mb!;r&zKS`_b%gDY*_+Aq~T<t2s0FN9pI&Yy~64+E#|lM^m<# zUI&{s;!6tb_b2#r*G>x2-JVsna<`SVcmYsi_B^Z7m+kkS_iT9ksQjZ|I1q<Z8gt`| zsPTBN%XJgiMjKp#e)>;7#c89Nn(sB!<KK5$VuI}!G#bjg8qQ_7t$xTYF|uz^({^YZ z3lOC4JelO;QvPCM$Y(w?KV!uY{b`{VQ-Zdqgl9Fza|E(n0;dJXb;}j9K1Q}{)LSC0 z;d1?mYd)w6DsBX2smC$l<If(Alm-unvR8AZC!vKI?NO4=5C%cppiX!C<W^cmL6CAK zA|6YKwNQpE)GNlE;~6d0j~ga_FDU=4U)^AwT`pCx0}_XQ=$k)n2TlW7(%Y96a|?kQ zl|_K2^F^Y^#*KQZ6?o;N2HRv6t=SgBvt8+)gyxZV@0YF=w9R*bmpiS5wL@6gT#N(o zPfJ`Jc%Ggv;K-x#E-tI_?EY?5eygDKwo>`Q#v;u>v~s75jgy3biYGGYeYz*k*R86M zX<hmVY12|w3<GEEiBY{=s6<~>-E<Y*e^P0D$t6NJLK;|fo&-Tl)B^#MGCu6uBrTtX zi8f_pp&X0Vqqls{V>&k!c8p(lky!-ufh4z9iu=pp+87_+x1(V~%iW&ZURRSVS3R&I zWsFXW!DiV$BWQ=9SOkTmr^Ue+*~P|V62N(uRRgQTN5NvDhxA6XUj`zyA`XjiQLwn~ z6|=b*85M)1zPAIemdA)f?--(v8~n0Wi@M6=3+JuMk%in7q=9-uh&e6WDcS`Vc2Ogc zBNI{7go6OG>50tjhb6<A+M4qQyM*U`o>lw!uH$*|(xfj#$2Q5G#gk^lDQHhOAKlHs z%-VhkXM<qhT+eMS3ec>OXB>049V0^cmYwx?h3hm5YqmFE0HXU*dmqKWzD1AL?efi{ zB=u2Kop3~D9+U_t{Gz-LxPMm#&yL*BXm)?Ut<dmOv>5v1d8R2wCvrgL-QsmsRJr^# z9OZ(=FMMHB)WR1S+X2eS)NjAlq84TGAAt!O8x*dD7{yRux#~8b)c{!*tM2+)d?g2U ze0vmhjd+KeFpj1|o%nyiyqlDkB`$BV+kjSGoD$2$8puT?X5eJ!C$?=nOae#Q34V|2 zQh|OEn{1GLB*Kh^TO0`mIkR<D4@)alc}Ga{NnK}V)}ANXCEMBDW%(2}ILyY1<V$Gq z@<n}6?rN3b#}A!l_PeC@o9~iR=-c7sCWOwY_z5`1p|#@flE4}~-Y+f~oIWW`E`wAW zpbJsRQh+vt-$s8Lx(n*(Jv!Yn5M}kzb-n~>xHuc(b!*`z@oet7=w^y9E(U4qN8e%Y zASIbVp|heEbs*+mFg@6Q1lw$O)_9-EXF^lbqI!XELQ&-T`@x@K88wWIOzVfr2R;;3 zL<K{m2LG$d_V$I~?ZKFX>%!Ujb|@YpFNVC()^N<P3#jXlUEw=K1!c1Sr>!Z;E`fV* zM=)(^^EzLj$q-_MZf#WevhVN1Dk&xoQ@lmmUG%s&XlaXce?L?yWbm3snL<v$I6nEX zu+Q^fH`~vTj@Wk5Nj5Aa+5zi}m|#Vs^sr&Bw6M3mQE`xo^VCQKgY_CliK~CY`*NyI z_M(q>K_=jQo`p)8jCb}?09Wa22BJ%UgGY<;?D2!7e0j^$6&$~JB*Cm4rK+Xe!KiJE zo0}1n%s=asqO(}p*uOb6S+AJT^8N|m>}ljVq#NXL)xn0pu@8(-&en0@+|*!(mXzl$ zMZ%iAu$A+w&?~zE_VD!9Rue~LE@&T)IXTto43)0`$#~H4aieu{OiSlkbChyF8Xkl+ zemC@b9(P?mI*gZ+^*#HBmYJ{BDJK8C##&8=7)y4bNy6Gt5M&~VSL?yR=uGll2CIS6 z%96KSW08)7uqRbYrI%Zt)RgX;))?57J7(A}z9qAEDe3XsV_+;mcU$(nf`6Y*V%<X! z-2p2(gpWy2t%MrJZ)-}4JOkkEd5$jtkOBA9k)y*3GH#n3PD6|E+bx}m&Uf%N5MJ%m z6qUaOoe&{CmqqwU!^xMH-<@t?pt5+bcg*G&0l#mQ;I=yM(hY{xwPnuk;h%4<5Ne=j zkqT@G8L}2TI&Kja$LY`S(p1>MNC7)us6>TXq;eMocN7Zc)}02<g3e#qa7u2$zvDL= z<Ch^F8^5&R<N~&!UI#Kfq!~2V#By_L`-4E3a12huMtv<mf6DZUSl+owJ`34kWd}-n zuj-kr4lAkuE)os4H<{3tNR>+E^d-WiqlNCOrq6_-9YvuvD(cq9ZG{0gw`w$3T#zV^ zefoa@Ye1C0JXy|e2UB=FjV$5;9>apV#y1#c^8NH1_pdCLB9#FSB4Fs|JwN;&9ksg2 zV%)F$$!(=_Qb?{q<E8P6fQH9wApt4`3>5*!KWN^02zPh--TkxiUD2oGq}}XyPQN=n zBi{IVT}#08&6(u=4QXKe4f@#e4hip^6;3+nU1Rf(8=KKF55vzNM#^l2E#(J1kBy=w zxZkMq`M%=2P9ImzJ#-4qrY$>kUFh2I7k~aAjr<2b_}}PG^Xu%|&~4jv6Pf<X8598z z6}tBpfqTPN66F%v@M}om`$PhKmmEyO*e!FcoEb1RIc--(@*OkP;*GoIBsumH86}dE z$`0c!2VsRccFx5#Q%1G*TPmQb$$KuRsinEAK}YGaPBz+j^~@YZ^v@L9>KbzCD&>)G z8@+mE!COnUNpCK1!mbUt3RKMsovjqdjvvz&q_OZ5KlMRdQMq1=s-D!{<-L8qrD5AF zEh-0;_&HrG$|5MP*0b^`KyEW*MQ1~?XQkG7Z%E*^lK_qP9<72#@iN!Sd~NTV-tfZn zPZ?8Ov1w~DmRi}Xj^jotM)er+^M-*B1J^snD5EA_4LO?AK}m9Zy;Dy*RNL_1rrV~+ zbIJ78D(FB^(yMNpYYo$RHL&KUbTL-_(`0lcsg_x-i&oEmJgD)ezk18g<R+|zS>5NJ z*BKU~v|4#Ye$zf_4K2zeF8#s--};)EM=A?*x>7Yi9cHwE5#3fzcGhlE#NvdcJSE2p z`KnE!iwM2zbsIN^uYdh(;m$kX9(L^575cTGd8h1`4jv3Uw(IU%&H1DaiD9mXR{qU5 z+-U9>UwAqVV)yU*oa};t#!Ev2%aj01@>ajEv`pq+$I(zseyGXM{^oCqQ}#8V4jfKG zO>@KbH-&X-#Q#5k`hSJ}+Ofcu!%L}wsH?ad6dJ7J=D-uKCyokzg*BOQFEl!BOFib+ zjU8dOFc1oISF2bT#$Cdj*ycFZHM2cousED72(5QoqLif~LeF$}m}t^%lbSErN$qt{ z6P!=yW<u9gd&n2_VL(@JtNB%TI!Jg{qZ%#KO`$!nQz`R<p}2~9B<&j3gzj*;pnK|9 zr644E#J%<^3!_Cfh2|!eLp9Vy0+~Ih#^6Qi&n61g63Sl&v^Ir~@KtD=n{)@chTHz( z!+%{u!}f=b8#dTNsgkE0+<AWd*daUZ=+;~B&;pN1y&nzt+;hJUFWF#wpa-?;`9Ep+ ze&?=h;t*dNfw>u$qlm>tcFXO_Q(-VfXcY&|GsAfWv6?)%*dTrXZ%vU>K+X$ZR0J#I zWo0YH)4Y(s%at!_@hKJD%QFnSDX*0`%i)D@fRaL*)->hAm_Fc1iC5XRZ1YCXYb)<d zO?^_C&<LlY&DF!;nVOoggN8P5-eMT-tK>UcO64Q)`A^Tk!_^towekQljR?^5%jqt1 zx@r0~W8sOr7R%w&Hfc8z%z{<8XCfUJOZ1K9GED;<X;X=(5}eV|U@>XHO}Q4$_`Q~( zB1&Eb<~Z?8ykdCj-TfEXqCwAJqto_4)9HW{*tDs|&v{A5rDuxpNDIbBoKty}=85n$ zoix5`Zo{D;Lu+{?I>Kb%MG|o_ywG+7J~!ETQLQ9-q%?URQU9dldHj;CK*}cZtHPBc zRCm;@&=EdE<P4W_Mlc4!aJ(meS>u%nt1r1OmA3q(woI+*SZmuZ7_Mh14`T~F^f6p% zVqx+E6|?n9sKtCJpRUlIuf^h23TNI=$yv6Eyu=J#5h8JbT%v52$&Tb=IEW5oJj*mI z=0zV`ObdKyRxRNLj(89`9|yMk@c~dDn5`eihj?D<7gXD9*rriK!itLEII!`vII^Yp zOE~mu#__+=^LnXe9r-hqzD4_-KlI_hwOtT{+8Ocf?>u5FsRxDz!iWCh@5AP;J43$? zDKQ};tQw7S*rwmOOoZ)J^w6n0jL#+DS&STXSPoXyaPExmhq_dt_ZPQdE*5vG;mC{z zXwz&l3>1e{o|vbNqFE}gYVatc36<`qX*E`7C&SR(SkiN*B-hUvot(a+DQzv4{4Rz; z4ODA8oMm?X=pdsRedq1d+Bzp~en~y_=DF3OV+vi%yC?&fl}AhcE^19RvYS*MHBT4A z@a$+9wNaGn<<82Ae%fXVs;8<C&)34om72IpEDA5eU>~F#TJr2~gt7P&Lnd`o3>SGk z^zc{1S0DOH=;_vl9BL4pIeXR`20glotz8P8g?5}uR?a}n7vC(W*XB4q183D*#~l@i zht_7N<B^W#;D8c%^lxS*X^I%6jOgW8G1<@E@+pBgxg?E~mGF{I5A+t$$naJ!Ec$6a zO^v03UR0uDuS#*1Wnog!h@MNVxx~Y@xSU3eG$`VBDex}2|K*$J!qXS#!k791%!SdZ zR2+x_uhxM^6hp6`Ry~Y#5kw4>Jfzr8Z;Lop?lJM#oc05GOx8d8)<3TquC7GOY1YH` zvOcOqp;~pyAKMMNWsfrpx^%24Wrh9BOEvz@aE&hCHN)+8)`1tGr6Q~Vk3!E&Sx}zx zdYW_~iw#f9Pyh2~Il?5q$1}GSy2=N1in(|WgB2Ht%i2&+`|<AhaJxyt;H1|~J)0Me zf}SR&2)k675Dz>6W70SsR}7h_pM4jcHHH)y+%#yLWFtMR;~l@-SvtI@=~tsGEt^v} zHl0UChdgpT)##*Qa91+o!4$f_ai(3!BV*EWr|n8O+`n9U2ony9u&rsprfi$slp@Kn zlt)g>@g?tK%k&B8S8A4|(903CkKY3_91+&u-fk5Dw*%2r-@Iv)(id-dqO#<Ju4KFd zz;<^f*lPYUE;y<|RS$FeQI{-iNmWCe4fC{krCFWom7!@7<Axs$bQU~%Dfe!`$<K^R zdb0`>g3)m^rsvY(X*ak^CiUV@MlGC|5?tbdPYN1}b3{NCeqeb}p6J^l4T;$<TE0Ho zi$uauJQR74l=a@$5PGC}yYzJEy-i`QdYbeUlm;3D47I;!Z$7MVp9?#?^PxlC^GP)V z)Zqvd>UfOm8P+qXRzkn%XzD5)<D^Y%EI?2OnFwdI=yr&oR^bIV-aM2e(tzw>b5L;w zUSe5JGb_z&$K$rh*4=nHY)%^HR7y-KVNm8YA{ct7M{SKq&zEIz0xe9m<X!=;YUEip z4J}6>U6G#qMMkP&sS<Vt5<Hv=bdsEMxU3Co_shC@cawraX7QEZByFiQT9g$00{jG~ z!>Yc|<0lpKbfcT73vgxe8bAsr8(w;kbmqZ5O)2yx*c3jG;C33u{mR&$j)clQ5s&Y7 znYatQ%E2XmMk65<y+n<7Hz}uirQ$7+slzYBUbaG~vRc4w1>(S<w7n(naolgQ9%co! zSKXT`4u#Y$iN%x3BMY8KC0h=61A*J$&8;7l0`6FC%8?j{<CPwxcHEfZ!$OIeGLhSd zo>8KJ_=9pJ4hnKy$cJUqp)CQV-SW2X%7lHkN}K|{A|ea}e60qJMuI#JXfeFQI7)L+ zFTF_smg4m2*@&{%vqq=VcFFEg53WseZc&&kYe8EtVOlhp8%H^hNFkrq4U)r3@MS%h z^nOJC|KT}l*cJ`B3twN84&IR6ErE6lXFGISq>Q`OLl+NTj*;7>qK)eT?~tBB;ku|+ z#(B9<>xtcV*`$dthudY9w%t7{6XJ<vzR?T{oNGBxoj6irz1Z4mjqi!kLGxpXeLz!d z^wg1;Pha6)vN4$xYrc^#7q4|U%uRxp-{`74i3Fijn78Xq$-aNSPm}p7(kaO+W(mW{ zF>C6ZL12r0@%gl@2AxtqB%?E)nv#DV9b}EA#_Zb5U6Q4B;e=|bW`i>3W9DJlomM-o z_r**(rR|D+vAC~?aP(B0GU*6i$m4o?RimesUo44{Rd-jifs&#!Bg7~b@BQIz@3K#8 z7NQ{K)2#3@7(j{exLZ!sAW}f~#i32~XgyfiAVj^&*$&zCVq;G>X9}`e@4&Px{Ni{n z{LD4^&@2W%d{By2OB(2$K@rQ_vH$=;07*naR02a1Xe7`mz-{DHZo=^6hdJ-LWZ?<% z39~@>R}tBw6Jl>&UkDGMoDH3%OMEcojY0u8LweJa>7>?Dj7hs*Rs+D4s(R9wq^!?K zp|S|Hq*Ud!^b?tM%kGrDS$MTfBTPsxDA|{kXIvX?iGU|hoM6d^EycO8Q3}7;mA-iE zmV1LTyh(D2{Ker;8WZ5<xuE>n*%{OM$A{*^E{z^cm@tI*^==YAQOHvoC1X15&bQua z3tqW#@8ZSt)=S^0T`k<&_4xN5*SY`ebv@?=>!o*S)Q#_#zgjCuhh<cb<A7%i>iKgZ zij0TVQ*7WQubI=H(#qp`ej^n`K+(aZ-O(rhCSoeVIjqCP_>>Kuuc2pJ+my=9p*x*y zeBKEwN8kON2NtI>KTBOYqx4LPmbyxM9AX}q<Hg1}u1anX$M$(((xEIin()XRy7LMi zOg3HF_Xsr)m!?CxQAr3*N=r<SrZEMOrsMcL9{4J`omLvgVa-m;0$cvlx+k3`cW3Dm zALHR^cN!MikuQvDdAW-@<QNQ%{WvbO#T)bc$mB}M`8c(>YFFr{%(bXM2l{ukw}rR8 z?XK{TpZtg|ph*j;7NTz?7z9i&^5EqVe&awcy#IlG_|GqBdyo7~p$UNA9dLXA__@FG zDWC*Ui2h6o2!GyDp7f^8oy6mv;o<xGa^d9YoZ+Hp*(&8ikClg^UQ^8SE2<EvLmL|f zDjn9^6Mh)d|2%Htgimnu3`t=QNLfC9mbu2ca7^9#QSE~y4u*opNB}lCMatZSnLh!z z^;j6;dI%GXcDoP$JTy|)OF`~XuXy@|dc5?i#ms<|biWdORyMusk`VPl7@|b!GS5we zYL^r(G>|iVI<M|FTR+UX3xf@nw<#{uW{PG8+aCQOcVJ(UavoyXg^VL256f=V@@bZA zcBq%%C)zzy_6+wkl0c*A9ov|r4dIW!qeEAAYRX{owyhAq4vcu_n`Jue*wI(QeLwdr z;of^6kV4n>#uD(cV@K?!yj{EYm~!8?ZF{)!##>C83}|2a@BQw-4L96)t9GU=Ey2hg zg~YYIY+JK(rMY-XdKHX1ADWzO(Gk_N$}1G&YS1AKtj+0~>ry%61h&<nLYYMYYCG9X zXJ{$5+J1DEzPhK0Jetwmc1Ka?zpKTam!jb>-EgQ!W?5O#x79pT)W~P6)*+~_SjBB? ztUB)sYJuy6U8O9t@{A(yn(b0&pjp#(Ix9f=wpfYaWWULwG1bpHlSO|kF*Pgnygob* z`@d%I-f;a5H`#TY@B4`lglC?8%Fc6VaoqQ#LA)s0pi2C_D*l80>M^P-#@sB%6c~k3 z59=S0f-5+}F#aB2QNZ)rh98we0&4K+m0!BP7`}RJCcHWj8xJU9{7oUNhe)q?KuURB zijiUBF+I!=kH}_D_ktc^7nCL=CO`3M1Z97INJzy%yTV4t<<`F$?5sQM2cY{E<gk{E z#h(8m9C~zLVU8hp_`pvObUS1-JdTn?HuUs~20D9i>!CqH0MU6W8D|6VQW_HA1cfbl z!wWo}`svY^ptDXaukZ(sN(MR8;CMx{j-CoJ#36k2w7627?OSs;dQgogaK3Jg_(yTG z>!h=%FC0F6NLSlFW=b9&$8<hFJ5SD^KWE!Zxf*wDY&`VnP$*2UsZDjkh!h#QvJ|7< ztm0UYwrR$C|6C|iZ)E{T;4HAReKH@03!`!`Ua>AEB@XKfor73Lier{G538q5jWMl1 zR#3CQd2~)|lJo&3MX_$AjE?r9=T+wOY6%U85f$<J=MmoutK3_)51o2oI6t~-I}!NE zl_XW+#W13>uxbjOJkp2*Wr2O@<H{%c-HYat_{*zzx2!3wOwQM=&}q?gZ7K)F^y@C{ zp6;G-PPhCpgywT<8Qi5;807&6E%bUYUP68q91Pv=)R5{&&&`F89#Zx&-;7D;R3$eh zmoRKIdO_;=QL^w)Jv0J%eOP16uc#+`xzuw_;t;40z#jD+!Na;jMiJ<ZGECedm@a`3 zrUs)%0yLa0#iY|aHD4;dD&;ywkCa|0-4_9lTDKJBGFZZ=V+VADlNQd2U*@uzvuB4Q zBLcYDr)~TSzCf!*m8M0HR&?u^4ma^T)w{hkHeY>{d~0)H^C%wgB{cyaJ&L;EBNQks zn@Ozrg10=hcv`*3=w+<vCv8&++ar*Y+W>gS!D?a+x$}sjZpGe+uiW5Ao=EMyMs2jK zE6i=s3rr_C<a&LZgikL2SgYM8&%N+mc=X#3SLC^=wJS`GE1`*D_saOhn3B8n1apim zN}LtcOxsZ>@YLH-%BX9K8rJ6ox1!3q9cQ`>o~!YO1fVmm-q_^ql*)z*f|a3av6dP} zdD94xhI6MyV{&H7lm#oc>npi9g`!kw*JraS^f3*(YdNIoKxyguT`8r~<u($a5pdye zvh=WWzut75eoo&k!{HM-l{qS#Rmda02c~zJN}5!QXhPcyS>;|ej|fyf+@jG5l>bW2 z(iFO`+q-b_f}Ie@mX=4p^)=g*T1`Q-vK^ios%M*8M{)-?arhAYO2CySWHsYcc~48$ zeJXqxb-CEqu2_{(CddM}JwM#fc;Y2x?31AvY84r(BR<5XUPGZ_9v{}6wtB5Qq@3_q zInmss_&_OZ57)3p3*zve=4%9h$zt&XMmLdov*yOv_2hJ%XD)2klI=D<o$3~Y<H5HS zO<{ljF`aPKq29jcoS`wJZtjG}qt#y1mL(n1qJ{weV`>aACp{*(;bG?%ny6jgoj$a2 zyDg^+2xnP?q%n>ozF7kZ^gI$aJEoX_w}yq#)2MJa_R%A1-1IR`!3c(wJ91-~MQ+tk zDU+d73Q6;gbUh8&Qt)am4Nm65J8sl8h#Ea#dm)5P%%{6J4C?j&!#7BSoH=x^-;Ak? zbHZ@%4Rv60xefM?Ki@3dw3ce1N4dAlL*(Y2XSECsPVoEIsHo8EOU<~KEI7xVM&KNB zse6)C=7p3VIWA;xf3l+jtXG;OFEz^Z8lQ%e$u3f=Go9p%A{~?gQkA5szUh%%l24hm zB+`owyH&^|(xDB0CO4y%q_0vfL$1LF>yPU79n_@IS(rs#IIRzxc{j}Wp7@>}+semY z-o(}IXU?5di)c2y>E<`-5SoGT@=MPx0N=KKkF{v3CrH^$MWBQ)$9NB5xrGHKaaIcU zwq3dKz8}hkN1j!WQ<Bs97}jf}!DmX>Z1oIeqkO60v6*9=Rrk~U^`m^YxKkPvM|>zs za9QC?a(}Hx1T@+%<$?0m(6q*dQN*o0QX(xaI@VGTQytCf`8M%r8lb4Bz#|%Y^_ux$ zC^cB1c0Q5h1+6;Yy}M}fcAlRO>wCnHdNRb#(S%kHprDVNc=V{4#hX*bWnn^OpS`-R zq)XH!3l@YZGGX$ZQJR(NFro&)rrr?Vd`&KV@*CQ!sEU?w;HH7oLO5%j$V){<@*sYc z8~jeIaRCfHW8P_OSfj&WBAmaEs}XYNeOgp_K~o4C-DsD*$g5_J=NBcTW{vRKr~@N? zN+|Eh$wnY#Gtxj0pKE`y5nO?h45c5N1{tsyHC6HMx2W%;Ugnqn+kw!%As_lxM$#rW z+7wrYUu6DzH1J7<YTpNpMwX*3H{l!rLj&B?w485|yffo=^151<lZoHGztxu-SRKE+ zDfM+VLd@V-Oaav9U3H~n$UHSFuL<4y(}-!APYDztrl-!LbKa3yeE3}j1KLs^MOyq) zUsN;BS2dWWge|Jjw+h=4^=j6s5^GlF#s`gAqxrPT%3KOhissarGvTeb-w}TLr+?n= z<bCCpm%_dGywi?;9npL|Cq@0`U;K%Ve%)7gfeo~*;*d<Rms5!tv-+|4HjkFz^ngWd zlG`cedgAzOc<cL`!w28n6}rDX8Cs+q$gIedfJ`n_j1i&fE5gZ8)27IcgFzyFdy_(n z1`R3~IP{?0-hXdX_~z5I;p9b~eJxrMUsQM~JCqv=b6TtJrlbJrMGvdzJ|TNT%dqKP zkE=J$yg1LWhPp2+e1wrxEw-bu@%)8#d*!@h%s5F1N=*~pTKpW^r2N`j<VG=~B-PSG zxzU(t)+)VXUPGK}OrStbG0NSnRpgU8-Ks}>!pC(I)LcOeMYO7~NH0J&M$A_=5+ni^ z=XoBZP_@KJy+VBy$~WGT9lZyHMNbH^0t2VB^ehB3q3-wx?{5x|zAzJBIjIJy__fB8 z;?k&^Qv-xX2g(WgvFF-s$&p2E(;Bsymfw`#XA-$a`7%<W5hXPeknxaY`K>2(9IDc~ zcAd_=9;GaZk&G#&M|tY*3`k9{QBGwDREh21>J=bly$sb2GULAN^tLq%EUMKw&9)BZ zd*_-kHmvytj28QB-Llob{iUaeyo72j=f(l=E0j%Stjw<!ap6xIf)(XaCTgu-mgk8) zl@N;-E%&SyQ+2qQ^Cr1S!(<rquzJj;hI$z@;fVk=<KI#-RfD&BF$IuNv$Bx#uA7s_ z2_nOo6ccy!snf4;8d@s=M#Vf5S7jo^vxqMH%AkvdR8{DkwD0t!4upAEUm={*MDkfF zh8AfoXjfC_k*F%miP6y2)vdX*N%d5<MpI9>=HB_RI1`#MOkR_~xiUR{uf*)5QN^=d z<9K`saVdD9J)}y0t5!6B<ZCnGzkGW*oYAJ_Hr011@1lOJH!L^rz{4tj<}Xj)&7W`) zN7?ai3aS)NZ<<O!W-iM4g+o)}$Z07S^++$V3LRxE#hery*~o;hecC`FnkEgVbf|}_ zWA$zByHCn(y@uc8kY}XRBBcw>F|BZie=qc4h=nZLxOrxz%&egxy^5mbnUWt{PbOGY zXDint{fI1$H0=f^`%ZfBBTd*@lk%gXp$3L6p;swxRT|sWu%Myy*t1jN)Y<89=#-d5 zTx`fU<970Dfmt3r41f3$4&i6bXRG8#V}+hOJ^N!vG$*G<z`C`0<&ii}u?H5)oejf+ zX$9riaV=GWE~dbk%Vu%go?W}c&wcP0ZBDzbwJluK8W|ef+qUgcp3jEweebcbefv&Z z{5m{57@m6iDSgNB<j3;)1jktu8#M5QEUdw%xs&;CG9$cf^d-Doj_O<Dyz{*FY&N&G z>Q=9M4^JlyDUTU}%nz#pnyk`}DXCw2pu|u(L+&;-&1eyBE1%giy#zs(0Y%ZyB0Fm^ zM>^12R4J9gRozSS(Z3D3ONLB~tPUM<K~_M{zDK_4`pV4HX|hxKW;7G|)tpDhn`2p- zT~VQL(LCV~>1eJGKRF)$_NTUlzk8xT{7;|m4>#}c(mA!tbk$%*)oxSjve;FM5?0zU z&$fN%p76!5d@+3fbDs)(_g!a4yq-FHCd^5}_v$QnPNJ&m=vSd;@9I)3H0Q@FHXkxv zE}mKSd}lOoyrsj3nWK`^S_?B26ME99BXy8X0lFe2%-sz2GUQB8kg+s+<iv~NQNe!q zakU~;3VYYZcMh~!t9fCDt7Ah!AA=N&uLu{g#Rre!66%OE;)WE%+mvPfTN%eSY9Fp# zbo&!u!^KZxN;#W2urwNPTj!+XEE+r^XNrM6c*_xsg@&;e-YO+Hs<~$(ShEnP(vLBo zh%0v-s*iroZ<GyC(D6srOyahrN$@~?<Ll#Lt<DPAqV^(`^4gb<KBd9p{6UB?!&kCF zp5TrErl_3;=>tDM>>yzFi3Nx>Xuu0x+8BJI$SHfvEq9I+9Ca}<*=ks78|s;}VZ&SQ z3_Ex3)@aYPDe}{2PDz<>w;L5-c;VT=_O(0ixYLyHuvP&+{Lq&yyp}U4viwrc*tS;G zwlx|H93h(#TQ<tF-pMJHcuT%rYbc~}RnC&4wk&*QBZ+bHoo~6lRkyln#ENe@5pUTj z%lA}cRev3m9oh||Wn^<KAw$vD*T6gb!#fIWThp6_wi<Ncnl%k9v~JV3wP}sKt>(5h zD&>w`N0?#ytlmOPvcP1gGTkxPp}JYy@w8CV>zD+jtVIWFLaXmrecM_qIz^^SLT|P1 zTOmAi@Wm_Sv3<v0DW^oM#VA&J(IeloX|oN#4{}waDv&KY`jv#Uhm|>b?pb$*n?x;H zUI8K$cb5W};PAL^FCl6Plrq3@GV|Dz>dn$YG(%z*F<B56>qI3XEn|UM2$Ww@L)8qc zC&-g>h$3N;7e>0+=IG;F>R0H}7@dUM^N`4uN=X&bf*A7<i@8jRi8t6x>l^!K>}MVW z0}Rn*0utZIOT>e_l9>;Kc|qxsC@d}TvuC$fP@C+c0@eVB&AB_i67`b9L*{MP3B=ph zBHsCs=;CvTd00LiDCEi$8#*xh`Z6fw-gTP-3jAwd`?C0)4VTnAKdap<*X-LLo_+S| z@XD(%YrRHGc>0+qL$6wt9456^ae%Az-BwB^vY<}jQl=&?uw_qs>2j7zk(TLC&U08t zYxhhzU+iDCEm4$3IvY$EU8Yjjq8aL|dK+*~>C%*(rqRZ9zx%N64=-A&uOB5o2PU>S zz-C%&L%2Sb%URg&l{97RM@*R5@6P2c(^?UJKHqPbv#bUk%MR6<d3~^#iUX^s&{Y^F z)w|PG=wY~NtaQcgVnWlvPH52@A&#$Jsj1jQPa~dIcXL)Z?`V)Q{OYg#%h0)|S9@1q z4F?Wf7oL0Wnedr^`nYaj+p80_;+)%pxF~Kt%&AiWcrOFxj#+A@kj8yA-H4i&_>`8r zTSe}~t0)Br$=XD5WsnW?_Yt(vA_ku7PzEA1i_ltXuocZEmQT{+Pc?eTuAFiI3C(j; zuKYa<TVku^$U@A&*G0bb=w4SYlq-u|j~qQ5o_gXt##>8Ak9I?Jg)e;mAN5`c8#Fb> zXj^}Oe|X`gm%{AixDJzID4tP?8U&b0u{Cm3!^V7$4W0~0{a)3(%(2i>3q9CVU7^^l zh@OdnAG-gtZSkmit_W==GQECe&AJg>{#W0j@R*z6PUxg)Wf-c<D~$(}S)|CDO#H12 zfdxpE`$>At8!{9Kw;eW3-orgC{f^sBf&+^*EyyFvg2N_o9xY89sn^5Qq|j}NJ6*-L zJ>j-H-lj!X6FNC6u3GQwTPKD7U#->6;+m}Sk3Orov+vn>jrXf4fows$ilkSIR3&A; zTJ+wCc=<MIV0W~4*trr^JRJIh-}W7QtO7*oW4OG9EvJ~}47C%_>jK=dCXKFD`Bj-# zr&%?u9O`N2q|l>B9jSpIB>`%U+VN+*O6o`=qDpX6>GQ8erOeQp;;l0+p;sEzfZ&b? zbzste^&~}#YzhP!vW|y5qN{3|R!2&fN5ZFuon88rMonTdZpXLz->iT7J?$>VSm?R% zO+fIHHre-d*fQN!6?!t_9%k8ut>LRMb|?&LKY5!LvmH5d$QI4K^wJR{J)_l8WKzSt z0VS{s1?vqcg&#<k`DRh#9P)zlZq;@MdbKER&XBO)hLo0_1gTaM%AUr!E%IAJxmhrj znp6{M1z*>?!>b{bt@<H37HYD{;))t|<ykHgIwL~3^^e;~m?!jP%riPmze!MuALG}V zPN1ws>If4*z2ZZ9qz>&tu9=u6GD~$twj?u@s@icm+quG}rmHaI4l$K4TYM*lUeKA= z+`qn{oGdi~mEaMOm4l=SR4;+0=?N!g*m~&lkJ*k70i_I2$5<72RfX;pIn=}oZCGz} zUK3jR-qW+jj)iPj>mI|ze#0~*(2&3zOal6B+1AAr7<1c)UU^Xo(Dkz$H|v~&!BUUY zZ(bvHoD@d`Agz#VO*JQ}Ex4S8YNMpQYQ?fRoE;(~#W$x#P&w^>K(Uuqu8X6p4550O zikluf3Ztkyee*0NS%s?54t!yOB_jc<YiVr7<813o3<ZSDICHtssWk{q+96=8_v^2e z=#Ur2v|v{E)pzT#jhq%+o9xPwBANJmavjF~$)!qR@~4dFwIH{(sO>OT-iT0Vqr%W+ z9bXn8>%=%IPRe1qMvAkIu15~UGuf|@rRoaZyXe|StVX<y_7!V^3=61iX}$^;w=-Et zxt1s~<nLQ{SmDY|G-<P(N+BJ;;jV)OymZw8RRhHvPXhG5j~_i8{=0wkTVc(bwYENn z#c#d6eY%|GLO7^}uy1|qUD~!bq=jq);U7NwVcY5!7s7fix_G*&B2eZnIvJ@+6)Qvi zG$i8mTkUujqh!TdHDz8sKUSY}wV)}B#Ud^_T(z+hHK#KRTJ$&3(;Rn;)GsL|j_fK} zo%7H<skKNmI*%-`#)InNw2mtQFVo?;Sm4(((;RZT7BQ!7EVljt%_DmAT9x+|7>&2j zs^QSAq4r_jTYRELXI<(HbZZ$I9mnl-{XK2h8YVbt&0S$lI5~7$$)E+cLjKcil-$BQ zt8Jjg>vV}zhZbTox&f_4jKn&pg@JSQoEM~hk$7c-t1I**0t?uq9v%sw_{iUdHm!C& z_|l7-N53h&@Z$5KZ~bOF<2|dKd7qe=uodmBW~Eix+0kiA-skEF&&DgmXTz%@frbQD zNdgR`clNBco7Gx%_5^1{upXwlxy5YW8IjwtVUxC=>H?CfG260=GFwW;NDqXS%>`}g zL6OHgVHJj1Rac{kCSRQnn?KMOx(;Z&l9WchM-l1hu@hoaqZP&D#jyLPZ8m-3Qc2sM zb*K^iF|JblJ^IF9hjSQw+3tGkxwD~1_x3imadKb%hTEMsjjN)D+Rwk*A2#%^4_zBO zb@l{D|2jl{Y-HD@Q<=`5J|AvqxjtNX(|+j+9Vsk%*1H2uhjK#ezMg#gnQ-9NYphXO zpHwWwg6x`fK*d9!`)2r)kN)Ry&9<G|siYOUr5s-fUwV^lr*(Ub_B55emg}fVp%>M< zDKJme)f--Z{E={6!dcU|F?{^LemJb@-C!$aV=H@}4U{zVaNN+uRf*#orl;aK^eRJo z^Jd!)9sMe}hEkuG$<=n%`vbb#{5R;WOajcEbDsM{4}UeBICjXs?X6q3NWotWqf+dg z7x9sQ_}j2<gARl0><Sw<Z?{$N*>8R^F8Icw)ut;=83CZTU-xZmsvKukSM{vv2uH)g z@Gmz1Qn=;7E!MH9_kuN)t!-_T!u!_1BVk+j#!|0&F<C4*T*TN$Hq$;6ZrOB8XzS2O zDGQbBtY~Q@wCI$kmj_-A?OknQ^SX`N<*>Zzm1=3E>@-XH^^WTf0fybx$eYnkEgU#h zS0g$cTsEakS=x0a?8f#Dwq1IOZPA)oifPiwljwxg17URIsBXmM5~J#d#ewY_bt#G| z%G63sMTI`ZrePgqf;l}n75XPAJTswFAM*~e$iXsediI+#Mj`vKdW@mD5ef0U_NpG( ze{Hx&$GtMF$I-8IbN7Yy>o<lW&Cd;K2=Bum`pd9m=U(f@d)(KnZH<n_a_1^B4=+|I zS4htrQcJCzvt;1~Tr0(s#k<`1mGa_pSuXv0#)Fr7<aJq|RD*!u7rX7+v){I<oj7^Y z6nR%?r-jk*X5O4{7G=Dge0G@@)YGKCDCo$&`62hR+%4G?8XSy5Cjzs!eQnq*Ma%WC zv5s14mAQ~5lbwd#+jXUEL8mS8%=f()!Y=pCIMxsR7xP8YYS*cVQs^3jpD!3dQ8~H2 zJZemfwg`8t?p%*+>A4Mk<%c3=xuN{9Qol)42babM!nvV~VUiwtorlBetWe&_{}J5~ zIHaqAnJV(KnB{9F@1&`DdNPdb;54qgghrFfL)C9r{Heceu;koIO=X2H%%3<C&u@PF z*N<qOqi*WzY6_RtTJxbYK5#06a>BuHYHY|3r2rnoVG?WC_G<e}r-t>m+No6d6P}%0 z#~%Zpa`<Ct?Z12s2z)seky9aKSUXV5w1~$kXV-%l@Wyov<tWtd7v&55%38*8|84oQ zP%Ag}&1+U;FTeFw%IjL0uK@R2<~85uqQ-TA08!LFTGpj+G@fV}aq!*no$}O#w+vzb z_NZh{@zkRR%g}KeQ^`SB=SI$iqn8iG9=g>5nFuR-)sVLe3L^q%N6v-I>cF7TS0Py@ zF4hE`8afw>XCKp$yXMl>n=W<#Aezd{lK&FZ2hOIJVmNj2Y#1+2>gr%0a$o+pRE`Dm zDX$BY#x9J7=Z>AwJpDJd;4hV)a*>wfhg?*(%}(ly+oKcV6S=SJ1v>RjkFf?Vsk-Uo zBVm1?j!M?W5KJ@0@?M#F3ny+JOhttbZeJ7ErnHlM&dKJeJ}zCEnHaHCrZ||wD}gjW z`1NUs?#!9f;fr7Vj8?>t22P7(n2icyo%XMDbnN;~+rpTJ<I5Qm%8(Ya=Ms(ODt7<K znYU+g-%9dQb%G5Wu7np`^{BMj9M}rW)p9FW<ZT}n36cTNa?@l85*+Scs$I%!MWk`J z9A5Y)NRy7)*D6!xwd|FMw=Q{YU+Zh1*Ahi}BOy^9=@}h6@=EB@6k1U|XST1MyKuq2 zzg{hrW2hWuZc0R$mXkj)Ks>%bDmrtMLo3OoGO1FPq5S9M%C>N1@MxI3FcYS9+E5(M zrBu|(SOF6;)r%)CpADlY<LdMJYxG!>>B&v?kA(bSTgXqKrRta#M53fnKNhsl{qpcY zI6pibn#Koh(O<nYiSLxX=hFj|Vd~VR);Orw%(QNu%L1PtYbRzkEmF9oGFMc+AUZ42 z0p&`M<&b_@<es}M{JIG<C*rnnv09qokML?R<p@^rtE$jF4plyaVKK|`QzygSZ@W9J zTfaWMs0DGyPn-;E*Tf4~93GntYtsUoW5<t$foCs=R;_65kn*QNK(FQ8`EyorcP96v zr{lVNUg+`TcmJi@Uinao)MHPe<69~pz<VV|B|4wJ<zQNQ98ZVw^cpi$A}@#Y<tgN2 zapPs5GHH80{X-Ct^(FOwOv-$N!rPVK-bv?-ZI+zG{$|AHQR7?r-z+cXq00NZT&?n| zg;;qstLrPiSV7HcaQEE%U^su_ob_f;oH`Y*KX5GtR>!_RErl)xITJ6F-?D9&HR6}b z81kTDU{68YderF0AfLJ#q2so}&d?E#UpOCzj%$y-7R9O65-YMg5+hACa?bZ(4kH=@ z*Q;pMkw6KRl#*737yETZ@d=#=pxsw-D_#kpE)KGSGu)@nj)y_5pU@zz_Pq;ry~{5$ zLivqIW`onAU){&Tj7CvyHGN%@GLM8z(X>d<U~3pCs0`P;AylFi7k#c7Zqfxey1j9B zDz0*0q&(1w;+SIe(;}cHN|hWnDRk0LtNqx~BjLdZe<W<us#g|d-19^CheyBjNH~1t zu<q^dQiZv2l^(r5PM6|lCO%q!_z3Kv3US59-7v4U1Xfy%>c>BvI5$ygtL&+~Ff)mv zw2Z4PUDh+omjE=i5XNfL5FTvn3@_-2(j%JBvYLqUrXJ{e+3k9$n;6}jR$N!`^{%gA z=Z#>z(ZSscZ-4u}TFJiAwym-IWcTj9;n1O1!VcZE_V%~mV+&h3fBg^s-Txl0zu^{B z$evfoFYPAn>37_~P$zIUd{Jv^@bNkHa`6Rlg>gI{Q0bkXQupSrFgQ3F&TA#LopxF8 zOcrs9oGm2dkjz1yvR6vAb66kSWG97Qm?(t73*%v`pdPJBv_AM93;L8(zMFOAdFza( zSLP;l$<2Jj*x^=cLx&NE!gyY1xVMK{of^(<b@QcWr4&-}5uO?)of@$T<9f0B0?&Gy zSQ04#U3smiXwR!Tsq^p`$s>!ULNrwz)4uiEE_12IbxjJLYL5?bt@fpIE7Q@Vhr@N( z-KZh-fpGoxH`+PSeZ9T5s3A)XCGIV85375N+z~hI*IWV=&~nE8`HXm6S$i)#T_)%d zu-OBpJ&w}04={c()S!JD;n}0nqF&w9)g!x83ozT|Zk0cycE7lJXZZHz3*o7e0i$(Z z-HbC*?k}mAIcjsO0+NDn(X&?gqH588+vHnk14+_UFdJUKpAFw<w^px@j122;hO_Fe zPuR-l=bwKjoIH74BWeZPi_Ue&-T-HsY*vS7Sk}}i98-R_GF!b(MVy#WuS|It^S*u+ zESNYPg&Wq!FAawgt#DqIUMA^QqUMyQxuGWATsWzc<0ZXDq0|UQnr5U0^P^hlK<}?0 zW#Pk5HR7lZjFAA+Bh{dfU{tHL3u+zNh+=IBYKG#P)+RMj!gPydr?SBDysIHU6P_9= znx+`dspYjgS){s#1(`ECD<H3WOW%<GSXfw<9Dz!9PWqL`^-4`m3f&I06ESW_8`np; z@0tVQ+_^J0FW$x-k}~#DuAHBhrf1dTSIwMNr(Pcd=`@gKRLUr@O4*n8cX!riz-Ufo zgqF9LOJI1QM?q^*z^I5#>7he&Ny?gvy`&Y0D5cyaza3H{y9-TWtt$L(DeVqZ*t*+V zTG!^K6n|Q9lll<Gq*yL#zvqyY^+i3;9eG~Yo2mh-6~TR4?YvX-!3Wwp!o7+E?P0<6 z&rF50igQfQam7#b(1oHGAMi^*h@L!+4AOz|w8ytM_Ad=}l<Jh^@PGf|?_ZIaj&3#7 z)gWSls~d*gN3~jbsfG%R27&DdS3a<n)#l~puD6N3KQ-3WI2qP9TkVLdf5ySK3Ijv# zMePC_9n~Iv8#Stb2>~ODylHG!oy?gqnxBZnxpfvC-|rNw=f_%1!3@og>w8>8DJ_Es z(!*7zty1XRPBt<(YNw?!!clMO(e9DRLfd39jOA7HRIBWkkrt1FLf7O@XrF2d6S)c1 zb+zRYMW$7a85W+e^h>Bop*zD<Q`6xk&6{&E3yPeN@$27s$QHKQQIK`d3a9+q+mwM; zRY;vuF2l5x%d!-w6$pyGj%@bCqMDO(vO0_(;j|*0D#gTV(Q4VLMBx#nc5}ojzXXf* zoMPN0a*14Y%)h4JOTH1GloveYRiUGhX^8^?Yor;s_gJYDeW)4*7mXk+f}o`w?1gtT z?ht>Rf~3}dXz4Viy<H0PR#VtI_E8E2h21XMHp{=DXjb`)31l!XydzrVbb4w+ig-Gl z*K<UEvGRmQl78{8^R2?9l(m^znhgpEL=A!cQt;b!LfLu^_imKEtGO-QsW>yDL!)3o z%I2cto>GtX1(ZDL;cF9bYbB=+!E(hRc|R*2n#4c(Jgi#=7aLkLeqM(^$Qe0ea}Bcf zm=l?yc>TN17d9FU>BWzAFiSPiAU<(fpvEeC-vzK#T-D&ISm~h`w2GRFe2)2ZT~E0x z9a=GB3k5|&0|8dn_=@UnNE5APPQ1(MBjmhw=+vJQ-=47Q1LsVCbi3UpUuQ~|N0bGn zhi?ZOcD!x91t)ye4kQVh&=Xn9r+Skz{6<f7R9~>+uOK_>g2;#G7d+uM+p6IDl$zQU zx~S5!W?22HXP>bJZJZwU;!7{uN6x_$&UC$n^m@RDn&N=lqg3+4gL-sKA@!N(2uzYQ zQb?hoc^XypIt4<08csrCnh~%m3BG#a(UyiVt%)N!?SV*QP-qgjnH)zCgIlX6Lz6Z) za%cf~Q8ZkRKB=CP7GFeQ0qR`j_*f~4^qmh?sLHU!52OiiqL&lT9paT<DTM-C2S2Jn zYN$%K&10AR;+%Gq-o=S2xh5)T;gJromL`}v$OD*hrF*xI;C$Pf_2Kj9wZEAPUEw4d zg*_p~IVzabvIjLZeo+eboEiXUO`!^@8{y*SfNt@+oytZ?_&C$m8a@8DwyrRxIdq1E zQ5<||{0|BCD@4%NOHnqgyA-}n3VXd86>Ictkg~s7A@4T6X2PKMu3nrR4W}js!n5O} zK^>N8)^7^o#9?#qlp-8ggQ(sImn4){-7@)z3g@iH<6N&KN!Ut_*AZ5s^6}_@HH<Y% zMTGB$70sM<rtYBLt@&GLl4=l9PSs1F)xs<8l&4`_@5GTu%+Hb@9=YU$0P8J8(P6b6 zb65I^p#=^8NL4+Ib8HLXBsa<fWy7Ajr$-#eBt-lPJxdJ!>8$burv2TIgyWBKKYx$D z=5J+O{xK+~$%E72?#7PagF~&%rtYrIsF1SKb$wr-9rOC=cODI!HpW&v%Dz&Iodl-C zSPbVabq+CLIFI+&v*{FnuPW`o(B2h(Wc&W`sktU?jf(TE@J$boUhJG;=A@8j)XQTC zb4I;NlnOaEE2V*=pDk)rRdcHro@fh@6zv?g!e*sdq<-`<F%J{Mjk|9SM^C@1^RxTa zn9%3Ui9_^oCx$~oG@2BrC_Dun%+MqpeB1?OtqLVCn(j7#z322WaK=`OoRnp=>~m67 z@9Wzt<(&^7J99|Nti^bzWRkiZm6P07;^ve#dlz$xZ(9JtXl~6NijP^Xf+oH2PeEn6 zbX*SBp=i5lII1;jPpYkRS-SL?!mAD1svTqJ8e!8oP{Z0(Flv~=Um61x8<aY>{>{*K zIj(jR@ml59C4k1y|Igl=K-YDgcb@e&EDtL|5+p#71XoEUMeVZWMY0{)vJ-Ey;w7EU zGf6s0XX%;roTO*Y^f{fRXZlP}GM(w1&go=qCr-zX<JhrdE0Pykk|m4UC2FO(Z{Pxg z*mvMPy!rpW`wDmfvAhS|CyLZ9^5MRBZ{7N;zN-4R`syq4Q%*hi^+6E9W$vUtCwRb2 zsM4Q`2F3rbbJteZxYnv#*OYE@+lA*nilK0?`Y$6~)26ehUUus~^>d0q6?1>}wLg|` zi2|}9pk2Yqh*25q?*#_~!2l^|qI~shPNs0}K-T!z4>9zBErkKxk2sA*(XpJg=A0Pe zl;*>%c81nQ7&?Plbw`l58NfUXqb-G%)ZAA)OmGm4oJ<@6gfMYOy_vM&E$A1!BbvlD z>|_cNL<zJBe`xFFNWq9u;YMQxL0_Rw)~rPUk|(TY7thcI6UGbkCICfiON$L;2J>PJ z8D<XChFDPVvmGb&cP72nL%-7Zv4q&exf8DPJ)d&5w|vkwoH^pEtrtWy@`DgYsm-n~ zHa0Ae%@OU>ACaj~Tx?Pis>J9qvnRwbV>0u`q^-vFJt?y<*PIvyW?iNXyakeQpSF%X zv8L6XZd&iEh2!k#fRyn*ml?QdnteRo;9?EUE>_d1J&*Dd6;sZtPT<+5yS}5X+Bnt~ ztzkTW<s=}4i@v@K?(jQ5F2h2FJNd|0+(6?x(F!qSF>dGv!UYUEV~jk`^tSI9{i!SE z*cy2Lw`nTWLG=v?n{cNVWfZfZcI`%YV&`pcVBfc7T2Ht=stcvq<l-Iuwo$DsW#)hB z9uq>pRR{eEK6aPf!SCsJRbp1c&imCz7fv2<L)sf$AzXud!av4kHQ~FNd$|f{j8Dd| zee}M*7(A8~x>f#}JnU+Ls#hHv^iGomm#Tp-_aS+u=A^a%m5e4e!UY0ClorN7(5r^x z{GWyMuJ{R(-muoTS6909>IPdwpN4P!yi5oT%sc_6JjM;<J#jJRl68u%rZJ*hHdMI= znU@KR*Yb10gak3bc%S0nrwNs+nPr?RDBD1-0E~gsA1jCD3OV`3b);!Zw1v>$%>4jH z7?1==?Lx*%jA<T@>LX#A^Uw{a){c<i<on1N`KSOYAdhaTp@O9AV!X?$QRE+JP*9fW z$xzS^z(9+GHZ9T~J;LY1>QyAXg|d~z(0w5g?iue?e|Lea8p=Trzx|v4vpaqIguag` z^y_*BnCUf5|NaN>cN-)eASldDGf0~Iq_p1w!4KZyySEq=-e0Ihx?xBJd{c9q`{J?v z?u#7<ojdY!F!Jd!pU9}OVya<Mj)Dp4fzsy8JZ^cEnP3-U@KUn_vo9QAW-;1w`9BZq z%TayAzJr9yS*<^njX{}WAd(p5yrO7+pbq#93WNj9^3s?Q63q0EK;r8n2FAU#w9eQ_ zzk5X{Wf=Oz;pbh2V)au5MrvCt&NDmKf$(%T1}HeeRYwtuV#TBq8-s+fQ4QtQAC;hg zydy?R)UH(`ber@p+BMH|BDh8(tc<`cuCJENieUE*Sbm^e>AY+(g2}@RGo1kJjD)K7 z?R(sW1gnWL1;!9T;$Bwa7$>q4wp5oXSx>ma{IRA?>6v|(hMm#94Au~>i>KH|GCrUv zQxo#`l@niKU#(f~{{DqWU5ik?e$7_bXMs$D`uo3rd>PS)daN*oRnAJPL7VWMA=+b6 zDL>y3s7OXTG%lEfl*2Lw<A?iMEwwOqmYaB!SQ#X<Fx86j4JKTZyr`k9z@+{r&=!mv zd!fWX3C1?#n1A48B;i(P61Hr?Ayf=h3vQ!lHfT#MpX`(k9B@Q2v?(bkvMQmeM#Lsz z%WInc2-d>ia#2Uw;KtT_1s9t}Ql8pzeJa#0eX}|c@CjI#!0|)dPe*^H5&pZbz+nsr zxC4%8aYnzj9MY0$Gy#P<OgnMFUTI1ScU0Eqp@3IpC3NAjFSEPn0ShfL6${(?USrPB zO_Y(!3>IANMi5PaPm<to=Br|3rm*xt5E#pjxQY0Lo`SIDr;->tmG_9~Q^dDbjg5iR z%q2Y>RES2>F=?H%T&I2NwYBwb<HmM7;Gz1O>$FF--+kxX|6m$F`(8<Ye|k_tFaUtd zhw^~W;AN`~_vTCFqnu!n2M7ufj=Yrb;QWhox77Lam`ucj=DlEQRk-cCSDhJh<2$d{ zpwPf(;;IhTSxhKirmp(OJ9g1G>S7wE$}%FLjBznStDnlS_9-8Gfqi;bUt09pqIY<n z#DR$Kf<wX6jI(Kj!H3~;KPwxvO*(!Vey9f@;Y(}n#7>?PvvR}o1rYO}dh%~fAgF5I z;-=1@HO3FY8?`lP4BX(Jcfq%Q2|P42DHC*-KqI<G^7q9@op`7is6Kiu2V>z;TXfYl zvdRm<65ll}?53=gbc@=gkD5VQs)ETs$R`T%?7`T({Na5*4B#r2BmNw`uP)hl|6j1< z)TKqojkGEg^)Y^-@{x6b6PF+pli(H8jS89A<7${#jGdTd_eESLGflRn(WuHb0h5VI zU#o(d_SI(fNP!#mBmHB2O&`%1CB~~CA53n>lOMm9Va}gm+!1^U!V{Dej6v!zOOM{4 zW*7)3HXh~_lK;8bv-#gx`Y!Nk4|8{^WaCy$ySGn4R|e#FLPEG?U|6De)J9UG(zR{a zFx|%BX7PWi7tVTJoo9lVV(MfGWbVMFWvolJY3OU-iLfsx;VgJ|<kY;cR%(Qgo7gHr zucl37O#Nu{aNg_--Zam7g<$RIK0a@rw2lHDaY1PAD#0Z3ruhnh(jpTh6gUZ;dUinp zcqZIX{!QU7?_-iuc&14~BJq8l4&^d9!SJ^GMg0+~ae^Ej7<E0_&ipGg{jY<#HJ<|> zz{8fNO*Ym+ow~O8M3*W*@15&8Iq!QF+L7+t+PY@5GS8cB@teQ^cd3Ny=saGK7m5_n z@rLTPu76Z95R_^wnsn$<gXYdWf|uayq*c)&3bpLZ{sZ*lk^uS13}Lxu$4>W>B1o-k zZng=|v$@GnXqf+l4}M2ldEfMQmo;l-F4j9uI(pTg#0J4TaqQ6CV&)Km;PIMu8(f7k z%Gns8Orl<KYSipR{buLod23tyB@@oq`{eN>^S;A-g{eWu405(Jgl-ldR2PWqg;Pfh zvkQ?zyO`wkHUD(|hRxG;Y1O-86Y}m3G@=t7Vz!s8(FPMDUBAkW4D?zlHTurUS->rn z_GmfGC1_JYb&^_D&S=7(Jg(({S}Fa(q+Zv$SwaNFNO`SmgZ_n?3=9v;F;exx9HB!T zTt)|W)US0D-51=d=8f+Bh0}VLa#fA1UGs(@Y$#jL5~(UPzf&aToI2hiJm{B62yk*e z7!zJ#Qb@K{A}q4*v}|h4*M$s9`L3irV-f@}oKat=R_VSTD1@XWM{OHX8Ctd&?Uju~ z5<x}%dbh5r!K7qh21Hf>r$AW0SHa?tkke}aG;=W^!Jm{&_LE2{`BbkqA)IDxV(L&L z-OtM-lE|m#8F#^pwGFG?P=B{C#<i%g=O#byPIa6SFVb?&+$5$~B`IiZC?Mpus!KzD zZ}_ZnH}}2E@SC<E5O<slB1>-BvduK|)2C0`IqP+G4X(5EoEZ3|+rDk5JF9&E_>HgF zK~1Il)zEhK#kZ_)aUZznLyjY0&nluNL9LjR-kTnp!`}Dr|L{S<m7fVhlMTA!5fqHM zG56_@{i0bZplJvaoEFAX<axEJt!<M|psaC^J^qO6*7&QC@Qdaa%%G)VQKt$m#hnrj z`{>6%<yMPXL({suy9_3Hy{PZt4a>*j!*95U9(%}bY-uy!ox*v)7&J6w&ZR%yal*a- zo)5YW8#bCoX?>(4vS}-Du*PiK*sl5<ci)x*wyAx)rdjdYB(pZ48$)jUja%J^cYV}? z3!OdNVR%~Iw8lb&6GpsAu};_$dH;96WAvT+BX<>xJD-s;@!5Mn=hCV>c!Os(>rgPZ zT?3bRD)h_ue(-=T372wgYe0U4JMkaJ_b2cB7p`8Xio(Y(N-)~c+Gfm|piFyq@3k>_ z;EmVZkDq?Rwdx3BQzD^N1u3j`{h}E<@G-CU>y)$)DOwzzUtizgo_yvhw?^LY3uyyP zs8wq0kM}*U)7ctDJYi-zcl^{zl^1vG^8x|LIeqe&``qV#-3Arg;!d16=GLuiF~ZQ( ztD_th4}Sah;Doma)#1d3XK)9^Ibc}B%CmXnCilso{**D-VKJYKCR|FBjrtxxe$-tf z>%gSUti+Z7n=k!^h{$%E2p+#gvO0PEu=~tsKW9XtRzWw89697#TQ^vTalj0Of%Bmm zIQ#ZJ=JrdtY1YK^CLHcF37eGn6CeGgjYuXwOAg?qUWE8USErT1#9<Qt<zN24!DP{U z#w4^xR$Zy}ZN=FB=}-QwO>74J@#ElSy~P5c4qXbPyLIb!tN#A|&$~x{^oZNo))ovL zyUUte+;!<V%wPVM-?BRpABY}N{OCI@B%FCo@DS?#^>2JtbqFjnUXvkO;OUcx-A~-} zlY;j%u2Sb^pOaS4dlx#-Yui)1d*+#a?j4`{jGk2}g5WXtt#5ucXw%rB9Qy~2e9~v9 z^o+iSAaR@~#Da;<q=29?Rw}fAoOJ*F-*m$x0~!|$SIutyhY6qWyy$MZ>1Owdk9@?Q z_4W1Gn1Z0wXArt;uGwXC9ES1tU;R>WvLEVvK7j}N`m;Z)$)B##d$sQ9(IXO6*BSF1 zQaoz{t~4s1Ib}Zm^gj2(OE0>0Yv^lwiFqOa1mTQbARqsj`dW!eixvw$dH1!~UUoYa zzkxHxVFF+L!hfCaYu;xJQy1c?&+Y3qYu4H`#*Oc5^3&IkKK`iNC<5ZgodJIf{Gm-~ z962p9F}JsE+aV$@Cr<S@3<4&#MmWT32Y%`_4oSh%&P@Ll(-dGKd@`pY)Qz$nB49I) zH*IdW`Np!}h7D~x5Ngmp^YoMMgy;`3>Px|!2`LgX&zw6hhu~JD2Ys?WoYUB9Z{KR; z<Ef{9thu*I?OW?QB)lAa{bjd#%Z?!E)@&NSaMLutlhV#5A<7Ecq!TNzv$h;L5*N%i zqlvG)vfu60{b~t#qoR43!q`Sh%zDq%76y=i!aS0OsWmZKQES|e?bldeF~8`O&70b7 z4nz0S=~@$%Z0?B<#Iy~tSUA4fwuMmKc}x2?6N;;4S|iFH0uaJhN~S#MS#NKztFL)f zK0f^#D`~ShF4-2}B$WqUIw{<5P`NPiuC6B6ql0rcsXZ3=K=iI{!zOFvfdj9(C!T!5 zZED*%iw7(TPdKWOwJ9fhwN`a+-?G(~mI-aXQIQp)6>MGGxpS8ZM$m#O(f$evP#JCi z_BdG*PKg<ykVPe!4x0AX_AN%h_dWTzyWxhL+#?Tv-$|?rnCd*WWU@i{HVR?J^o0mo zvmxDTa7|j_mhwTVxwZ)*5M?@n$q$ij&?E&(9KCu`3=D#BuCvoM)?*$D66F&c{>(Ws znfgYPnjpq!&UDx$M>z0|n2CTSN-|G$U74`J_v;>L4+t*Q0V2#mx#J!0GKs%a42*#Y zk%i!nD=Jx1UjLpzcmjP=uxnI*gaF#g5weuIW5=~(4o}#Gq+SpoQXvXqYz%l3f&eGf zQ5T34{c-zk@00{uV}yOZ%3ulL%$d_t8ReX(cKG&S?yrz`OdVkwCM1c-_Vn}^;eptm zI(fn-4uV0C82@VRW;oT+A)?nfEf@$rGAdNrDR~THm=yxrpaiQMZ@Sg3mxjc#x;Ni^ zn<itgouy6PVc@o;VtuSKR8JCD20wk>tG-6cz2U}NBvD_q_A>E_MhJ0481a?|j~9dy z&g@32r!KX^4MGyQhCrYdw1@!G=7qLhp{0@No5H>Zuk{*35bl>>dC>?dxNlzD>?RN{ zlIukPq@m~AgtdrqM;_nTM<oP87!kh4)Mri7dg>%p!fZ%|eeL^;`(tCWO62<*A(m4L z17VBpcoPo1Ovo?5`dU^SGt~vM1+Twl5&|rih&K)%5RvXtn_8unpEoTDW`VHXd7)Fp zwJi{GSFJ6LsODSByhmslkh1ZuZ%KpPv{{Nrzm3c6V-MT>LqN1;49$h}g4w9C=I3g$ z2&0cCwdJvSeVe=gpTFhWB|I?4Iu&FKL9Z6ejoN%jg5-wQjqaE%e4HT<9%gm+5&(gN zV9UAlk39O2!tWk7VG}y`{PWM++&B6sL4v#p=8ZCiGspN{Y$7l3tZ&`qUX*Z%aL)Lq zJfq7hs!jq||3II$2ijTJC~JWPr&8KOeLQVGul}cx+Qbi_5ioBA2A)HAVYr!$0!8UQ zv>f_cN}^5BZQAkeZ+}BV$rjPpakHGP7V}1_JKZ5cOJkCGNn4wBF3EDn!l>pcV*xFn z@W?2FoLz#D08N6X(`RV^Cr_OStkJ?@DScE*+sW&DpDQ0IEffweiF$<ROQyB0{qveI z_ezt={M1M9OA_|APZP9p)hhSU55B8`d(1RF2D=e%y#x{EG&Kf%VIo)oV~*SG+k`PO z8A+JU)=M*Du&z~ypcSLh(BUu*hywS~q=+H!HCqTgi9twNTrs~v6k%qkB#l!hp9`AI z5J!+tdCzKspji={9t==lJ`CD5(ikDm5F(gA%#{JQO6^A506y)c1N+4A8H_xq!?>~} zl8{*1ET*uwxkb;VfvIDwB$-x7^M;uq;cw8|A;2H`(ZjZcLH!xvW~$Sb_91}45Woc| z*pY{AgfKFgt8F7wy}{W<F+`I@L9!C<fvFCU4BPvwHP{%~n1m>o=a@hdoEU^mtS6s( zLifZ#M2xT=V75e4XFDFaTPq=^Rrs|N^h8Jj1ztu4Ll8~aIjzBcOqw`{^su%M;{h+! zWk`Y+eS|PXzhF6maUon$H?(o;1}?Ggpz%{LTep&SPB|p{0Bt%DipGsW@E(%+kk0M~ zKeP{l?8TQ}kcqm%>W7d?*_6qcZPFN^9_yqbFbQcl_h8UiiWqZ@gI8aD+1iY72N9r* z!f}USwN8Q^CfE}vkK6kY4v0#lw5^d5`Cw=X;75-?>YCMd@JXV-nSj&_yn|l^jB^qa zVDR7ss}3-OaaZXM9y%a`bXIlKE(g6|Y~uZKoEwzrOU6z)6Zjtz^Jd9`r3c1lpN{8b zJ)Qa0d-1$FGNtwgj2)aVH^B&dRd!0T2sjK1fooJmbaXISrl8!`wssp6%Y{Mxm?sx6 zu<WF$f)Y3x+eC_k9*_olyWB#{f|j9(KQ^{B9=f`^v_dy#OdHhD*ZpF6wrr<zI3drN zpXLs8bveoAh^!Z*gVK&ytu<koWdf83#uxn+)0ywB>(|@dTS>_)=uH3sKmbWZK~x`& zsLcMJ3$7xK5MJYYy43$Mv7OwEWoE<1Eh~aU{g~I?UFU3UF}JZUv*Tvf8VTc?-;76u zCZj75uw^9RAlP?_ugJUBm^L^YwPi6_X+Wo%1QW#tJQtI!?^UkOh|fq6O-kASp4##& zdKV>}by2*lAszr=0#oqxz6VADp9LAZ3cXhhA=AFOJ$chjw}|+yl~#A$Bt|oR!$@UH zSd5|5mf^GVI2LT2k80a0O%m;4LMv6(Hcqb(+Kqxg)pcSP8f=Rt1~vmFkVyhWE|!1M zXS1Al7R_l7W72?g(wZu3M0CZxTAJ6m0c}{;?j|LeoYr!c;uSUWnx0vcwVU}rN$q>i z$TOP+F}Ua*eDcqif1z9FA=)CM48l?p8oD|7Wdn;sDlNyzkr`rHDO2J2_{_wdDLbfx z?_)GKj_2eU-lfvU&D-2XSreA(|Jmg*oG+a`Xc&Wv^N#OE&qZ|(L?kXEJQcKOb{Px( z%HuOXMhK5O?ew+KD|7A#<9R?tt;Pf%2%9nWJb@SxamAui)1aLPV!$wqxwxVY)y9x7 zZRZ?tvwmU<^z-!1VCVpcX!1c2gQ%InDaM2VgMi1FDs}CAR-^Jiz!hbKON2j!74Gpd zCL~muhB@EMCETMt+C#!B1@q&cPdtNZ6idMUdvmYUnX>3J1bE-m+_U!Rg+RCu1k}0j z7yFyCe4Bh90SxUD?{*X=aB2d+@~$LdIm5C?d3+3yFb9=OJ-`_PlW*U0VbLD%2ZV)= z-+aIqWdj#DD@~Mz0MFF~ZuON{fXsR(0HyYkl_h?v`iY^(#n59RGW3n@pI7JJt2OUT zcTaZ`DR}4h9q!P<SIwm4rBbvoPbg+-=<0twnG=;UxAr=%qszl|Y9i+jJaNq3aqAtX zbz^278e*+7(4G+((Av<pHpy)Amw)l6?%of5%*=F{YmkD_+8JmSB5JHPQO1oo+-#cB z>C-19{jWA86L+3<S~O7Zk&pEnG(t4No}P<lE=GF?7DVnzEh+5Ub-igu2M)YylK1u3 z-)NE;?~tck@1Z%Nz2N|Z)`kTEIDh-!KkshdyWQ>G#(>3<Eam>;hZo%k-*<;u2v`ec zFyXj^7Dzcqj~+Ht4d$9>WPw0%LK|PdzSVV{Ib~~F=gysT*I$2w5yn?veaS2sXmpfE zqFzX&ObQ${Fg-&o=`;F-LCkmB_S|z%8y;9^MhnGa!F}=pmo-kzqG-C9;`i@=!OUdf zob@}FUAj8uV6yiEu1fpi@q|Bp@EKQ|%DVQgJB$d?E;LNcV3?1wNHoiD;^kLfGS6JJ zUMwHr2os#wv@xZ#Cd%&z9=zY(cI$2KR*jWI(n_&Xpt&+R!99ugVp3%t9ntjhCw}bS zedoK(wAZPnnFg6yDeutXL$=1r0Ymrv#Jv{6nDs~|9AjfZ=EV^$Z&X!QTl=vPp|R7i zny-d;#vXliUM9+$Zo183TIbl&8}{BLkM17f^0?uPwlRij1Ml?84+K17xxg%onI1f1 zDS7P2Kbkf@Gnr`{794L1^!IS$W2pj744lG9N==kKt)W**Lsyw^M#9qMHORv6VZ#O^ z^Rb+T?uQMZ^1^Q4e02u~$>Y?1tnkl5^_~y@N<h6?aOT#rupJB4VeUK2`R(B>w~x%4 ziGn;fo{@rHw1!^v8af0832}|qR{4HWYo0iJAhAIZAQJN?wG1=+r1mY<w$`}YKfOm< zNrf99oOCaK_eFVXUgP%OaHBaMK|C>sv(5(byz|a?i|I`ok$uly_qb1f^0T(KYGzvz zLl`myyk75gh)BZxD`n1p$2;EX?$Xh&gIY&J1E`XD9PePvt~f35K2kcu2MmY$Bh|yW zfQ@4f%o_&B8vG|d@o95#!pQ|k3m7a6V69*yDDeF=pZ+;xDln&un0d6x>6UA<?stB^ zUW7a6j&&s5KRnpwcJJEl+PCafxr6pD%p8FO`0skxU4~Bt3mk3Uq4j#0KJ|Ogd){a7 z<Z>^V005q-BlV*lFf<rBbvB7tHDJw)_hHa15s+v*%$wi$-S=5zaxm|Az3Xlh4p`$y zD7fX8+s#}}T`ILaKpWrpz7JR#`~fbE>h)J&bf5XiZ@8xQ?Xu8}yZit858axqnB_em zmZMEtOgs<>Fs%dIzel@S61n!;-G*D*gMdZ~#!?V795Xcn0rlA~r=1%luu<lF-cxG= zAi@cKY7;=qCc!d6Mody3!Z;)5%VTVSn>+8k%kYQ)0&DiHlYjD)pE0~6aKI!HCaEVl zCGFa^$8Zc@@#6rmj6Ik-8qE9N|3T}&GaaW~tIXtg-0^N>>dcKBZ@k5p6#{3rZB`!T z<9|YVqtd)bBs8&=i*|z};Bw_tn5KWvxnG#4nD3My%;x}Bm<(Yt_=Ru^zc2RAa-Pk{ z%qeG~`^$l`)H`9fZ@#*R4I{wOe2~J&-9mMrANo?*F8+C8`3u#d_|g{6>ESFJhDZ-v z+>8;L;O0wQ7$#4AF0Opw%Gi-)i!E3~M?-fpg}0Up7TEBO_!LU^Mj#f_(DjlfDk+AC zp+BKDlfj{Ww|CFp{Mzlfh$7BE4W{|P++hL`>;^Giv=Y`IVek-Lo|7PyIKjY_(4rvR zc(Rfp;4mUIdQwNnX)7NMo4T_$1QSPl;ypZWj~+eb@K}X-;)n(lIdkT;dFej$>{GU` z%~~<_g0WBz@52OPP-vfMbpLe!x8zVICp>MV!oytF4KaxUcZ0NR)>0t$Fj^P{`C&u| z7qqRRA=v5#(@)AAiH9WKtuTHxX1t|w7=$6fcvv%M9T`S(Qac5}4eRs}ZkPmcaQ<LD z88~RSz{MJZ0E1H;I0N6n!XtaDG;G#=VP4=6W(yOho#clJ?UP3@PAzJlQZRH`Pg<jX zpzXk;Jy>2?D@8*FSF{s>0>O!`O9v0WZWa>SMxt)in>^Hk-v}mrr#x^^8RmGWJ|Ll8 zgA4kxrlwBquQVJZ!~vUk=quWQfB-&V)I0}Il+9QI7HikkYh3s0^qaPMe+9O@R46D9 z4tc<%J!s;LH5@h(%$N%ZdXNA3QMXflMfr>++CYB%Cjt-HYwa29^3T2ayjv&doN1<Q ztt!tS>W9Az_2GNaa|kb<9FzxcRBG`Un5#X`{JylGO4R}v%Rd9B__{_p!^gmMAH`xB z&CxQL+zS{w#MYYwAyy;^!-6JvJtr5ELZdd^LI2S`2E^36Wr7t|Gp2)Qs?<DXl;Oa% zkU&F;SENPUE3}3>V4+eW+BkTzFS~I4k~MTpl*9e`AQplVBnVYd&l)-949gi}p_CA; zteCADlwV)Yw@<77Tg4bM^7J2=(y3o6fHiL%zHq+jlfwnu^T3C#If>ayc2Qu7N}1aw zFjUAqT$wV*KOBUx9N;ZYV!a$@HYx!pE@nYwvN#T6`Mt>AHvl|9^kJ~m0W|bJjvbxn zPFq<xeDun6J$KJKo~-B3p0YfJ-?cyHlDxLgjJ6C8Z0~za-mOitcnJRzFj((p|969g z1I+J4S+g}2F@%K5Gba(5%<TXgLB#pRw>20Avo+5d-vLGj_zrMxm7Vtw`6Ru{2Y`L1 z)N@3EOTf>R;?rANVqKgyY(~XMfnP?Q_H_>qNEpnor_U-cDAk;;CPxt>1Yd1MI2%*H z%}w|Uz?=(@9aTl;CxXzH5n3gvYCPcxTC4F>io?uYSf&2<44rxaH%gZe1I9o#ep#+# z+%slSURaYwpoGq{9*ZyvePz&^1Fv$kjWpQb&b-riX>>+^C_`lyFa;C->2Cyb=q)tL z@{>!1iu@=D(021NFuKkRiPGi50R5moFVh;j7`mK4GSWbjFeJPl*R^i6fyW?ZAS}et zA<x+M2lQnC$IyHdA2Y_?dA`H$RMs?@BhaqhH)_CTZ7TrU>+7%W_pi*lvL%Fc@xnQ` zYxfPNsa{Z7o7;D|0cqZwHg2?S7e9XdhqirY*LAzy4<CBKtrg%~ZoW-x%optBIQBy_ z5%?f1y!_I0R_;16!8U2eXQiP}NXzXW5#iRrm;1hJ*D;`7-Cc5qn%_}x?YcHu0IIad z`G_>yZKkENmg^HtvsGT+2j6%le+zMEhS5<+%<~*s`^1kQ_OH#kCbXA%i|t+By6svc z&fp5Bj#oI7cZ;kIFKX?(UtYKOeBdMQrI%kcVc_of24>;|Z@ez8RGPO43eloAX-VPP zXMQ{l=hoZbHN9T#Z$exk09;w0=cG0)5b)utEQjrgZHqXNhkN8<zd88jH|B9GL)6L2 zp$yBbhfpm0A6$Xy;T4t#(F@@7PGF{|eDd&*@dGjR1d}}eIdup$VF{NIG1VRCDG!Ib zdtzrW^Y1do$wT5k<?(^|@_u1nBf4q=?{MGBR=vQ5Zde%}9%cA)?LnFUP^Y<T=)Ue{ z1|1b&fB`=q>3c717Ye^sqK9L0j0{pjf;;{uQ)V4v{35tx5gOHw1uxK|RInSu?_6Lk zV~JslFEKyPoIY;FA#m1d-s8uCP{*<zTg4D?Tie?6Fr&-mzyRZdIm#BuQrFM}%3>rG zGP;P#-8;qg_9VA%ZnuC9FUm}4Yt&*Mkk$DZIuc}sN<JlH{X6Bq^oMt79a0AU-iZqL z;jg^me)(5_M<=)`Y@rCSCw^$Fm@qMkVjjg@3d4Zt;IxEE70!V96q70U8Q|>iWg8G? zQ`UYNsF>lsDV0IXgc#BhsH`{Rm0zR0n52U|wN~bFF=60QAJ$0!^gsVc_x^3yx!+ya z?rJoFy0ljO>HYiMPipOSqk`Drm_@lbW#MecdobcZ`Qtxy|LQmYjhV|aX=8E*76EOV zWg`EBfB$>#bN|C{nCY4ITg<Y43)1VazhX{c<VQ0Gk60<d3+8m%j9C}B;J_qrVTF6Z z!Bmga7D03_UR1Oyl>^Q&^)tb#Bj#ixC*c!7`@tdg!VHgzoq@#?$m5ScY5|1&mK7DW z;zZe`Vi<|#)ffs)!^MH-onp!^uC(HFT`suA*Dw$=JVVF)<KKxGJU2S7TmqZdMX4 zExr5QcWDW4#Fh?;=dfWzn|oQpH#Cl=9F}_628ln=Yw}wmU3=YLo4*9IVObGpOX4sb zdgIkg&~=*x^A}#)?|$yHKW|G#C`v4^9hCzoyD3OF-gLV;X+HeO4~)^9_OCid>CMFe zGz9t#e-f=ONkd0*UOI{PA_<;4dBVN-y+7f0Yuy{>*xtU?J^b(wEIc4u?m`LDU9EAU zlMLP2Au(bx^nM*TNP=-}-=<K4+MCO9qb)6M?u8egF{TBh!dZ&-Q9QO;&)vLvt7*}! zYr}we&iW?_M<q%HA?zW3!?e#jt+BV;`!GEiCQJ($OcWwi!2nq!4c1XRwU!)&r9~h( ztAX!UX)Rxx)j1txlFleLH7@(3L$>C;XHVd9&g5Y7F-be*90ig57eDvQ+H1YRI*0n8 z1tS0<EWlVl_32+QW)8FEJ=%f*LpgkCFKua&S2t_@tQj{ot+BQG&d#$&3|KG6Ig9mt z1eri+s5DbJbzl$v_U$|EIf4>_A_&rR=+GM$1&Z}>`jWO&7QzgUVhBRCpLc8v1{$cz ze1_^3|0#uml#<t1Y&q}vcUN+~TyTr6Gvt{u<rDRNtJm4r^=i8^@6UFeaChDP0r$ZV z{*=+!g9i`TyhGu@FX+}=-(f=f2R`tV7EO^k$}$)9aD%LeM-_AizYP3p2v&uoD!w+* zIs7CDY6YEye(&1#tlP8aM)OHx1mGtE%|H`m2@|>p9l=-W{_iL#i!7a({iE^m=8n9T z;JY}6uJ%9#((3%JVgNV;8Bx%^8*jYXeN7=X+qdpCCN;O|5D<8GlPt1_wH5vs|H+$` zN8NgvcE11pe|C@l=!d3-Gf?qZ#{6{0JMT7W^wCEi3QUxCf`>waDk2hFcQ7G0>C`qf zVb-u2z&L0TRDw0xZCkdQus{T-QzwsFP=vcB1wZ$~bMC!&z0aiGW0FoA#n71$qhe~r z$oBh`ckQ{!ZQZiXwzxG4-s@uezpB&L1YFWhg_-cb@sD5A_N)CC@a5qjKA=75+8QP8 zm$mQRdVhnY=KuDWe`aQ`cfaQ+Y*Ib?$oGQqqgv0pVegIZYya?N1*Qp{!q|t~gNMA< zX4@5c$Q;yOf7RlH6V!qD-n0#~8f)m7<f<g35Z0C}`#Vn@KP-G{y?^U=WB4%R6JqMD zh2L@KT^1c~t=8eOD*WL4_uHiHk)VKyo<JFCtt|)Z%5nFh4}VN$Oj;;Z0{&qASjk|U zJ2s-<Z$1VlSU1;L5g*qa7W^6B{^nQaZ4S{3R+z=nu3vod8TbD8f5@UqvbFX#S?Ts_ zD<sd^&4VI>(gK4<SRazpEY?fb(xG7}1SkSHw~~+dVB{x`A2q)g?-)uDEb`%K%YN{2 zDG>|^wpF6^@Ggll5~a(Cfo0&|zrvLd-bO6u&h~Owq&Rto-+SilnanT#{O2@Ak~WYC zb%>Pr&2RjjZDAw4B~h?QnDSuIX3o=Z=!UG<Zk0;s%6Z!yM~P{H0m_y2PSzfgTsff$ z2Df(gY7-uK4l}_-MWPP8M`B`lDU?CXZw5Gn6Zqt%0v+;fZc(J8b7xN4{&}8z*pzK` z(7RlDAEt@Z9bqC>kZX`h9Rv~Hp<lnrHz*Ho7%$-~fkgryk<f^Mgu@zm=$5G*t(<jp zq+Zr-smCe_DC|Y2UDScRe5YQRzA?YiCKB*~f#V-BfmtV`t^UJrOmgHg7~o9*c%SuT zwi@F7J;s`w+P6t{CLi^s439fw+WHNV(M{K)NM}*HvN6EY(U|7uhV{*|&@{-e;x##R zA`H%)g>YrJ@XD+`^Nu-BkR?ptcS?~t-ErEid0k@a8?<f?eK>IN4R_y9f6A1pZ+!jB zZkIG|=K4tq>vw3IE=>KES6^}Oz5D$V44#t!&}TG=9YTb<ZP!j91p7U^c3U(>mfPO> z&iBYt`K){9*{9`GbgR*XJMVax`~D9eG+G6{iPGi4fai5Vq_{E!mPy2u_g?6_klB0v z-sH_U-D>O~Gx<Y5{GOR?jS)#(#(Ya<2o!>O2qrx@aR=$ar@)jO<m9_C7Y$Gn>++OW zSdQh<9m)vG3Q8-?1H&{2B+9c~fuk184l4lB-1u(H%jZyG0%h=VmcrSIwSDT~D?GRE z40<$UECuB8^|$+K1I*cnD<upi`2v_?{912^aa%nMzzh!fX$MZ|eUfkU-0%Lk$AoXI zhe6Z*JwHJ${<zg;(gcg(UD|DcDAE!RGu%T<=TVfdTnsRN7|Zpwa%558U%1e%`6-K7 z#LzEmr!r5yGJ+y={ODoVEG7=kK;b}PU`I)foOOLfO`LUYSB$iC&RT%+YmzFeV1w=O z!Lcq~T_rk~GNp)}I5;xbO94B3{=8eQZMXgM=^-j5yFJ*g(s|*6wwcx{WUaQqN(u3_ z;<6&=Z48`o0q-aqLl;H2NO8UWeaW;2$TqEeKdne%%~~Ti4OqzcPH|KQrc8p>7BT~V z`&4+}-{ZO%^YZ!Tmh0~a@6U$0@VyykAJi-OJq@1<7F4+4tF@`H4!i@@;FWy2`S+*G zv*Ko8`a%|bo(Erur$U%|d`a?kEPRJdg)sa}L7jcAXY%;_X#Di$QZR$^FU7fs6J6gL z7@#lZV`Fo(LT6wjghveh^7oC+G4&0M9j4BegrJYr%+pg843reMocVdlcbM-?9-<4* zST4Em6&K2-&-u+ee5S+JN&#ZNqeNgC_4NDlW9RKz1Nv<_487<zbd4Adw2VoF42<Vr zc)@LygBsuc04YR0OrF8%wZp<^(f2nW1KzY}QoGFTB)szdB*%<TKjH|7AAs$pmxRxt z^3pna;qI9F(Au$bumz2O^fP_#34|9`fCKD^K!AzMpQ`1Zs;R6cCC+x3v2ra`GYE?b z?2-`i$6!48F|m?9^<!osxMAI=t$E!dtRm+vXC-j_`~cT1%M~V@bGkwK<IF$%uK8A= zFl97vgZn7zfkn@5kXN5V;og_eJe^TLq>Saa%zAiM-kf*2SB|t2+?7(Fs}0V4Z7-go z>um-c9nQ67or1XJ2M@ms6N8P(53$E|6s60L0T}sd?NVUs`V)pYBb@c|6UPs^)jH?{ z!hP(>8*)5sR&4xLGXEWv(6&uxzd<p3g_f14K3i*!9eu+Btgwv@0)a5VyC>z4$4N~D zo-ye^uL&S17)5$BDC^}%^;@?F#@yJ>r)46|PwS3FsGMgocw*0_nA@<iJ#dgTb}{qh zt@urp$l6=(y5+Q-5mTV7vL#POr9}s5pJ#pB=Lw?{zyZ)4+8##Hv&)cJVS#PtY0vD8 zEBy6l!BI6my(?jU#1wE1wP>ZOB!&*7W|Eu6mcJUYp05_Fo0lTzdmP<+^Duzf4hOdn z-uqK-i#+$g`nA8+sdQcD_5Re8kJ<J)_Pk<h``7=||LPuk=)1Pp^%Fn+S@*4Pe%0-~ zW{)v!g4S$R?ET;Vo!_^^W1fEMF>6Fxj)MfY_~5-CwLSL!zH~Z0pEAck0`^4vTHm}r zpBGYoPBJf-lC7BM#4Et5>Si4h#I`7eH@u_&=D&Z@Vm_F_zEnZ;Rs>cNSalY79MWw; z$;lcu#Xf78?aB$}{1p@9i>C!A2su4}o|WE3X%dr-D>7nEUg>t!DEGonlqpL<oI{TU zZwgBe^EhnW<=YdJM}15_*k$h{wIQyp)n)A?p@{_Ua*9}KLQ!yQslSs`I$}Dfu+b~T zbMXva{pp1@&Xwf|O0+ufNj_IgU#bDo^EU?r5O4ZOd*0mbx8Et^e4FikXNwD-vFv{( zruv<CzQ;ZL?2~p_3j5X}xjg^C2R>}hHJIQDeDmCMPbv7swHC1Eo_juITWQ!1LyUN~ zyAW64zE6I}PQb%KlI?{1_C4<Y?kiukt&KsDpmGqRHwT|rIuz#VQgf9tLtF_Qr?xA) z7>5KQ#Iyd2_cYrZ*Y3JudabrtoEQn$IASS|z(?$T#-TK9RuR-kiicAmr-r?5AfvMZ z#GJ|j2VAm^wk|pBhNtRGXe|~WrR0P5W_1WgU0eaGVl^_qYYkjl-7@8=1wqqC+H>U6 zu_0Ml)kj%vhmEnDX2DmM^}xo0;G}e{cU5vqeUvT>9IG5-UKW(v)TkTE)~PL6AHq+J z1<op|Ps))oSL-IH7=!AgB|u>@i}fGZiC0G@cOne1v;u}oPsKBI%GZEGO5d`%-L2L( zhf_LzY(UJNi5{i5C<ZjhycGpzdqG?22qpoOXRj-f;5ev+HE{+cfo<5b$I+=gC-@Fq z6A=K+>sI|uAPUUz?d@AF;0?YNM5yD?7c}u|?Qth44u{JSpoY-0B)=B_7R6LlEnxs= z&U|KBg}4e&?fa2^3^^k3>O>0-s$-N(#+MO1E!lAjAF&e%l*CdEFvCn5#$v3BhaTe$ zg-O??r9pXjEJ;|GQ-^?viv^}8T#x2KMr~OhDP9~pI`X*aZ#<y`eq!=|&(OZ5nZ@Fz zUi#GFhz+fdX$Oo>$-FQbcU6KDHVXtt^3HLJ?dh^QZu!EbLRAY&*l>atVyO`{ojK91 z(9~g%H;+Zyq*KAQw|~M73Er^ya#A;!8r?ZD^mIlJi5j@UR9OB9DvqJ6Mohd@rw_Z2 zeDprorf{bhwQuseU3(Pw`$_kz0;8}M!aG*@21eJ*j{$}TS~2V9|M<<XxylDB-KmZa zw?^yXFz%L?7K<}~u}4S2$|3H+f!ExNFFbAg^e-wLEQiF<w``pu^ekrB4uzq7@%g9R z_8q$vBN_prM!pqOwswA6k@Yq!6eSFSAU*XG9wsC#v~1XH@F0Ludh23<d4BrjQTMTr zf7%!>5z9D5kdVv!btV9Nq7NN8Y{8topjb+4=zoi!FTns<<zVR4NBXOb>>O;O?Wax_ z0a2&$SuLbm?GZta$CJ`9F&ziXlBM9Jn7o)`Q!sSFi3^VY7R4-zDZ4OF07sZpaH^QR z>QgxdsF8*)9kMXnioXL#t#Jt$t$eLg3E*HG2p3MkPF1S3W!jU_SWqYF6E>WnL>RK~ zqm;(FWTGV)x?Yg)MNAILCTLi-f^oGRBp1if3rZ%!*pb7B+(SS3XZM-U{*s+VKB|EJ zF)@fJy>&6bIyxqBmP^>XN(^^QpT|y|usyEz(xM@@uPcBB=iIZ;l}L9uK|;9G(!ANn zT&p$I*WWl`&T^d`H!1>e2a#wb56DE@tSD6kuxV{;w|7UR@e_qEN>>I37$+ncIT6RO z!VpfBNM#&{OX%f)`}@D;He7$RMIT#&TFq{>h!tar5XecadKxpp3pAz>2`ofZG%*pY za+Ouu$uS8-f=KcSIRQ&dytYDk%Se+IV3<|tNpLXd)@m7yy+c*f=)?!hk~HI8jRY>+ z!4lWjIcezSz#aNHl%Xo6!;mIn=H-DSZf=4WeUua4Y;csRk2Jhx+LsWizM9Yni^q~l z^&3y*7(T(W_6mki2@E}eLQHWcI*Ef#4jq;zrXxw0Bdssl&?rM_7=UPEO7%VuHL2i0 z86Sy{=X}<wZ&_Ah`x?K|plkw&*=yIbF=_JP*-ivKzl#B300SWJG$@=d<AHbmzFO`_ z>8+0eEHGG89(eFOI;~KamSacMhm~6I9#V+VF<YL&^1?}9CG{!Y4^xtW$g&Ln76V!W z@(ev(%MIgD+Mi7Bla*PSS>+ER_~C2lw237x>6&U+uQX^Gs>-1I1%!SAI9fg!6&{Dx zrgHeyGm9tG0<5iZ&EM`!%nsKIfBGuAr`TOu1+#DdqLvUuUCP!+4h>y!dUO?#vLp=! zt(!|jS04=t!l+;^-A5X$dQrnP5YSdwx8fLjej+l__dWT9yZ3`1cEA3we%GBmdED)P z=_MT!5FG1Q7A!@DhK2!{tQWlIUOf=vwUY|>qxxt5>ht(*i~hd9`m*_5_}xE`u5Voo zz*w>5Y?O88ye+5Hnu8pS>xJi@bk9BOv~6vR34Nuug0dM`d=iQ5^tRWM1cM@hB3!zd zVk=1SoD_kDeZbH~%BB;vv+(!ygGIjhcY-T0VCd3m1uHY9^<Xh5pzxejSiXNZcvAdd z-a~txL}1{bU`>hv>Zie33dUk^3!hEHk>;%MH7XxC952l80C$D?7i$6eNWN}`zk@R9 z5rwgq$vqp-x=F2V3zJ2|S*#xZnTKOr7v&T@6;~f=Jm3^Jdn8<n$DsBze|?!VcV@rC zcw@PMb4#YQbdXiMG7`Gx>my%=uium`AQhs`fl}n3F7H|#Ls!{eLPO*F=LhdM$GBHs z5i{4s_kkvsSB2=U2m=uYE++<Hs5mTgWqz~ooSh0dO4e)J+O^m2HV4Pu*X_|^K3m*> z_@n<#vBYmO=g5-kZOqS`+}WZdjS~~UCoUxwws>aPY9f|)m1&*Vpc4|cN-2`-*~{YZ zmiiQHKwU})-eeVptqg6UKGdA^FY0x0lY+XsYH7~pFu8-JtlCo(*9nk`l#5Tw&!G&? zcd$cPAXdL>g}}~D;DdnUVmbOqWeRunQBGq)EH{r)T|!L0kLuJ%No_%^6+_pMUm~f+ zT0@_Z^I>LO-?7od>6e*`X6WD<^D1UkOsWL>->889F!ONDWy@?y^jd_02m>W!z%z3! zDa>O`?s&Jq`sz!zLxBR1962b4KIBH_4?$od5(hD%X`3c&cb5JG1IG`8M3_<hIK0Vy z>9<SGfm59JP-_>^NEY`v=;V^rwNxO=FBYgaRq5MEPV4oekxLWt(!o%3H1tXd3}d4D zqqc3W^m3MZ1BO1Sb|hFj5Mv(}?owr9=vtk3Rf3`8xdaEnp-d)s`d$4}sS9Jl)aEjD z5`DxvxE3qjsBk#W5(zgKO9+5+h>K03->-m^=V27j(Dj0u1XKZt08D)$lj~yjkDf&s zh%j)OF_5Pl%wrg8kB%J<Vig1$I=dS7J@Lqbl_Yu~>))jc^5kcWBMAWl;h<bz?lA9U zObmTodygma3NH_{piP+EYqZCCWJ;lu^Nvs}C(X0b4`YBq)FwwIrX<{uZChKBGB+DQ z{uieGag|>w|AV-eMTT^kRAn4zzj?DS`=(g}1V^mTB~m&HRvN0#k2KwR*@Z6jqWUN{ zrNe8c)JM|L8TaK#^wER_p`eeF5*~sz^u?fohbd|3HQ5P`R~$sC*-}!#!nH4np%)f2 z-x_PF6TGmz=zD~L2m@~t21GB=tl6f>7PXIl>{ITpyWVesg9!L?^5ii&MOM45Ten** zf>&PI@2-=%9j&}y+t<GE`9F6%c3x-ek);qH$P|nm;Q<FtnEQ-|zI-BfDb}EhXnqye zj>eRNmWWj>Mp!Q`qu4tl$qEFLR&bQeRJyDt_lz|3bYfC%QG2jDltFW*7lQra3T3OU zWUJ)7SRRwR#)5jNk~V1{I(<~GSOGRhwWeJyZdb29%5%+PJGkh4hC2<ibONDOu@=P8 zm(<WHT^5&IMkia2;~A&l#?_ZMAC}F~sYjF|3`7{X@-cwM!p;T+a@NfW5`<?v=J$XB zSJ@i-nzf44uZVy~ilx~n^j;}U(vv9G>tp(G4c6|%#UXIe&@sBR#~Jf6nrA7(M=3R; zWR4{E#M`&Clrome8?*^H0nLY*dw5H|Tgvl7IIQQgk9z67)TKa}$qOuNk8o#j^t+Vt zG*eP>-)t<D5x_L=gf|&AtW8VzkuvH<7NWwaTEx(c8w*jc2m@CS28@Qpv?f00HpzVc z-5-3{-T$4h&$LfLMS@u2Gq(!AwYIgp9wNm-!AeNBhOTvY!U3~wt$(1uEGBm&tXi8* z$mE`_9MRS*1xP8QhK|WSRWaiFwGNEQUHmEZM3I=>lQOx>NbLrt{Sk#M>_m|h!d)&l zqHSv#cM+3&87u+RJJ_~1>ZU5DT=xXq<H~16aWc6lD@I+fy!K54E*I`3Jf;XSE2p>- zacKmVMU&=Y5Gii*@|xTitz`5t!a#(9w=M?qL<WtV19{pvZglT@*WI>V4KMfJ-X1fB z6XT!w{V%-mtlPG2hsEh9eDEu;z2fQ>WCrcMl;oY_VCEJRfdDgdvMtA&CLYw7aFeMj zSEcyaNtwmN(10#!uW*P{Tr#P%%#$*O!_Y6uwDKDW32`y>ltRB|W7V!oCU-N1hukRY z9xPVK*;yv{>bQLBVYDH`0V7i~0f?7tEXb))I}*wT$0RHmx`Gi@TCDWa#%-~^M;~Dg zN@-a{nA7|aCM66lIq<Z09#iOBmTrXnK;T&BD2g=nVtXsf7h&Kk!vIY6oWl5i@ZO(v zx8C{=3lUtYb@k5k=ZulFhR&XJoL_hE-fPTvP|*M%f9!{fJ<%38#g;<pMe)ppZ;|4} zZl$f4ciWocgIC5~qqNN6aF(!HE!sE?U6B+k)V7RvRvSLTh9hH$iX>=FT57pOAeYkK zZOpl)pud>m%Q2qprLPfViOFu9Qv|n!qQ&LdP#t12XE55KPjxEh8s*_090C(A9OI@! zUM$~7S@ltHI7`@Yd>`fH6QJc6d_{1OT(XY>i_W-kjE}@hYZWo{5C>^gRD^*m0t0z% zYjSeJwQ1|=bJD<HR!j*TT``9@Hm=hC^LqEhzQ^2z7<ylSpL^no$8@q@vlwKRYg)73 zoaJb1DcUv64;Vy>tB{sXx#iH%VSd5kEF)qTo81MS<W)9@D*?mg9uqEmv=z@x?qwJR zw24S@&JJg((y3wj!&ySsoM9*v`fxZ)O!nf7TCOltcp2aXu44)+BcY))Q)yoAA%h8e zLdfH^HK)T_x{!*>cG_A#Qk=%ZV6Ixb9s=QOsWu@iRcpUnQrv%~0$Rk-%P{$(A|njE zr7-~2R^r%39N(JPG%I+_b==X(dgpbL-hdm`ma+{S0xi7jVwbBDBY%GXi+1k)`qoYM zeo#ifu<1LCe}So+9>O*MS^SOVJ)MSw&Xb3UF}$?eE(IG>O*>F$RWceD;6jE%EzoFv zJA(3QNdS-MVI|<;P8hTz4+H3i!?2)GPS6`M!x`-e_F<Q!k63=Ojxl@%ZK8c)Co3`k zXL|fCi8uNce3O=9{Xwq9{zeRaG3-RoA`D!`7{KIyRwnno*WcjozWW|&=QXBrpFDBQ zwx?Zl%`Q7}t*L2^yZNSD&79mXt@;oD;P>5b9nNBLC`wT&MBEBZ?$EySn%s#LC*54} zI3bw<`wh86)d&>6I^j}QW8o-#RuR-&)(w5B)3!pzq?1M`+!^x-xjiZlZ-W}vb+wZr zu1L_{%ROvxLYuU59nZ=kb?T!a_)j_TCow^SLtTXc32zM9u-jsNq(TWS#8}YQdhL4; zmc$q9A^+a^xOSK*Y=ZH2ZZ0!L41Jl1i(ZQ`aHV4a=31dGY8<co+G{V{dij{5!Le>m z$XE8C4-E~uj*e5drp`T5qO!&u<Vtml<6Yii|9L7?;f54_E~z6eOWXWLDN85Td^wyY zTa|Nt3dyP%Ze?QVfyq57E-^5r@HM)YgIU15F}WvYG9DGxADJThU4Xf;;2CofYVkOr z6`Y6OE6;r&@Fi?Gc)3^Sv^7$I`()bp%OYXH@uS473u3Npv+P$N1+m=y({QeyF>{z( zN@ILTy)!1KxW)R&;~OvcBzx9vgs!YU5kp@Y{-U=d3|x5_fRZS&_q=({8u#k!ueu*U z{zKQedYw*H8*!7PgRZ)6l^Y%GckNrYyA#I`1ux|P5-Dy}L1y4wrJ9!s{Yo$y-W;D8 zcUgIdvkqTsIkPHs$qyJE#8lC@Cdb`aW~98^*5sX>$&I^-?5M8cGjy5<lN*<iGMN~6 zliH3qrdaOf+_qK|A2Ua?F&!V4E915`!t)|9j45V3*Zk1Dq(@hFL)hc66!p<~R-ud4 zN99QL(S(Z5B-KZ`F~JI~8%x20p(o^pPfYiqYLv9R6fyMW;VpVA!oZb_fjqq+s0(}1 zx3q6@KlvN~+KxqLo7(fwKjSuSYFBi)-R|`1Qx?m8&z>9Hq}JPUWc$<q{C~P@uiG1# z+)KfN;7&=y#IY{PfgGY<#@x$5U}39v9(uakt<F@5xtEVwu-&LeTd$_FRkkcq3QCI2 zOPApVT`Q-!l%j=K$SJOzk>YCQ6c^XFwVbw7l`B#lLKkPdS1Zci8f`BuXCJ}PYf>E5 zS{<yB6pQ#0^3g{ui_|2AyIhs47DLx6)6z){Ju87`DvA`hG_Il?5e6a*%#Q)g-*~m3 zJ$uHTIB`@AcFJA2&}lK&F~ehO@9yq06Fm28YwIk69Hrr{&ikd9%hAHKddH3%l{u1a zYtXw=%9y_;m);Fl%{j&rA{&M=^HLagM-&^ugfr1Ig2T48VrcjRr7d_nU>3nTdR8zo zSC_KGV8Mdtc|h4y5*{#BD>$##pUWc*5&BiD^tMa^?$lM~NpMyAMtzi3yZBy~q@o#b z8sh37a3?c*QH@gFLK-!ZhF+GQjS7u0@Ycrwp17F6(bT{Ew_hl_!W%bjbv=DOa>^=^ zFhcOe#IspK%T~AndDExl<W&yF1Y6~BmZ_>?iw>s9@nRUNK<Fu0L$9nDR`j++`AqJr zI+5ZklOu{07jpwToJHH6LuZ0`xlib%uy}k}8v3N`)v`=^BE@kYdfcUDnkKqTuWZ#p zq`30*5gK}hBDnR-vJq@s3m*<8Vsfui9}P-qu)|rF1cNxM==@q5N<}93&}U~<V1$9U z4F+JOFm=+e|Hkhcvu$c>vaM_96<lWT-kanwH{xE`8vBkN*XRh<VK<;~tq*+f0oT^j zYWa)ik!UIcg;viNxTHLRYvfg*kW-vEday`rH3{cW;1s9BKdREME?X;-88GxE>1)a0 z^9)_)+?rgSc{%4%T5?H?y+FM=$fPpP?(JHaGn4ybZ<PKl=psc^6Sk^gw~0zSe?6H$ zr#xKT$*LiSUMb<BQp*)}$vQd3m7|XWe~OqGdX=0GYNv!dSscRk*$4zH@FO2gMWf58 zB^q-@9nPZqv7<oy@N*Ng(c5;6{A4M;3x&fdMHq-M@V3JMOlL~&#jIg>_w?9WUox3+ zt5>g;c9t+N_qMi;?%cVv3MjMQZQi`qwCa(OVfU?XepRQKZ4FLagZ31g1Qc^S2fwg} z4r4Fxwly&f5%Dz4N$jIMNjj~fwgIP#<pkMS!)1IkwNAm%<#~<?92QcxZEG+kF_w5j zQO|_8AjGV0(lF0!{B@>!!MBC(^R)1pggAZ@DXvmns0K@s1c&k@L6V<Ch2T`nLSzDD zc>tNmK4W1@eFSeVs*i-%Ng~CCAZA1iy-Xb&6&qpTt&9PbVodFrz-w!2-2MOjPj-|l zb-v-o+uTe0pLGO~X=!P3XU?2)U-|ME9Nz5>4GpfjrOjRJzPPOBVd76~s~qv%`}%wH zCU*#VxNH!%nviiih!iIQLW~Ip5_Ssw0<>aUF|J5)@}w414_o`A&V*#e<Q|KUt5r!i zAoG5z4BqGT0*AA#j*aVZ7N;nC5>y0-t!36l{z|0^(|q^myO)1QMY@cZY-+S^ZBjcO z&g;zjavsjYdFZj!xVtFFMQj7*NQOHV9g~;)kn9}8k{!g`mmGKad!)6SASHp9dAX9g z5Ha*}^lVgSgn=sv1B74g?CNsA_)EWL=Ey^b-f$oL_^0jMastWpNQ1xkLm#tnuf%dk zv#-*b=9te*NtpNJge;Yr9hj`2mm~Bmb%IDHoldYyz$h>xm&2SJv_2s`B(<F^r4zO| zj05XO*vX2Nx|a}_WrJ5GTb;@R2ackHU!*(7<au5>eK^Z<fGxt&=^?ctDcmLE6EeM5 zilLRm&mnJeXHR%iI|SkiE@Kvs<+Nw<UZq3?6&v5eUxfz3(tQ+|+~ebHS<}l_t;O)R zcpV~!zBqoOrx6COdJH6FVxLez8NApzkfptSo2{2OH?MQ2PMvT~O{?7<cf8y1z-ep$ z?tlN?nMiRZVuyoFDkKaf%^412PUwyB6SUE`tyRTclMdu4tI6HAt*IT_l83NU4u%ef z@Sv_uu+>Xj|145mA>sGm{dKuG4fNNvgol_+?lB$AQ@(9$I-ErvRh3llD4u&@a`%kZ zw}UHb?tSk0JbYg$kw+iFsYz*L9Fbp)ar$x>dauO$`Kln}0tX>4jkaD)F&Z%AI;IWp z2pc;qs9MC(i$VC?D33WwX}~k43Z14v0ngCNyd%}y2rXB2Qwi|GdigWY>~mlJ+Lzs~ zYj?Ri9gq6_^G|CZ`blHxtfjA7)nse#H4UpRBy1_(=|)3E-TdJ!nA`^j2CTff<80-~ z*7%j#IH5DWCo8wQZlbDbK<8=h%8M^7!RCatO)XvYN((G^q`0`&T1N$QIKL0w8fEqI ztixXmD_Q(^mJ22%{;X2LD6`!}iZiFU;>##5CtmLI?v`IbMv_VwO9+C!0$#Q-Sm7&% zpe2E;M`NKJhqF*`*2`r%x3Ms!@i(d^5@H3&>n*4om%;|xZ!~lXY4j(#3ZDmWmGn1a z=p~`+>dx#5s~=O9(xiwc#(hkqgaob9@tSB^mNZdF7Sr3lMSrd|4EVk!Lfi{4?RW2a z=esS;>%OO+aP2yYt+BDmJ@@RsS<PzOwABuEnRT;>9|(fMwl!(y2}M_v_D7-)VJ3#9 z9b+mJ?v%pJPG&hjtQ_WCYK;Sw;3yDFc50$*+t!$I1eVd+WYW*|7j<3j3>R}0so*PO zEx^cSC*7pB$Duig?->v<^bDb21u>IRFcyPj%>uEZC9!fb^h^L}O2O$v9&f&)^pQf+ z8=P!zQi6(Z6wyaHjnfMGmM}kp{tW1<FSnFy#L!E@)>WL>6ZU>-O*lz0xK18F?3&lN z$q^^!PIq*;ZCkdwqel;0{BMrcgt^1;*XdZzu!-_jjOw>k(^$uh%Z%H5@x1#F|Hq%I zZaH`I<Z*Y;Js)zI-iL+;-S+J}+%31fLw!BrSX2MM|I;71UAu1-u@4w>u?>PuVc|hg z#N-aOO9*z@^c6S|ak(0~s&u8xW>WednD&=XDi>%aL|B>tA3@;0d7ajqonpq9E3gcV zAuElqKB;wW8QrV=mZ-2fx-f_4TobF1$z6C8?(Cd$DqsnK0fvL${(kT)5Hb8cpZC&d zurB<-D{>WbT$G1{oZ<pFK5v*;F?0z-bxCavQy-OU4L#^14$#rI%$&AmS|9liD#V#@ zo3Nn4AJeka<fLL4jPqU3Y(jV(`n<(mBZgiap04U#Y+br2$EQ8JcDs*$^rzi1F>N%d zUAy+!8Y;~EzEA#)Z8u_{GUnJdYuCCHCyv|JqnBTOS)R+)5mUbcM+u87Xv(V;$Nku` z!^UtqsO2V3SCffycx1@pwjV!!)Xqp}T#&{j&=Kh^Sez-Y;h1yraz{XfW=+V{&)6%6 zFo;teal*BuOr}o`G6|S`aWyR^7YtqDOGSt+Dme~UV)9`pEVpcHsuq(NSNV20OZZ>} zAtxJvoZ=)rNYpbp=6wyf3N-}`opb9GQe{Wgt|Y=ys4#qCs=L~QxBjSvuK-Bc?Fqyj z9c%8=`lFF&yAt5fizmGx9K=+=Fj^lm^u@9Lws~rjqQ*Gd)6Q$IvlF-=^tCm$u5H6c zw?_Mu$HvFp&9~fcOuV<Z+wI(Oty{N#y*r~LI9U(nIL>kq=eJEKT!x0yUwo=1kbUtB z|J7=MRp!}eo>;IpY+plDH(!ck>7wYCH@O2ZqhKPO<TmZ)UTirF)@t?x*3gqWZOzq; zxPG1FCEeMCh*0^GZxdVbbO6kdw9O1_wX>_T;$H$|>$7ZIt4<8t8ak2U{FbP&;29jj z(uOtRYed`DGOoW&k>aQ`r@GbTMqNUY;`*hbR^a9C*PB<2wSoc=uw-(t*5NsWvN)KA z9v0F(7#j-`QYFvTC{o;r0_F^xkg~MMi||>Kkq3ShDb8avx~>!htcw#+<lq~x%L!_Y z5&4wP560x$ujpVf_sNM#g-;Cj4-e{oeO-ga{boNi#2`vn9tN!M#9+I+yWQ{o{=e4& zEzR!LS6^~9T6Q7G41N;_55A^@TCTUKaeaM#?n__#yxXz!TA8v-Gr7a*0+V}{ZCNA8 z%ygu<kWmL)O~`CqsXgyaSw*B{O*nK`i&hq_p{J7)QgSuczOrcO!VlVCjkb6tV>LQ% zQ<|;t8TPzGOU#HF)rz^s;}u#((DH~hTj0P03$JupAz$=$@%ea8nm-R3x|p~acv?~R zR#zypS{WER?Fo)g&A7BYBUdTxFs&)9Q&7v5{q=akwIQuYaZY2QQq0{f=t~qGlbwAk zt7B@SNO4PGDtcTL1~8+pmMQ(j$rENqzu4Vl>*K90>lHwx+n75V8Cp0oxF>Y#7FUvK zTO#Z!InD7sN>?5RV6rtjl?)9U6L>>IqnXn=|D3~FI2{dtiN?lN@^oLVPM2<l5U2HT zqwvKxIZs7dx5w;`07*F-IK`GwbUsLSTpACa$1uLY<X-gaC1eyNRo~#4x!p61#oFZA z$zpkCR{<px?G-q_O@SEg%bJ~kxxXll<5B}SiX^D-v)9m<Tk`DpV6+m2)Gq-ngQM@| zP|yuBcvGX|0I=~EF5XnA%^!w9oOz_*j5+#k$z%dkAT%wRcZm#<$$bd~y`3I25Mv^+ zE$i1Ab4DAh79oew<1CjHu}4$KOv;tSGb74xCq!LEZAA#<L-e*k`}03_BLlszR@>6( z(}CVDosr(``YbA(C>2SLMXhb^3K!d5vX;YG$;j&*SO|m&iPI+cp!CrGV#Z8r+gf$S zn4*IzXbGO^s&O&&wfIViA*)ST8j`6oZHcOsb_=5d3e39jI$x=U41I3R3f~u#(CeIs zo=A+z<ethO&Jqq2D6E;m5j3qf%ULq(x-`uz%d%~aeFq%QGVZc6xp!$<g#Go5vbmTj ztlx6JTaQQxO(aKM51MdU0?Qzn$iG1iNF`+2mzATa!&%hLY+FmC6h$WY<#ccK&SDsV zxO>MZPi(mdGbcfm`OP&-R|f{@XX3ek>?0p{YuB!`!&xADYu7fL;I@DN^KR$P>)haA zzgcNs*#ClCB`qEYw^9;gCds~L#d62r0<FKCPH}{LO$k=@RJF7v>RN^|t2V*VQ!=ww z<*J1f=0+)4DK0NXCdAMyI6+R)+tQkkOGhCquI$2GXwJA0R%km}Oy1gQea!zLWZVG< zZ~96xv{Y(JXQI~_oU$-<bqL$mDs-?-^%N%eyl`6B@DRS!M@jWjN_|wRv5=F`gDr~` z%5C$(5krsbJoKD|PLte3Uza;pBMp5%1V{HG47^P+fN%zL9Uba3Q+s>+7GvaneZ2}c zv&kaHVUoZ0+TE6KczDP?`pEa(#tm)8?3bcdg=mD}6>eKYa10{Fl~PJ!iSvI44q6$m zU6mCv*I<$2%EZutB@H%Rp`bEi=4IQqCOE<RtSk>|T~hA*n8l})=K=mY{h)*|`F9PD z%8nCRjZnS%4nD(8SQo_nq{&t*SWY8jp-g@bCSghFs#Zhl1V@}R+@=(i7W5GUgtli2 zR8hj6Ozsmp)F(Qer2vu9*9Zd<29}2b9N##I<qLoPd3WuOon{6{b7sfGxcntBjX(Uz z58S$S>%|}|UDMhY*VEf$mYPx^qM^gY@u(+KT-i<T^3<NJoRrC33{dQ2CA@BKJA<-< zzX&OD1!3t?CJ1`itPj|f$ywX+SVkuIDL168c)m?M4=WiQVJa(aQ9Q<7)NTR1Wx{6Y zUPG^z7RzCyT@r>QdzCz<ifT8F!g4a1aouzopO6zpB4FX=o=_hR$->1}yrmr%H7+$T zs^sx#g3}7?7HQ}qcWhK#gn=sw129>%bePhex8Gq7aO2~n=J;5xweGaeEPvzR8x}n1 zseM1PrnR=Uo0)kziVm>&=#O2ee}{-Pv?424nvdwX8`Y;mpYYAO0wiF-(0^@pmcXJf zx*K|eS)jog9N8Y&@�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 V*t5h|S}DlSMIA%!VojSz{{xc;=hpxL literal 0 HcmV?d00001 diff --git a/docs/deploy/config-guides/img/weaviate-sample-dashboard-startup.png b/docs/deploy/config-guides/img/weaviate-sample-dashboard-startup.png new file mode 100644 index 0000000000000000000000000000000000000000..aae320f17d23753b9fe0b5f20beba500f7c2f0cf GIT binary patch literal 57628 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 BnI`}M literal 0 HcmV?d00001 diff --git a/docs/deploy/config-guides/img/weaviate-sample-dashboard-usage.png b/docs/deploy/config-guides/img/weaviate-sample-dashboard-usage.png new file mode 100644 index 0000000000000000000000000000000000000000..09706dca1037fe3ef25049e015deab18b0a24470 GIT binary patch literal 38989 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 Mos(^e_0@a-1DFS1Jpcdz literal 0 HcmV?d00001 diff --git a/docs/deploy/config-guides/img/weaviate-sample-dashboard-vector.png b/docs/deploy/config-guides/img/weaviate-sample-dashboard-vector.png new file mode 100644 index 0000000000000000000000000000000000000000..aa3e28a19ebd7ab5462bcc9c90b61161991fa53a GIT binary patch literal 64636 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 literal 0 HcmV?d00001 diff --git a/docs/deploy/config-guides/monitoring.md b/docs/deploy/config-guides/monitoring.md new file mode 100644 index 00000000..4fd4d77e --- /dev/null +++ b/docs/deploy/config-guides/monitoring.md @@ -0,0 +1,141 @@ +--- +title: Monitoring +sidebar_position: 50 +image: og/docs/configuration.jpg +# tags: ['configuration', 'operations', 'monitoring', 'observability'] +--- + +Weaviate can expose Prometheus-compatible metrics for monitoring. A standard +Prometheus/Grafana setup can be used to visualize metrics on various +dashboards. + +Metrics can be used to measure request latencies, import +speed, time spent on vector vs object storage, memory usage, application usage, +and more. + +## Configure Monitoring + +### Enable within Weaviate + +To tell Weaviate to collect metrics and expose them in a Prometheus-compatible +format, all that's required is to set the following environment variable: + +```sh +PROMETHEUS_MONITORING_ENABLED=true +``` + +By default, Weaviate will expose the metrics at `<hostname>:2112/metrics`. You +can optionally change the port to a custom port using the following environment +variable: + +```sh +PROMETHEUS_MONITORING_PORT=3456 +``` + +### Scrape metrics from Weaviate + +Metrics are typically scraped into a time-series database, such as Prometheus. +How you consume metrics depends on your setup and environment. + +The [Weaviate examples repo contains a fully pre-configured setup using +Prometheus, Grafana and some example +dashboards](https://github.com/weaviate/weaviate-examples/tree/main/monitoring-prometheus-grafana). +You can start up a full-setup including monitoring and dashboards with a single +command. In this setup the following components are used: + +* Docker Compose is used to provide a fully-configured setup that can be + started with a single command. +* Weaviate is configured to expose Prometheus metrics as outlined in the + section above. +* A Prometheus instance is started with the setup and configured to scrape + metrics from Weaviate every 15s. +* A Grafana instance is started with the setup and configured to use the + Prometheus instance as a metrics provider. Additionally, it runs a dashboard + provider that contains a few sample dashboards. + +### Multi-tenancy + +When using multi-tenancy, we suggest setting the `PROMETHEUS_MONITORING_GROUP` [environment variable](docs/weaviate/config-refs/env-vars.md) as `true` so that data across all tenants are grouped together for monitoring. + +## Obtainable Metrics + +The list of metrics that are obtainable through Weaviate's metric system is +constantly being expanded. The complete list is in the [`prometheus.go`](https://github.com/weaviate/weaviate/blob/main/usecases/monitoring/prometheus.go) source code file. + +This page describes some noteworthy metrics and their uses. + +Typically metrics are quite granular, as they can always be aggregated later +on. For example if the granularity is "shard", you could aggregate all "shard" +metrics of the same "class" to obtain a class metrics, or aggregate all metrics +to obtain the metric for the entire Weaviate instance. + +| Metric | Description | Labels | Type | +| --- | --- | --- | --- | +| `batch_durations_ms` | Duration of a single batch operation in ms. The `operation` label further defines what operation as part of the batch (e.g. object, inverted, vector) is being used. Granularity is a shard of a class. | `operation`, `class_name`, `shard_name` | Histogram | +| `batch_delete_durations_ms` | Duration of a batch delete in ms. The `operation` label further defines what operation as part of the batch delete is being measured. Granularity is a shard of a class | `class_name`, `shard_name` | Histogram | +| `objects_durations_ms` | Duration of an individual object operation, such as `put`, `delete`, etc. as indicated by the `operation` label, also as part of a batch. The `step` label adds additional precisions to each `operation`. Granularity is a shard of a class. | `class_name`, `shard_name` | Histogram | +| `object_count` | Numbers of objects present. Granularity is a shard of a class | `class_name`, `shard_name` | Gauge | +| `async_operations_running` | Number of currently running async operations. The operation itself is defined through the `operation` label. | `operation`, `class_name`, `shard_name`, `path` | Gauge | +| `lsm_active_segments` | Number of currently present segments per shard. Granularity is shard of a class. Grouped by `strategy`.| `strategy`, `class_name`, `shard_name`, `path` | Gauge | +| `lsm_bloom_filter_duration_ms` | Duration of a bloom filter operation per shard in ms. Granularity is shard of a class. Grouped by `strategy`. | `operation`, `strategy`, `class_name`, `shard_name` | Histogram | +| `lsm_segment_objects` | Number of entries per LSM segment by level. Granularity is shard of a class. Grouped by `strategy` and `level`. | `operation`, `strategy`, `class_name`, `shard_name`, `path`, `level` | Gauge | +| `lsm_segment_size` | Size of LSM segment by level and unit. | `strategy`, `class_name`, `shard_name`, `path`, `level`, `unit` | Gauge | +| `lsm_segment_count` | Number of segments by level | `strategy`, `class_name`, `shard_name`, `path`, `level` | Gauge | +| `vector_index_tombstones` | Number of currently active tombstones in the vector index. Will go up on each incoming delete and go down after a completed repair operation. | `class_name`, `shard_name` | Gauge | +| `vector_index_tombstone_cleanup_threads` | Number of currently active threads for repairing/cleaning up the vector index after deletes have occurred. | `class_name`, `shard_name` | Gauge | +| `vector_index_tombstone_cleaned` | Total number of deleted and removed vectors after repair operations. | `class_name`, `shard_name` | Counter | +| `vector_index_operations` | Total number of mutating operations on the vector index. The operation itself is defined by the `operation` label. | `operation`, `class_name`, `shard_name` | Gauge | +| `vector_index_size` | The total capacity of the vector index. Typically larger than the number of vectors imported as it grows proactively. | `class_name`, `shard_name` | Gauge | +| `vector_index_maintenance_durations_ms` | Duration of a sync or async vector index maintenance operation. The operation itself is defined through the `operation` label. | `opeartion`, `class_name`, `shard_name` | Histogram | +| `vector_index_durations_ms` | Duration of regular vector index operation, such as insert or delete. The operation itself is defined through the `operation` label. The `step` label adds more granularity to each operation. | `operation`, `step`, `class_name`, `shard_name` | Histogram | +| `startup_durations_ms` | Duration of individual startup operations in ms. The operation itself is defined through the `operation` label. | `operation`, `class_name`, `shard_name` | Histogram | +| `startup_diskio_throughput` | Disk I/O throughput in bytes/s at startup operations, such as reading back the HNSW index or recovering LSM segments. The operation itself is defined by the `operation` label. | `operation`, `step`, `class_name`, `shard_name` | Histogram | +| `requests_total` | Metric that tracks all user requests to determine if it was successful or failed. | `api`, `query_type`, `class_name` | `GaugeVec` | +| `index_queue_push_duration_ms` | Duration of pushing one or more vectors to the index queue. | `class_name`, `shard_name`, `target_vector` | `Summary` | +| `index_queue_delete_duration_ms` | Duration of deleting one or more vectors from the index queue and the underlying index. | `class_name`, `shard_name`, `target_vector` | `Summary` | +| `index_queue_preload_duration_ms` | Duration of preloading un-indexed vectors to the index queue. | `class_name`, `shard_name`, `target_vector` | `Summary` | +| `index_queue_preload_count` | Number of vectors preloaded to the index queue. | `class_name`, `shard_name`, `target_vector` | `Gauge` | +| `index_queue_search_duration_ms` | Duration of searching for vectors in the index queue and the underlying index. | `class_name`, `shard_name`, `target_vector` | `Summary` | +| `index_queue_paused` | Whether the index queue is paused. | `class_name`, `shard_name`, `target_vector` | `Gauge` | +| `index_queue_size` | Number of vectors in the index queue. | `class_name`, `shard_name`, `target_vector` | `Gauge` | +| `index_queue_stale_count` | Number of times the index queue has been marked as stale. | `class_name`, `shard_name`, `target_vector` | `Counter` | +| `index_queue_vectors_dequeued` | Number of vectors sent to the workers per tick. | `class_name`, `shard_name`, `target_vector` | `Gauge` | +| `index_queue_wait_duration_ms` | Duration of waiting for the workers to finish. | `class_name`, `shard_name`, `target_vector` | `Summary` | + +Extending Weaviate with new metrics is very easy. To suggest a new metric, see the [contributor guide](/docs/contributor-guide). + +### Versioning + +Be aware that metrics do not follow the semantic versioning guidelines of other Weaviate features. Weaviate's main APIs are stable and breaking changes are extremely rare. Metrics, however, have shorter feature lifecycles. It can sometimes be necessary to introduce an incompatible change or entirely remove a metric, for example, because the cost of observing a specific metric in production has grown too high. As a result, it is possible that a Weaviate minor release contains a breaking change for the Monitoring system. If so, it will be clearly highlighted in the release notes. + +## Sample Dashboards + +Weaviate does not ship with any dashboards by default, but here is a list of +dashboards being used by the various Weaviate teams, both during development, +and when helping users. These do not come with any support, but may still be +helpful. Treat them as inspiration to design your own dashboards which fit +your uses perfectly: + +| Dashboard | Purpose | Preview | +| --- | --- | --- | +| [Importing Data Into Weaviate](https://github.com/weaviate/weaviate/blob/master/tools/dev/grafana/dashboards/importing.json) | Visualize speed of import operations (including its components, such as object store, inverted index, and vector index). |  | +| [Object Operations](https://github.com/weaviate/weaviate/blob/master/tools/dev/grafana/dashboards/objects.json) | Visualize speed of whole object operations, such as GET, PUT, etc. |  | +| [Vector Index](https://github.com/weaviate/weaviate/blob/master/tools/dev/grafana/dashboards/vectorindex.json) | Visualize the current state, as well as operations on the HNSW vector index |  | +| [LSM Stores](https://github.com/weaviate/weaviate/blob/master/tools/dev/grafana/dashboards/lsm.json) | Get insights into the internals (including segments) of the various LSM stores within Weaviate. |  | +| [Startup](https://github.com/weaviate/weaviate/blob/master/tools/dev/grafana/dashboards/startup.json) | Visualize the startup process, including recovery operations |  | +| [Usage](https://github.com/weaviate/weaviate/blob/master/tools/dev/grafana/dashboards/usage.json) | Obtain usage metrics, such as number of objects imported, etc.|  | +| [Aysnc index queue](https://github.com/weaviate/weaviate/blob/main/tools/dev/grafana/dashboards/index_queue.json) | Observe index queue activity |  | + +## `nodes` API Endpoint + +To get collection details programmatically, use the [`nodes`](../config-refs/nodes.md) REST endpoint. + +import APIOutputs from '/_includes/rest/node-endpoint-info.mdx'; + +<APIOutputs /> + +## Questions and feedback + +import DocsFeedback from '/_includes/docs-feedback.mdx'; + +<DocsFeedback/> diff --git a/docs/deploy/config-guides/persistence.md b/docs/deploy/config-guides/persistence.md new file mode 100644 index 00000000..5649bf34 --- /dev/null +++ b/docs/deploy/config-guides/persistence.md @@ -0,0 +1,112 @@ +--- +title: Persistence +image: og/docs/configuration.jpg +--- + +import SkipLink from '/src/components/SkipValidationLink' + +When running Weaviate with Docker or Kubernetes, you can persist its data by mounting a volume to store the data outside of the containers. Doing so will cause the Weaviate instance to also load the data from the mounted volume when it is restarted. + +Note that Weaviate now offers native backup modules starting with `v1.15` for single-node instances, and `v1.16` for multi-node instances. For older versions of Weaviate, persisting data as described here will allow you to back up Weaviate. + +## Docker Compose + +### Persistence + +When running Weaviate with Docker Compose, you can set the `volumes` variable under the `weaviate` service and a unique cluster hostname as an environment variable. + +```yaml +services: + weaviate: + volumes: + - /var/weaviate:/var/lib/weaviate + environment: + CLUSTER_HOSTNAME: 'node1' + PERSISTENCE_DATA_PATH: '/var/lib/weaviate' +``` + +* About the volumes + * `/var/weaviate` is the location where you want to store the data on the local machine + * `/var/lib/weaviate` The value after the colon (:) is the storage location inside the container. This value must match the PERSISTENCE_DATA_PATH variable. +* About the hostname + * `CLUSTER_HOSTNAME` can be any name + +In the case you want a more verbose output, you can change the environment variable for the `LOG_LEVEL` + +```yaml +services: + weaviate: + environment: + LOG_LEVEL: 'debug' +``` + +A complete example of a Weaviate without modules but with an externally mounted volume and more verbose output: + +```yaml +--- +services: + weaviate: + command: + - --host + - 0.0.0.0 + - --port + - '8080' + - --scheme + - http + image: cr.weaviate.io/semitechnologies/weaviate:||site.weaviate_version|| + ports: + - 8080:8080 + - 50051:50051 + restart: on-failure:0 + volumes: + - /var/weaviate:/var/lib/weaviate # <== set a volume here + environment: + QUERY_DEFAULTS_LIMIT: 25 + AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED: 'true' + PERSISTENCE_DATA_PATH: '/var/lib/weaviate' + ENABLE_API_BASED_MODULES: 'true' + CLUSTER_HOSTNAME: 'node1' # <== this can be set to an arbitrary name +... +``` + +### Backups + +See [Backups](./backups.md). + +## Kubernetes + +For Kubernetes setup, the only thing to bear in mind is that Weaviate needs a `PersistentVolumes` through `PersistentVolumeClaims` ([more info](../installation-guides/k8s-installation.md#requirements)) but the Helm chart is already configured to store the data on an external volume. + +## Disk Pressure Warnings and Limits + +Starting with `v1.12.0` there are two levels of disk usage notifications and actions configured through environment variables. Both variables are optional. If not set they default to the values outlined below: + +| Variable | Default Value | Description | +| --- | --- | --- | +| `DISK_USE_WARNING_PERCENTAGE` | `80` | If disk usage is higher than the given percentage a warning will be logged by all shards on the affected node's disk | +| `DISK_USE_READONLY_PERCENTAGE` | `90` | If disk usage is higher than the given percentage all shards on the affected node will be marked as `READONLY`, meaning all future write requests will fail. | + +If a shard was marked `READONLY` due to disk pressure and you want to mark the +shard as ready again (either because you have made more space available or +changed the thresholds) you can use the <SkipLink href="/docs/weaviate/api/rest#tag/schema/get/schema/%7BclassName%7D/shards">Shards API</SkipLink> to do so. + +## Disk access method + +:::info Added in `v1.21` +::: + +Weaviate maps data on disk to memory. To configure how Weaviate uses virtual memory, set the `PERSISTENCE_LSM_ACCESS_STRATEGY` environment variable. The default value is `mmap`. Use `pread` to as an alternative. + +The two functions reflect different under-the-hood memory management behaviors. `mmap` uses a memory-mapped file, which means that the file is mapped into the virtual memory of the process. `pread` is a function that reads data from a file descriptor at a given offset. + +In general, `mmap` may be a preferred option with memory management benefits. However, if you experience stalling situations under heavy memory load, we suggest trying `pread` instead. + + +## Related pages +- [Configuration: Backups](docs/weaviate/configuration/backups.md) + +## Questions and feedback + +import DocsFeedback from '/_includes/docs-feedback.mdx'; + +<DocsFeedback/> diff --git a/sidebars.js b/sidebars.js index 0fa7fd5e..a2652ab3 100644 --- a/sidebars.js +++ b/sidebars.js @@ -432,10 +432,10 @@ const sidebars = { collapsible: true, collapsed: true, items: [ - "deploy/installation-guides/k8s-installation", - "deploy/installation-guides/docker-installation", - "deploy/installation-guides/gcp-installation", - "deploy/installation-guides/aws-installation", + "deploy/config-guides/authentication", + "deploy/config-guides/modules", + "deploy/config-guides/monitoring", + "deploy/config-guides/persistence", ], }, ], From e2c7f1dde2a0d55cd155b7ff6513079d9d1ea2ef Mon Sep 17 00:00:00 2001 From: DanielleWashington <shakara.washington02@gmail.com> Date: Sat, 5 Apr 2025 22:02:43 -0400 Subject: [PATCH 18/39] adding k8s cli doc --- docs/deploy/installation-guides/aws-cli.md | 92 +++++++++++++++++++++ docs/deploy/production/Kubernetes/index.mdx | 2 +- docs/deploy/production/index.mdx | 1 + sidebars.js | 1 + 4 files changed, 95 insertions(+), 1 deletion(-) create mode 100644 docs/deploy/installation-guides/aws-cli.md diff --git a/docs/deploy/installation-guides/aws-cli.md b/docs/deploy/installation-guides/aws-cli.md new file mode 100644 index 00000000..84a78efb --- /dev/null +++ b/docs/deploy/installation-guides/aws-cli.md @@ -0,0 +1,92 @@ +--- +title: AWS CLI Installation +description: Deploy Weaviate on EKS using the AWS CLI +--- + +## Prerequisites + +- Helm installed +- The AWS CLI installed with the latest version +- `kubectl` installed +- `eksctl` installed + +#### Verify your tools + +Before starting, ensure that your tools are installed: + +```bash +helm version +aws --version +kubectl version +eksctl version +``` + +### Step 1: Create the Cluster + +```bash +eksctl create cluster --name <your-cluster-name-here> --region <your-region-here> --nodegroup-name <nodegroup-name-here> --nodes 3 --nodes-min 2 --nodes-max 4 --node-type t3.medium +``` + +This creates an EKS cluster within your speciifed region with an autoscaling node group. There are 3 nodes for high availability and having autoscaling enabled allows for the cluster to dynamically adjust resources based on demand. + +#### Enable `kubectl` to interact with the newly created cluster: + +```bash +aws eks --region <your-region> update-kubeconfig --name <your-cluster-name> +``` + +#### Verify that the node has been created and that you are able to interact with the cluster: + +```bash +kubectl get nodes +``` + +### Step 2: Enable Persistent Storage on the Cluster + +Peristent storage is required for running Weaviate on a Kubernetes cluster, it ensures that data is retained should a pod restart, a node crashes, or a cluster scales up or down. + +```bash +eksctl create addon --name aws-ebs-csi-driver --cluster <your-cluster-name> --region <your-region> --service-account-role-arn <arn:aws:iam::<your-account-id>:role/AmazonEKS_EBS_CSI_DriverRole> +``` + +The above adds the EBS CSI Driver add-on for your cluster. After adding the add-on, a storage class and `PersistentValueClaim` is needed to enable persistent storage. + +See [Persistent storage for Kubernetes](https://aws.amazon.com/blogs/storage/persistent-storage-for-kubernetes/) for more information. + +### Step 3: Add Weaviate to EKS + +#### Create a Weaviate namespace: + +```bash +kubectl create namespace weaviate +``` + +#### Add the Weaviate Helm chart: + +```bash +helm repo add weaviate https://weaviate.github.io/weaviate-helm +helm repo update +``` + +After you've added the Weaviate Helm chart, configure the `values.yaml` file before you deploy Weaviate on the cluster. + + +#### Deploy Weaviate on your cluster: + +```bash +helm upgrade --install weaviate weaviate/weaviate \ + --namespace weaviate \ + --values values.yaml \ +``` + +#### Verify that Weaviate has been deployed: + +```bash +kubectl get pods +``` + +## Questions and feedback + +import DocsFeedback from '/_includes/docs-feedback.mdx'; + +<DocsFeedback/> diff --git a/docs/deploy/production/Kubernetes/index.mdx b/docs/deploy/production/Kubernetes/index.mdx index 8c887185..d9d9bca9 100644 --- a/docs/deploy/production/Kubernetes/index.mdx +++ b/docs/deploy/production/Kubernetes/index.mdx @@ -1,6 +1,6 @@ --- -sidebar_label: "Kubernetes in Production" +sidebar_label: "Kubernetes" --- diff --git a/docs/deploy/production/index.mdx b/docs/deploy/production/index.mdx index 1c61ce9b..4f2c75c0 100644 --- a/docs/deploy/production/index.mdx +++ b/docs/deploy/production/index.mdx @@ -8,6 +8,7 @@ sidebar_position: 0 # Production Environments Deploying Weaviate in a production environment requires careful planning to ensure stability, security, and performance. +Currently, the only supported method of deploying Weaviate in a production environment is through Kubernetes. Unlike development or testing environments, a production instance must be resilient, scalable, and optimized for real-world workloads. ## Key Aspects of a Production Environments diff --git a/sidebars.js b/sidebars.js index 708d108d..0d642115 100644 --- a/sidebars.js +++ b/sidebars.js @@ -427,6 +427,7 @@ const sidebars = { "deploy/installation-guides/docker-installation", "deploy/installation-guides/gcp-installation", "deploy/installation-guides/aws-installation", + "deploy/installation-guides/aws-cli", ], }, { From b2d5e3ac9b12a72288e223b7a76967098340b293 Mon Sep 17 00:00:00 2001 From: DanielleWashington <dwashington.100292@gmail.com> Date: Mon, 7 Apr 2025 09:07:44 -0400 Subject: [PATCH 19/39] adding placeholders --- docs/deploy/config-guides/async-rep.md | 1 + docs/deploy/faqs/index.md | 0 docs/deploy/faqs/troubleshooting.md | 0 .../installation-guides/aws-installation.md | 6 +-- .../installation-guides/helm-installation.md | 1 + .../monitoring-obs/grafana-prometheus.md | 0 docs/deploy/monitoring-obs/index.md | 0 .../scaling-strategies/horizontal-scaling.md | 1 + docs/deploy/scaling-strategies/index.md | 1 + docs/deploy/scaling-strategies/multi-node.md | 1 + docs/weaviate/installation/kubernetes.md | 49 ++++++++++++------- secondaryNavbar.js | 5 +- sidebars.js | 23 +++++++++ 13 files changed, 65 insertions(+), 23 deletions(-) create mode 100644 docs/deploy/config-guides/async-rep.md create mode 100644 docs/deploy/faqs/index.md create mode 100644 docs/deploy/faqs/troubleshooting.md create mode 100644 docs/deploy/installation-guides/helm-installation.md create mode 100644 docs/deploy/monitoring-obs/grafana-prometheus.md create mode 100644 docs/deploy/monitoring-obs/index.md create mode 100644 docs/deploy/scaling-strategies/horizontal-scaling.md create mode 100644 docs/deploy/scaling-strategies/index.md create mode 100644 docs/deploy/scaling-strategies/multi-node.md diff --git a/docs/deploy/config-guides/async-rep.md b/docs/deploy/config-guides/async-rep.md new file mode 100644 index 00000000..aac65027 --- /dev/null +++ b/docs/deploy/config-guides/async-rep.md @@ -0,0 +1 @@ +# Async Replication \ No newline at end of file diff --git a/docs/deploy/faqs/index.md b/docs/deploy/faqs/index.md new file mode 100644 index 00000000..e69de29b diff --git a/docs/deploy/faqs/troubleshooting.md b/docs/deploy/faqs/troubleshooting.md new file mode 100644 index 00000000..e69de29b diff --git a/docs/deploy/installation-guides/aws-installation.md b/docs/deploy/installation-guides/aws-installation.md index 6d88d782..cfd7a13e 100644 --- a/docs/deploy/installation-guides/aws-installation.md +++ b/docs/deploy/installation-guides/aws-installation.md @@ -65,7 +65,7 @@ If you prefer a video, you can watch the following walkthrough. This video is re #### Some settings may not be changed after launch Not all settings may be changed after launch. For example, these settings are currently not changeable after launch: -- weaviatePVCSize +- helmstoragesize - albDriver - ebsDriver - vpcUseDefault @@ -77,8 +77,8 @@ Not all settings may be changed after launch. For example, these settings are cu #### Suggested configurations - The default values should be suitable for a majority of cases. -- `weaviatePVCSize`: For production environments, at least 500GB per StatefulSet pod is recommended. (Smaller disks may be sufficient for dev environments.) -- `weaviateAuthType`: We recommend not running Weaviate with anonymous access. We suggest setting it to `apikey` and setting a key, for example by executing `pwgen -A -s 32` to generate a random string. +- `helmstoragesize`: For production environments, at least 500GB per StatefulSet pod is recommended. (Smaller disks may be sufficient for dev environments.) +- `helmauthenticationtype`: We recommend not running Weaviate with anonymous access. We suggest setting it to `apikey` and setting a key, for example by executing `pwgen -A -s 32` to generate a random string. ::: Once you open the CloudFormation template, you should see a set of options similar to below. diff --git a/docs/deploy/installation-guides/helm-installation.md b/docs/deploy/installation-guides/helm-installation.md new file mode 100644 index 00000000..56178afe --- /dev/null +++ b/docs/deploy/installation-guides/helm-installation.md @@ -0,0 +1 @@ +# Placeholder for Helm Chart Installation \ No newline at end of file diff --git a/docs/deploy/monitoring-obs/grafana-prometheus.md b/docs/deploy/monitoring-obs/grafana-prometheus.md new file mode 100644 index 00000000..e69de29b diff --git a/docs/deploy/monitoring-obs/index.md b/docs/deploy/monitoring-obs/index.md new file mode 100644 index 00000000..e69de29b diff --git a/docs/deploy/scaling-strategies/horizontal-scaling.md b/docs/deploy/scaling-strategies/horizontal-scaling.md new file mode 100644 index 00000000..7bffcb57 --- /dev/null +++ b/docs/deploy/scaling-strategies/horizontal-scaling.md @@ -0,0 +1 @@ +# Horizontal Scaling Placeholder \ No newline at end of file diff --git a/docs/deploy/scaling-strategies/index.md b/docs/deploy/scaling-strategies/index.md new file mode 100644 index 00000000..7cc631f4 --- /dev/null +++ b/docs/deploy/scaling-strategies/index.md @@ -0,0 +1 @@ +# Placeholder Scaling Strategy Landing Page \ No newline at end of file diff --git a/docs/deploy/scaling-strategies/multi-node.md b/docs/deploy/scaling-strategies/multi-node.md new file mode 100644 index 00000000..064cb77b --- /dev/null +++ b/docs/deploy/scaling-strategies/multi-node.md @@ -0,0 +1 @@ +# Multi-Node Placeholder \ No newline at end of file diff --git a/docs/weaviate/installation/kubernetes.md b/docs/weaviate/installation/kubernetes.md index c9b43685..46269b75 100644 --- a/docs/weaviate/installation/kubernetes.md +++ b/docs/weaviate/installation/kubernetes.md @@ -1,5 +1,5 @@ --- -title: Kubernetes +title: Installing Kubernetes sidebar_position: 3 image: og/docs/installation.jpg # tags: ['installation', 'Kubernetes'] @@ -9,7 +9,11 @@ image: og/docs/installation.jpg For a tutorial on how to use [minikube](https://minikube.sigs.k8s.io/docs/) to deploy Weaviate on Kubernetes, see the Weaviate Academy course, [Weaviate on Kubernetes](../../academy/deployment/k8s/index.md). ::: -## Requirements +:::info Deploying to Production +If looking for details and best practices for deploying Weaviate in production, see [Weaviate in Production](docs/deploy/production/Kubernetes/k8s-poc.md) +::: + +## Prerequisites * A recent Kubernetes Cluster (at least version 1.23). If you are in a development environment, consider using the kubernetes cluster that is built into Docker desktop. For more information, see the [Docker documentation](https://docs.docker.com/desktop/kubernetes/). * The cluster needs to be able to provision `PersistentVolumes` using Kubernetes' `PersistentVolumeClaims`. @@ -66,12 +70,11 @@ Local models, such as `text2vec-transformers`, `qna-transformers`, and `img2vec #### Resource limits -Starting in Helm chart version 17.0.1, constraints on module resources are commented out to improve performance. To constrain resources for specific modules, add the constraints in your `values.yaml` file. +In an effort to improve performance, constraints on module resources are commented out. To constrain resources for specific modules, add the constraints in your `values.yaml` file. #### gRPC service configuration -Starting in Helm chart version 17.0.0, the gRPC service is enabled by default. If you use an older Helm chart, edit your `values.yaml` file to enable gRPC. - +gRPC service is enabled by default. If using an older Helm chart, edit your `values.yaml` file to enable gRPC. Check that the `enabled` field is set to `true` and the `type` field to `LoadBalancer`. These settings allow you to access the [gRPC API](https://weaviate.io/blog/grpc-performance-improvements) from outside the Kubernetes cluster. ```yaml @@ -87,7 +90,7 @@ grpcService: #### Authentication and authorization -An example configuration for authentication is shown below. +An example configuration for authentication is shown below: ```yaml authentication: @@ -167,24 +170,19 @@ To upgrade to `1.25` or higher from a pre-`1.25` version, you must delete the de See the [1.25 migration guide for Kubernetes](../more-resources/migration/weaviate-1-25.md) for more details. -## Additional Configuration Help - -- [Cannot list resource "configmaps" in API group when deploying Weaviate k8s setup on GCP](https://stackoverflow.com/questions/58501558/cannot-list-resource-configmaps-in-api-group-when-deploying-weaviate-k8s-setup) -- [Error: UPGRADE FAILED: configmaps is forbidden](https://stackoverflow.com/questions/58501558/cannot-list-resource-configmaps-in-api-group-when-deploying-weaviate-k8s-setup) - ### Using EFS with Weaviate In some circumstances, you may wish, or need, to use EFS (Amazon Elastic File System) with Weaviate. And we note in the case of AWS Fargate, you must create the [PV (persistent volume)](https://kubernetes.io/docs/concepts/storage/persistent-volumes/) manually, as the PVC will NOT create a PV for you. To use EFS with Weaviate, you need to: -- Create an EFS file system. -- Create an EFS access point for every Weaviate replica. - - All of the Access Points must have a different root-directory so that Pods do not share the data, otherwise it will fail. -- Create EFS mount targets for each subnet of the VPC where Weaviate is deployed. -- Create StorageClass in Kubernetes using EFS. -- Create Weaviate Volumes, where each volume has a different AccessPoint for VolumeHandle(as mentioned above). -- Deploy Weaviate. +1. Create an EFS file system. +1. Create an EFS access point for every Weaviate replica. + 1. All of the Access Points must have a different root-directory so that Pods do not share the data, otherwise it will fail. +1. Create EFS mount targets for each subnet of the VPC where Weaviate is deployed. +1. Create StorageClass in Kubernetes using EFS. +1. Create Weaviate Volumes, where each volume has a different AccessPoint for VolumeHandle(as mentioned above). +1. Deploy Weaviate. This code is an example of a PV for `weaviate-0` Pod: @@ -212,7 +210,14 @@ spec: For more, general information on running EFS with Fargate, we recommend reading [this AWS blog](https://aws.amazon.com/blogs/containers/running-stateful-workloads-with-amazon-eks-on-aws-fargate-using-amazon-efs/). ### Using Azure file CSI with Weaviate -The provisioner `file.csi.azure.com` is **not supported** and will lead to file corruptions. Instead, make sure the storage class defined in values.yaml is from provisioner `disk.csi.azure.com`, for example: + +:::danger Important + +The provisioner `file.csi.azure.com` is **not supported** and will lead to file corruptions. + +::: + +Instead, make sure the storage class defined in values.yaml is from provisioner `disk.csi.azure.com`, for example: ```yaml storage: @@ -247,6 +252,12 @@ env: - CLUSTER_HOSTNAME: "node-1" ``` +## Additional Configuration Help + +- [Cannot list resource "configmaps" in API group when deploying Weaviate k8s setup on GCP](https://stackoverflow.com/questions/58501558/cannot-list-resource-configmaps-in-api-group-when-deploying-weaviate-k8s-setup) + +- [Error: UPGRADE FAILED: configmaps is forbidden](https://stackoverflow.com/questions/58501558/cannot-list-resource-configmaps-in-api-group-when-deploying-weaviate-k8s-setup) + ## Questions and feedback import DocsFeedback from '/_includes/docs-feedback.mdx'; diff --git a/secondaryNavbar.js b/secondaryNavbar.js index 64e4ba8b..ba821d66 100644 --- a/secondaryNavbar.js +++ b/secondaryNavbar.js @@ -67,7 +67,10 @@ const secondaryNavbarItems = { /*{ label: "Kubernetes", link: "/docs/deploy/k8s", sidebar: "deployK8sSidebar" },*/ { label: "Production Environments", link: "/docs/deploy/production", sidebar: "deployProductionSidebar"}, /*{ label: "AWS", link: "/docs/deploy/aws", sidebar: "deployAwsSidebar" },*/ - ], + { label: "Scaling Strategies", link: "/docs/deploy/scaling-strategies", sidebar: "deployScalingSidebar"}, + { label: "Monitoring and Observability", link: "/docs/deploy/monitoring-obs", sidebar: "deployObservabilitySidebar"}, + { label: "FAQs", link: "/docs/deploy/faqs", sidebar: "deployFaqsSidebar"}, + ] }, agents: { diff --git a/sidebars.js b/sidebars.js index 0d642115..05dbdc80 100644 --- a/sidebars.js +++ b/sidebars.js @@ -428,6 +428,8 @@ const sidebars = { "deploy/installation-guides/gcp-installation", "deploy/installation-guides/aws-installation", "deploy/installation-guides/aws-cli", + "deploy/installation-guides/aws-cli", + "deploy/installation-guides/helm-installation", ], }, { @@ -462,6 +464,27 @@ const sidebars = { }, ], + deployScalingSidebar: [ + { + type: "autogenerated", + dirName: "deploy/scaling-strategies", + + }, + ], + deployObservabilitySidebar: [ + { + type: "autogenerated", + dirName: "deploy/monitoring-obs", + + }, + ], + deployFaqsSidebar: [ + { + type: "autogenerated", + dirName: "deploy/faqs", + + }, + ], agentsSidebar: [ { type: "autogenerated", From 4a5b877b212abecec2ff577622cb8ccf4306bc5a Mon Sep 17 00:00:00 2001 From: DanielleWashington <shakara.washington02@gmail.com> Date: Thu, 10 Apr 2025 14:16:18 -0400 Subject: [PATCH 20/39] making code blocks multi-line and removing duplicate on sidebar --- docs/deploy/installation-guides/aws-cli.md | 19 +++++++++++++++---- sidebars.js | 1 - 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/docs/deploy/installation-guides/aws-cli.md b/docs/deploy/installation-guides/aws-cli.md index 84a78efb..5ab2f3da 100644 --- a/docs/deploy/installation-guides/aws-cli.md +++ b/docs/deploy/installation-guides/aws-cli.md @@ -24,15 +24,23 @@ eksctl version ### Step 1: Create the Cluster ```bash -eksctl create cluster --name <your-cluster-name-here> --region <your-region-here> --nodegroup-name <nodegroup-name-here> --nodes 3 --nodes-min 2 --nodes-max 4 --node-type t3.medium +eksctl create cluster +--name <your-cluster-name-here> +--region <your-region-here> +--nodegroup-name <nodegroup-name-here> +--nodes 3 --nodes-min 2 --nodes-max 4 +--node-type t3.medium ``` -This creates an EKS cluster within your speciifed region with an autoscaling node group. There are 3 nodes for high availability and having autoscaling enabled allows for the cluster to dynamically adjust resources based on demand. +This creates an EKS cluster within your specified region with an autoscaling node group. There are 3 nodes for high availability and having autoscaling enabled allows for the cluster to dynamically adjust resources based on demand. #### Enable `kubectl` to interact with the newly created cluster: ```bash -aws eks --region <your-region> update-kubeconfig --name <your-cluster-name> +aws eks +--region <your-region> +update-kubeconfig +--name <your-cluster-name> ``` #### Verify that the node has been created and that you are able to interact with the cluster: @@ -46,7 +54,10 @@ kubectl get nodes Peristent storage is required for running Weaviate on a Kubernetes cluster, it ensures that data is retained should a pod restart, a node crashes, or a cluster scales up or down. ```bash -eksctl create addon --name aws-ebs-csi-driver --cluster <your-cluster-name> --region <your-region> --service-account-role-arn <arn:aws:iam::<your-account-id>:role/AmazonEKS_EBS_CSI_DriverRole> +eksctl create addon +--name aws-ebs-csi-driver +--cluster <your-cluster-name> +--region <your-region> --service-account-role-arn <arn:aws:iam::<your-account-id>:role/AmazonEKS_EBS_CSI_DriverRole> ``` The above adds the EBS CSI Driver add-on for your cluster. After adding the add-on, a storage class and `PersistentValueClaim` is needed to enable persistent storage. diff --git a/sidebars.js b/sidebars.js index 356f8491..8872ab2e 100644 --- a/sidebars.js +++ b/sidebars.js @@ -442,7 +442,6 @@ const sidebars = { "deploy/installation-guides/gcp-installation", "deploy/installation-guides/aws-installation", "deploy/installation-guides/aws-cli", - "deploy/installation-guides/aws-cli", "deploy/installation-guides/helm-installation", ], }, From 077f7ef8a2af61e32c30845c3ed2f910826b4291 Mon Sep 17 00:00:00 2001 From: DanielleWashington <shakara.washington02@gmail.com> Date: Fri, 11 Apr 2025 14:08:34 -0400 Subject: [PATCH 21/39] adding the async replication env vars doc --- docs/deploy/config-guides/async-rep.md | 117 ++++++++++++++++++++++++- sidebars.js | 1 + 2 files changed, 117 insertions(+), 1 deletion(-) diff --git a/docs/deploy/config-guides/async-rep.md b/docs/deploy/config-guides/async-rep.md index aac65027..754a4fed 100644 --- a/docs/deploy/config-guides/async-rep.md +++ b/docs/deploy/config-guides/async-rep.md @@ -1 +1,116 @@ -# Async Replication \ No newline at end of file +--- + +title: Async Replication + +--- + +Introduced to GA in the 1.29 release, Async Replication is a mechanism used to ensure eventual consistency across nodes in a distributed cluster. It works as a background process that automatically keeps nodes in sync without requiring user queries. Previously, consistency was achieved through "read repair" which involved nodes comparing data during a read request and exchanging missing or outdated information. This approach guarantees eventual consistency without requiring read operations. + +### Under the Hood + +- Async replication operates as a background process either per tenant (in a multi-tenant collection) or per shard (in a non-multi-tenant collection). +- It is disabled by default but can be enabled through schema changes, similar to setting the replication factor. + +### Environment Variable Deep Dive + +These environment variables can be used to fine-tune behavior for your specific use case or deployment environment. + +:::tip +The optimal values for these variables will ultimately depend on factors like: data size, network conditions, write patterns, and the desired level of eventual consistency. +::: + +#### `ASYNC_REPLICATION_DISABLED` +Globally disables the entire async replication feature. + +- Its default value is `false`. +- **Use case**: This is useful when you have many tenants or collections where a temporary global disable is needed, like during debugging or critical maintenance. +- **Special Considerations**: + - This overrides any schema-level settings. + +#### `ASYNC_REPLICATION_HASHTREE_HEIGHT` +Customizes the height of the hash tree built by each node to represent its locally stored data. +- By default the value is set to 16 which is roughly 2MB of RAM per shard on each node. +- **Use case(s)**: + - In multi-tenant setups with a large number of tenants, reducing the hash tree would minimize the memory footprint. + - For very large collections, a larger hash tree could be more beneficial for more efficient identification of differing data ranges. +- **Special Considerations**: + - Modification of the hash tree height requires rebuilding the hash tree on each node, which involves iterating over all existing objects. + + +#### `ASYNC_REPLICATION_FREQUENCY` +Defines how often each node initiates the process of comparing its local data (via the hash tree) with other nodes storing the same shard. This regularly checks for inconsistencies, even if no changes have been explicitly triggered. +- It's default value is 30 seconds. +- **Use Case(s)** + - Decreasing the frequency can be beneficial for applications that require faster convergence to eventual consistency. + - Increasing the frequency can be beneficial for reducing the load on the system by relaxing the eventual consistency. + +#### `ASYNC_REPLICATION_FREQUENCY_WHILE_PROPAGATING` +Defines a shorter frequency for subsequent comparison and propagation attempts when a previous propagation cycle did not complete (i.e., not all detected differences were synchronized). + - By default it is set to 20 milliseconds. + - **Use Case(s)**: When inconsistencies are known to exist, this expedites the synchronization process. + - **Considerations**: This is activated after a propogation cycle detects differences but does not propagate all of them due to limits. + +#### `ASYNC_REPLICATION_ALIVE_NODES_CHECKING_FREQUENCY` +Defines the frequency at which the system checks for changes in the availability of nodes within the cluster. + - By default it is set to 5 seconds. + - **Use Case(s)**: When a node rejoins the cluster after a period of downtime, it is highly likely to be out of sync. This setting ensures that the replication process is initiated promptly. + +#### `ASYNC_REPLICATION_LOGGING_FREQUENCY` +Controls how often the background async replication process logs its activity. + - By default it is set to 5 seconds. + - **Use Case(s)**: Increasing the frequency provides more detailed logs, while decreasing it reduces log verbosity. + +#### `ASYNC_REPLICATION_DIFF_BATCH_SIZE` +Sets the number of object metadata fetched per request during the comparison phase. + - By default it is set to 1000. + - **Use Case(s)**: May be increased to potentially improve performance if network latency is low and nodes can handle larger requests. + - **Considerations**: Fetching metadata in batches optimizes network communication. + +#### `ASYNC_REPLICATION_DIFF_PER_NODE_TIMEOUT` +Defines the maximum time to wait for a response when requesting object metadata from a remote node during the comparison phase, this prevents indefinite blocking if a node is unresponsive. + - By default is set to 10 seconds. + - **Use Case(s)**: May need to be increased in environments with high network latency or potentially slow-responding nodes. + +#### `ASYNC_REPLICATION_PROPAGATION_TIMEOUT` +Sets the maximum time allowed for a single propagation request (sending actual object data) to a remote node. + - By default is set to 30 seconds. + - **Use Case(s)**: May need to be increased in scenarios with high network latency, large object sizes (e.g., images, vectors), or when sending large batches of objects. + - **Considerations**: Network latency, batch size, and the size of the objects being propagated can all affect timeouts. + +#### `ASYNC_REPLICATION_PROPAGATION_LIMIT` +Defines the maximum number of objects that will be propagated in a single async replication iteration (after one hash tree comparison). + - By default is set to 10,000. + - **Use Case(s)**: Can be adjusted based on network capacity and the desired rate of convergence. + - **Considerations**: Even if more than this number of differences are detected, only this many objects will be propagated in the current iteration. Subsequent iterations will handle the remaining differences. + + +#### `ASYNC_REPLICATION_PROPAGATION_DELAY` +Introduces a delay before considering an object for propagation. Only objects older than this delay are considered. + - By default it is set to 30 seconds. + - **Use Case(s)**: If an object is inserted into one node but the insertion is still in progress, the hash comparison might detect it. This delay prevents the async replication from trying to propagate it before the local write operation is fully complete. + - **Considerations**: This should be set based on the typical write latency of the system. + +#### `ASYNC_REPLICATION_PROPAGATION_CONCURRENCY` +Controls the number of concurrent goroutines (or threads) used to send batches of objects during the propagation phase. + - By default it is set to 5. + - **Considerations**: Increasing concurrency can improve propagation speed, but needs to be balanced with potential resource contention (CPU, network). + + +#### `ASYNC_REPLICATION_PROPAGATION_BATCH_SIZE` +Sets the maximum number of objects included in each batch when propagating data to a remote node. + - By default is set to 100. + - **Use Case(s)**: + - For large objects, reducing the batch size can help manage memory usage during propagation. The batch size could be similar to the batch size used during initial data insertion. + - For smaller objects, increasing the batch size might improve propagation efficiency by reducing the overhead of individual requests, but needs to be balanced with potential memory pressure. + - **Considerations**: This setting is particularly important for large objects, as larger batches can lead to higher memory consumption during transmission. Multiple batches may be sent within a single iteration to reach the `ASYNC_REPLICATION_PROPAGATION_LIMIT`. + +### Further Resources +[Replication How-To](https://weaviate.io/developers/weaviate/configuration/replication#async-replication-settings) + +[Environment Variables](https://weaviate.io/developers/weaviate/config-refs/env-vars#async-replication) + +## Questions and feedback + +import DocsFeedback from '/_includes/docs-feedback.mdx'; + +<DocsFeedback/> diff --git a/sidebars.js b/sidebars.js index 8872ab2e..fbff1200 100644 --- a/sidebars.js +++ b/sidebars.js @@ -455,6 +455,7 @@ const sidebars = { "deploy/config-guides/modules", "deploy/config-guides/monitoring", "deploy/config-guides/persistence", + "deploy/config-guides/async-rep", ], }, ], From 895f98755e3fea49c301b206fa2fcaf0df69416b Mon Sep 17 00:00:00 2001 From: DanielleWashington <shakara.washington02@gmail.com> Date: Mon, 14 Apr 2025 13:18:51 -0400 Subject: [PATCH 22/39] updated per JP's review --- docs/deploy/config-guides/async-rep.md | 135 ++++++++++++++++++------- 1 file changed, 99 insertions(+), 36 deletions(-) diff --git a/docs/deploy/config-guides/async-rep.md b/docs/deploy/config-guides/async-rep.md index 754a4fed..3bed2b78 100644 --- a/docs/deploy/config-guides/async-rep.md +++ b/docs/deploy/config-guides/async-rep.md @@ -6,12 +6,17 @@ title: Async Replication Introduced to GA in the 1.29 release, Async Replication is a mechanism used to ensure eventual consistency across nodes in a distributed cluster. It works as a background process that automatically keeps nodes in sync without requiring user queries. Previously, consistency was achieved through "read repair" which involved nodes comparing data during a read request and exchanging missing or outdated information. This approach guarantees eventual consistency without requiring read operations. +:::info + +This applies solely to data objects, as metadata consistency is treated differently (through RAFT consensus). +::: + ### Under the Hood - Async replication operates as a background process either per tenant (in a multi-tenant collection) or per shard (in a non-multi-tenant collection). -- It is disabled by default but can be enabled through schema changes, similar to setting the replication factor. +- It is disabled by default but can be enabled through collection configuration changes, similar to setting the replication factor. -### Environment Variable Deep Dive +## Environment Variable Deep Dive These environment variables can be used to fine-tune behavior for your specific use case or deployment environment. @@ -19,13 +24,54 @@ These environment variables can be used to fine-tune behavior for your specific The optimal values for these variables will ultimately depend on factors like: data size, network conditions, write patterns, and the desired level of eventual consistency. ::: +## Use Cases + +### General + +<details> + +<summary> Feature Control </summary> #### `ASYNC_REPLICATION_DISABLED` Globally disables the entire async replication feature. - Its default value is `false`. - **Use case**: This is useful when you have many tenants or collections where a temporary global disable is needed, like during debugging or critical maintenance. - **Special Considerations**: - - This overrides any schema-level settings. + - This overrides any collection configuration. + +</details> + +<details> +<summary>Replication Control </summary> + +#### `ASYNC_REPLICATION_PROPAGATION_LIMIT` +Defines the maximum number of objects that will be propagated in a single async replication iteration (after one hash tree comparison). + - By default is set to 10,000. + - **Use Case(s)**: Can be adjusted based on network capacity and the desired rate of convergence. + - **Considerations**: Even if more than this number of differences are detected, only this many objects will be propagated in the current iteration. Subsequent iterations will handle the remaining differences. + + +#### `ASYNC_REPLICATION_PROPAGATION_DELAY` +Introduces a delay before considering an object for propagation. Only objects older than this delay are considered. + - By default it is set to 30 seconds. + - **Use Case(s)**: If an object is inserted into one node but the insertion is still in progress, the hash comparison might detect it. This delay prevents the async replication from trying to propagate it before the local write operation is fully complete. + - **Considerations**: This should be set based on the typical write latency of the system. +</details> + +<details> +<summary> Operational Visibility </summary> + +#### `ASYNC_REPLICATION_LOGGING_FREQUENCY` +Controls how often the background async replication process logs its activity. + - By default it is set to 5 seconds. + - **Use Case(s)**: Increasing the frequency provides more detailed logs, while decreasing it reduces log verbosity. +</details> + +### Performance Tuning + +<details> + +<summary> Memory Optimization </summary> #### `ASYNC_REPLICATION_HASHTREE_HEIGHT` Customizes the height of the hash tree built by each node to represent its locally stored data. @@ -36,7 +82,45 @@ Customizes the height of the hash tree built by each node to represent its local - **Special Considerations**: - Modification of the hash tree height requires rebuilding the hash tree on each node, which involves iterating over all existing objects. +</details> + +<details> + +<summary> Throughput and Concurrency </summary> + +#### `ASYNC_REPLICATION_PROPAGATION_CONCURRENCY` +Controls the number of concurrent goroutines (or threads) used to send batches of objects during the propagation phase. + - By default it is set to 5. + - **Considerations**: Increasing concurrency can improve propagation speed, but needs to be balanced with potential resource contention (CPU, network). + +</details> + +<details> + +<summary> Batch Processing </summary> + +#### `ASYNC_REPLICATION_DIFF_BATCH_SIZE` +Sets the number of object metadata fetched per request during the comparison phase. + - By default it is set to 1000. + - **Use Case(s)**: May be increased to potentially improve performance if network latency is low and nodes can handle larger requests. + - **Considerations**: Fetching metadata in batches optimizes network communication. + +#### `ASYNC_REPLICATION_PROPAGATION_BATCH_SIZE` +Sets the maximum number of objects included in each batch when propagating data to a remote node. + - By default is set to 100. + - **Use Case(s)**: + - For large objects, reducing the batch size can help manage memory usage during propagation. The batch size could be similar to the batch size used during initial data insertion. + - For smaller objects, increasing the batch size might improve propagation efficiency by reducing the overhead of individual requests, but needs to be balanced with potential memory pressure. + - **Considerations**: This setting is particularly important for large objects, as larger batches can lead to higher memory consumption during transmission. Multiple batches may be sent within a single iteration to reach the `ASYNC_REPLICATION_PROPAGATION_LIMIT`. + +</details> + +### Consistency Tuning + +<details> + +<summary> Synchronization Frequency </summary> #### `ASYNC_REPLICATION_FREQUENCY` Defines how often each node initiates the process of comparing its local data (via the hash tree) with other nodes storing the same shard. This regularly checks for inconsistencies, even if no changes have been explicitly triggered. - It's default value is 30 seconds. @@ -48,23 +132,22 @@ Defines how often each node initiates the process of comparing its local data (v Defines a shorter frequency for subsequent comparison and propagation attempts when a previous propagation cycle did not complete (i.e., not all detected differences were synchronized). - By default it is set to 20 milliseconds. - **Use Case(s)**: When inconsistencies are known to exist, this expedites the synchronization process. - - **Considerations**: This is activated after a propogation cycle detects differences but does not propagate all of them due to limits. + - **Considerations**: This is activated after a propagation cycle detects differences but does not propagate all of them due to limits. + +</details> + +<details> +<summary> Node Status Monitoring </summary> #### `ASYNC_REPLICATION_ALIVE_NODES_CHECKING_FREQUENCY` Defines the frequency at which the system checks for changes in the availability of nodes within the cluster. - By default it is set to 5 seconds. - **Use Case(s)**: When a node rejoins the cluster after a period of downtime, it is highly likely to be out of sync. This setting ensures that the replication process is initiated promptly. -#### `ASYNC_REPLICATION_LOGGING_FREQUENCY` -Controls how often the background async replication process logs its activity. - - By default it is set to 5 seconds. - - **Use Case(s)**: Increasing the frequency provides more detailed logs, while decreasing it reduces log verbosity. +</details> -#### `ASYNC_REPLICATION_DIFF_BATCH_SIZE` -Sets the number of object metadata fetched per request during the comparison phase. - - By default it is set to 1000. - - **Use Case(s)**: May be increased to potentially improve performance if network latency is low and nodes can handle larger requests. - - **Considerations**: Fetching metadata in batches optimizes network communication. +<details> +<summary>Timeout Management </summary> #### `ASYNC_REPLICATION_DIFF_PER_NODE_TIMEOUT` Defines the maximum time to wait for a response when requesting object metadata from a remote node during the comparison phase, this prevents indefinite blocking if a node is unresponsive. @@ -77,34 +160,14 @@ Sets the maximum time allowed for a single propagation request (sending actual o - **Use Case(s)**: May need to be increased in scenarios with high network latency, large object sizes (e.g., images, vectors), or when sending large batches of objects. - **Considerations**: Network latency, batch size, and the size of the objects being propagated can all affect timeouts. -#### `ASYNC_REPLICATION_PROPAGATION_LIMIT` -Defines the maximum number of objects that will be propagated in a single async replication iteration (after one hash tree comparison). - - By default is set to 10,000. - - **Use Case(s)**: Can be adjusted based on network capacity and the desired rate of convergence. - - **Considerations**: Even if more than this number of differences are detected, only this many objects will be propagated in the current iteration. Subsequent iterations will handle the remaining differences. - +</details> -#### `ASYNC_REPLICATION_PROPAGATION_DELAY` -Introduces a delay before considering an object for propagation. Only objects older than this delay are considered. - - By default it is set to 30 seconds. - - **Use Case(s)**: If an object is inserted into one node but the insertion is still in progress, the hash comparison might detect it. This delay prevents the async replication from trying to propagate it before the local write operation is fully complete. - - **Considerations**: This should be set based on the typical write latency of the system. -#### `ASYNC_REPLICATION_PROPAGATION_CONCURRENCY` -Controls the number of concurrent goroutines (or threads) used to send batches of objects during the propagation phase. - - By default it is set to 5. - - **Considerations**: Increasing concurrency can improve propagation speed, but needs to be balanced with potential resource contention (CPU, network). +### Further Resources -#### `ASYNC_REPLICATION_PROPAGATION_BATCH_SIZE` -Sets the maximum number of objects included in each batch when propagating data to a remote node. - - By default is set to 100. - - **Use Case(s)**: - - For large objects, reducing the batch size can help manage memory usage during propagation. The batch size could be similar to the batch size used during initial data insertion. - - For smaller objects, increasing the batch size might improve propagation efficiency by reducing the overhead of individual requests, but needs to be balanced with potential memory pressure. - - **Considerations**: This setting is particularly important for large objects, as larger batches can lead to higher memory consumption during transmission. Multiple batches may be sent within a single iteration to reach the `ASYNC_REPLICATION_PROPAGATION_LIMIT`. +[Concepts: Replication](https://weaviate.io/developers/weaviate/concepts/replication-architecture/consistency) -### Further Resources [Replication How-To](https://weaviate.io/developers/weaviate/configuration/replication#async-replication-settings) [Environment Variables](https://weaviate.io/developers/weaviate/config-refs/env-vars#async-replication) From e5c59cb288bfbb1d07f7dd24b0a2609f8d92ac43 Mon Sep 17 00:00:00 2001 From: DanielleWashington <shakara.washington02@gmail.com> Date: Mon, 14 Apr 2025 14:31:14 -0400 Subject: [PATCH 23/39] updating broken links --- .../model-providers/voyageai/embeddings-multimodal.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/weaviate/model-providers/voyageai/embeddings-multimodal.md b/docs/weaviate/model-providers/voyageai/embeddings-multimodal.md index e9e420c7..ba8098cb 100644 --- a/docs/weaviate/model-providers/voyageai/embeddings-multimodal.md +++ b/docs/weaviate/model-providers/voyageai/embeddings-multimodal.md @@ -167,7 +167,7 @@ The following examples show how to configure VoyageAI-specific options. </Tabs> -For further details on model parameters, see the [VoyageAI API documentation](https://docs.voyageai.com/reference/multimodal-embeddings-api). +For further details on model parameters, see the [VoyageAI API documentation](https://docs.voyageai.com/docs/multimodal-embeddings). ## Header parameters @@ -329,7 +329,7 @@ Once the integrations are configured at the collection, the data management and ### External resources -- VoyageAI [Multimodal Embed API documentation](https://docs.voyageai.com/reference/multimodal-embeddings-api) +- VoyageAI [Multimodal Embed API documentation](https://docs.voyageai.com/docs/multimodal-embeddings) ## Questions and feedback From e4099019a7ac70c1d3ae1f268d8a6ed2925e5f8e Mon Sep 17 00:00:00 2001 From: DanielleWashington <shakara.washington02@gmail.com> Date: Thu, 17 Apr 2025 13:16:30 -0400 Subject: [PATCH 24/39] updated doc with further instructions --- docs/deploy/installation-guides/aws-cli.md | 83 +++++++++++++++++----- 1 file changed, 64 insertions(+), 19 deletions(-) diff --git a/docs/deploy/installation-guides/aws-cli.md b/docs/deploy/installation-guides/aws-cli.md index 5ab2f3da..314ce6df 100644 --- a/docs/deploy/installation-guides/aws-cli.md +++ b/docs/deploy/installation-guides/aws-cli.md @@ -1,14 +1,17 @@ --- -title: AWS CLI Installation +title: AWS EKS Installation description: Deploy Weaviate on EKS using the AWS CLI --- -## Prerequisites +Weaviate can be deployed on an EKS cluster using the `eksctl` command-line tool that creates and manages clusters. By the end of this document, you'll have all the necessary information to create an EKS cluster using the command line, add persistent storage to your cluster and then deploy Weaviate onto the cluster. + +:::info Prerequisites - Helm installed - The AWS CLI installed with the latest version - `kubectl` installed - `eksctl` installed +::: #### Verify your tools @@ -24,12 +27,7 @@ eksctl version ### Step 1: Create the Cluster ```bash -eksctl create cluster ---name <your-cluster-name-here> ---region <your-region-here> ---nodegroup-name <nodegroup-name-here> ---nodes 3 --nodes-min 2 --nodes-max 4 ---node-type t3.medium +eksctl create cluster --name <your-cluster-name-here> --region <your-region-here> --nodegroup-name <nodegroup-name-here> --nodes 3 --nodes-min 2 --nodes-max 4 --node-type t3.medium ``` This creates an EKS cluster within your specified region with an autoscaling node group. There are 3 nodes for high availability and having autoscaling enabled allows for the cluster to dynamically adjust resources based on demand. @@ -37,10 +35,7 @@ This creates an EKS cluster within your specified region with an autoscaling nod #### Enable `kubectl` to interact with the newly created cluster: ```bash -aws eks ---region <your-region> -update-kubeconfig ---name <your-cluster-name> +aws eks --region <your-region> update-kubeconfig --name <your-cluster-name> ``` #### Verify that the node has been created and that you are able to interact with the cluster: @@ -53,19 +48,62 @@ kubectl get nodes Peristent storage is required for running Weaviate on a Kubernetes cluster, it ensures that data is retained should a pod restart, a node crashes, or a cluster scales up or down. +#### Add the EBS CSI Driver Add-On ```bash -eksctl create addon ---name aws-ebs-csi-driver ---cluster <your-cluster-name> ---region <your-region> --service-account-role-arn <arn:aws:iam::<your-account-id>:role/AmazonEKS_EBS_CSI_DriverRole> +eksctl create addon --name aws-ebs-csi-driver --cluster <your-cluster-name> --region <your-region> --service-account-role-arn <arn:aws:iam::<your-account-id>:role/AmazonEKS_EBS_CSI_DriverRole> +``` + +The above adds the EBS CSI Driver add-on for your cluster. After adding the add-on, a storage class and `PersistentValueClaim` is needed to enable persistent storage. + +#### Add Storage Class + +After adding the EBS CSI Driver add-on, you'll need to create a `storageclass.yaml` file: +``` +apiVersion: storage.k8s.io/v1 +kind: StorageClass +metadata: + name: <your-storageclass-name> +provisioner: ebs.csi.aws.com +parameters: + type: gp3 + encrypted: "true" +reclaimPolicy: Retain +volumeBindingMode: Immediate +allowVolumeExpansion: true +``` + +After creating the storage class, apply it: ```kubectl apply -f <your-storageclass-name>.yaml``` + +#### Create a `PersistentValueClaim` + +After creating and applying the Storage class, you'll need to also create a `PersistentValueClaim` file: + +```apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: <your-pvc-name> +spec: + accessModes: + - ReadWriteOnce + storageClassName: <your-storageclass-name> + resources: + requests: + storage: 10Gi ``` +After creating the persistent value claim, you also need to apply it: +```kubectl apply -f <your-pvc-name>.yaml``` -The above adds the EBS CSI Driver add-on for your cluster. After adding the add-on, a storage class and `PersistentValueClaim` is needed to enable persistent storage. +#### Verify your storage class and PersistentValueClaim have both been applied -See [Persistent storage for Kubernetes](https://aws.amazon.com/blogs/storage/persistent-storage-for-kubernetes/) for more information. +``` +kubectl get sc +kubectl get pvc +``` ### Step 3: Add Weaviate to EKS +After creating + #### Create a Weaviate namespace: ```bash @@ -90,12 +128,19 @@ helm upgrade --install weaviate weaviate/weaviate \ --values values.yaml \ ``` -#### Verify that Weaviate has been deployed: +#### Verify your deployment ```bash kubectl get pods ``` + +### Next Steps: [Connecting to Weaviate](docs/weaviate/connections/index.mdx) + +### Further Resources + +- [Persistent storage for Kubernetes](https://aws.amazon.com/blogs/storage/persistent-storage-for-kubernetes/) + ## Questions and feedback import DocsFeedback from '/_includes/docs-feedback.mdx'; From 814f779291174aadf76e65201bd0d1ce96fd0e0a Mon Sep 17 00:00:00 2001 From: DanielleWashington <shakara.washington02@gmail.com> Date: Sat, 26 Apr 2025 23:07:21 -0400 Subject: [PATCH 25/39] adding and updating docs --- docs/deploy/faqs/index.md | 102 +++++++++++++ docs/deploy/faqs/troubleshooting.md | 56 +++++++ .../installation-guides/aws-installation.md | 139 ++---------------- .../installation-guides/gcp-installation.md | 122 +-------------- .../monitoring-obs/grafana-prometheus.md | 8 + docs/deploy/monitoring-obs/index.md | 6 + 6 files changed, 191 insertions(+), 242 deletions(-) diff --git a/docs/deploy/faqs/index.md b/docs/deploy/faqs/index.md index e69de29b..8119d470 100644 --- a/docs/deploy/faqs/index.md +++ b/docs/deploy/faqs/index.md @@ -0,0 +1,102 @@ +--- + +title: Deployment FAQs + +--- + +Looking for guidance on deploying Weaviate in a production environment? Whether you're scaling up from a proof-of-concept to an enterprise-wide implementation, migrating from another solution, or optimizing for specific workloads, you'll find practical answers to streamline your deployment process. Our goal is to help you achieve reliable performance, maintain data integrity, and minimize operational overhead as you harness the power of vector search for your applications! + + +#### Q1: Why did my cluster suddenly become read-only? + +<details> + +<summary> Answer </summary> + +This almost always means you've run out of disk space. Weaviate protects itself by switching to read-only mode when disk usage exceeds a configured threshold. You'll need to increase the disk size available to Weaviate and then reset the read-only status. + +</details> + +#### Q2: How do I deploy Weaviate using AWS Marketplace? + +<details> + +<summary> Answer </summary> + +This [doc](../installation-guides/aws-installation.md) will walk you through all the necessary steps to deploy Weaviate using AWS marketplace. + +</details> + +#### Q3: How do I deploy Weaviate using GCP Marketplace? + +<details> + +<summary> Answer </summary> + +This [doc](../installation-guides/gcp-installation.md) will walk you through all the necessary steps to deploy Weaviate using GCP marketplace. + +</details> + +#### Q4: Is there a recommended limit for collections? + +<details> + +<summary> Answer </summary> + +If you plan to create more than **20** collections, you may want to consider multi-tenancy instead for better scaling and performance. + +**Additional information:** [Scaling limits with collections](docs/weaviate/starter-guides/managing-collections/collections-scaling-limits.mdx) + +</details> + +#### Q5: What are some common issues that occur during deployment? + +<details> + +<summary> Answer </summary> + +Common issues that occur during deployment include: + +- The cluster becoming `read-only` +- Query results being inconsistent +- Nodes unable to maintain consensus. +- Creating too many collections + +</details> + +#### Q6: What's the difference between Weaviate and other databases? + +<details> + +<summary> Answer </summary> + +Weaviate has complex processes which means that ingestion and deletion require more steps than other types of databases. +</details> + +#### Q7: Do my resources free up immediately after deleting objects? + +<details> + +<summary> Answer </summary> + +No, it does not happen instantaneously. When you delete objects a tombstone is created. The data removal and index cleanup occur as background processes. + +</details> + +#### Q8: What's the difference between client timeouts and module timeouts? + +<details> + +<summary> Answer </summary> + +- **Client timeout:** These are timeouts between the client and Weaviate server. + +- **Module timeout:** These are timeouts that occurs when Weaviate interacts with external modules like LLMs and vectorizers. + +</details> + +## Questions and feedback + +import DocsFeedback from '/_includes/docs-feedback.mdx'; + +<DocsFeedback/> \ No newline at end of file diff --git a/docs/deploy/faqs/troubleshooting.md b/docs/deploy/faqs/troubleshooting.md index e69de29b..a931c424 100644 --- a/docs/deploy/faqs/troubleshooting.md +++ b/docs/deploy/faqs/troubleshooting.md @@ -0,0 +1,56 @@ +--- + +title: Deployment Troubleshooting Guide + +--- + +So you've deployed Weaviate and you're fully immersed in the world of vectors when suddenly you encounter a puzzling mystery. This page will serve as your handbook for when things go awry in "Vector Land!" Consider every error message a clue to solving the mystery you're encountering. + + +## Common Issues and Solutions + +<details> + +<summary> The cluster is not accepting new information and there are disk space or `read-only` error messages in the logs. </summary> + +#### Identifying the issue + +As a first step, you'll want to examine your cluster's logs to identify the problem. If after checking the logs of your cluster you see error messages that include phrases like "read-only" or "disk space," then your cluster is more than likely in a `read-only` state due to insufficient disk space. + +#### Resolving the issue + +To solve this mystery, you'll need to increase the available disk space for your nodes. Once the disk space is increased, then you'll need to manually mark the affected shards or collections as writeable again. + +</details> + +<details> + +<summary> You're receiving inconsistent query results. </summary> + +#### Identifying the issue + +To confirm and identify the issue, you'll want to first run the same query multiple times to confirm that the results are inconsistent. If the inconsistent results are persisting, then you probably have asynchronous replication disabled for your deployment. + +#### Resolving the issue + +Check your settings to check if you have asynchronous replication enabled. If `async_replication_disabled` is set to "true" then you'll need to set that variable to "false." Once it is enabled, the logs will show messages that indicate successful peers checks and synchronization for the nodes. +</details> + +<details> + +<summary> Your nodes won't communicate, join a cluster, or maintain consensus. </summary> + +#### Identifying the issue + +To confirm and identify the issue, you'll want to first run the same query multiple times to confirm that the results are inconsistent. If the inconsistent results are persisting, then you probably have asynchronous replication disabled for your deployment. + +#### Resolving the issue + +Check your settings to check if you have asynchronous replication enabled. If `async_replication_disabled` is set to "true" then you'll need to set that variable to "false." Once it is enabled, the logs will show messages that indicate successful peers checks and synchronization for the nodes. +</details> + +## Questions and feedback + +import DocsFeedback from '/_includes/docs-feedback.mdx'; + +<DocsFeedback/> \ No newline at end of file diff --git a/docs/deploy/installation-guides/aws-installation.md b/docs/deploy/installation-guides/aws-installation.md index cfd7a13e..6427e623 100644 --- a/docs/deploy/installation-guides/aws-installation.md +++ b/docs/deploy/installation-guides/aws-installation.md @@ -9,155 +9,38 @@ import ReactPlayer from 'react-player/lazy' <!-- NOTE: To show this page on the sidebar, remove the `sidebar_class_name: hidden` line above. --> -You can use [AWS Marketplace](https://aws.amazon.com/marketplace) to directly launch a Weaviate cluster. - -We use an [AWS CloudFormation template](https://aws.amazon.com/cloudformation/) for delivery. +It is easy to deploy a Weaviate cluster through the AWS Marketplace. :::info Prerequisites - An AWS account with sufficient credit / payment method. - (Recommended) Familiarity with AWS and the AWS console. ::: -<details> - <summary> - What resources are used & installed? - </summary> +You can use [AWS Marketplace](https://aws.amazon.com/marketplace/pp/prodview-ng2dfhb4yjoic?sr=0-3&ref_=beagle&applicationId=AWSMPContessa) to directly launch a Weaviate cluster. -This will set up the following resources: -- EKS Cluster with a Single Node Group - - In the default VPC or a fresh VPC with CIDR 10.0.0.0/16 -- Load Balancer Controller for EKS -- aws-ebs-csi-driver for EKS -- The latest selected version of Weaviate (e.g. `1.20.3` if you select `1.20`) - - This will be installed using our official Helm chart -</details> ## Installation instructions -### Video - -If you prefer a video, you can watch the following walkthrough. This video is recorded in September 2023, some details may have changed since then. - -<ReactPlayer className="react-player" url='https://youtu.be/_2rBrKp83iM' controls='true' /> -<br/> - ### AWS Marketplace -1. Go to Weaviate's [AWS Marketplace listing](https://aws.amazon.com/marketplace/pp/prodview-cicacyv63r43i) -1. Subscribe to the product in AWS Marketplace by following the instructions on the page. At the time of writing (August 2023), the steps are to: - 1. Click <kbd>Continue to Subscribe</kbd>, then go to the next page - 1. Click <kbd>Continue to Configuration</kbd>, then go to the next page - 1. Select the fulfillment option & software version from the list. Then click <kbd>Continue to Launch</kbd>. -1. Launch the software using a CloudFormation template (select the one for your preferred availability zone in the table below): - -| Region | CloudFormation template link (per Availability Zone) | -| --- | --- | -| AP | [ap-northeast-1](https://ap-northeast-1.console.aws.amazon.com/cloudformation/home?region=ap-northeast-1#/stacks/quickcreate?templateURL=https://weaviate-aws-marketplace.s3.amazonaws.com/cdk-assets/latest/WeaviateEKS.template.json); [ap-northeast-2](https://ap-northeast-2.console.aws.amazon.com/cloudformation/home?region=ap-northeast-2#/stacks/quickcreate?templateURL=https://weaviate-aws-marketplace.s3.amazonaws.com/cdk-assets/latest/WeaviateEKS.template.json); [ap-northeast-3](https://ap-northeast-3.console.aws.amazon.com/cloudformation/home?region=ap-northeast-3#/stacks/quickcreate?templateURL=https://weaviate-aws-marketplace.s3.amazonaws.com/cdk-assets/latest/WeaviateEKS.template.json); [ap-south-1](https://ap-south-1.console.aws.amazon.com/cloudformation/home?region=ap-south-1#/stacks/quickcreate?templateURL=https://weaviate-aws-marketplace.s3.amazonaws.com/cdk-assets/latest/WeaviateEKS.template.json); [ap-southeast-1](https://ap-southeast-1.console.aws.amazon.com/cloudformation/home?region=ap-southeast-1#/stacks/quickcreate?templateURL=https://weaviate-aws-marketplace.s3.amazonaws.com/cdk-assets/latest/WeaviateEKS.template.json); [ap-southeast-2](https://ap-southeast-2.console.aws.amazon.com/cloudformation/home?region=ap-southeast-2#/stacks/quickcreate?templateURL=https://weaviate-aws-marketplace.s3.amazonaws.com/cdk-assets/latest/WeaviateEKS.template.json) | -| CA | [ca-central-1](https://ca-central-1.console.aws.amazon.com/cloudformation/home?region=ca-central-1#/stacks/quickcreate?templateURL=https://weaviate-aws-marketplace.s3.amazonaws.com/cdk-assets/latest/WeaviateEKS.template.json) | -| EU | [eu-central-1](https://eu-central-1.console.aws.amazon.com/cloudformation/home?region=eu-central-1#/stacks/quickcreate?templateURL=https://weaviate-aws-marketplace.s3.amazonaws.com/cdk-assets/latest/WeaviateEKS.template.json); [eu-north-1](https://eu-north-1.console.aws.amazon.com/cloudformation/home?region=eu-north-1#/stacks/quickcreate?templateURL=https://weaviate-aws-marketplace.s3.amazonaws.com/cdk-assets/latest/WeaviateEKS.template.json); [eu-west-1](https://eu-west-1.console.aws.amazon.com/cloudformation/home?region=eu-west-1#/stacks/quickcreate?templateURL=https://weaviate-aws-marketplace.s3.amazonaws.com/cdk-assets/latest/WeaviateEKS.template.json); [eu-west-2](https://eu-west-2.console.aws.amazon.com/cloudformation/home?region=eu-west-2#/stacks/quickcreate?templateURL=https://weaviate-aws-marketplace.s3.amazonaws.com/cdk-assets/latest/WeaviateEKS.template.json); [eu-west-3](https://eu-west-3.console.aws.amazon.com/cloudformation/home?region=eu-west-3#/stacks/quickcreate?templateURL=https://weaviate-aws-marketplace.s3.amazonaws.com/cdk-assets/latest/WeaviateEKS.template.json) | -| SA | [sa-east-1](https://sa-east-1.console.aws.amazon.com/cloudformation/home?region=sa-east-1#/stacks/quickcreate?templateURL=https://weaviate-aws-marketplace.s3.amazonaws.com/cdk-assets/latest/WeaviateEKS.template.json) | -| US | [us-east-1](https://us-east-1.console.aws.amazon.com/cloudformation/home?region=us-east-1#/stacks/quickcreate?templateURL=https://weaviate-aws-marketplace.s3.amazonaws.com/cdk-assets/latest/WeaviateEKS.template.json); [us-east-2](https://us-east-2.console.aws.amazon.com/cloudformation/home?region=us-east-2#/stacks/quickcreate?templateURL=https://weaviate-aws-marketplace.s3.amazonaws.com/cdk-assets/latest/WeaviateEKS.template.json); [us-west-1](https://us-west-1.console.aws.amazon.com/cloudformation/home?region=us-west-1#/stacks/quickcreate?templateURL=https://weaviate-aws-marketplace.s3.amazonaws.com/cdk-assets/latest/WeaviateEKS.template.json); [us-west-2](https://us-west-2.console.aws.amazon.com/cloudformation/home?region=us-west-2#/stacks/quickcreate?templateURL=https://weaviate-aws-marketplace.s3.amazonaws.com/cdk-assets/latest/WeaviateEKS.template.json) | - -### Configuration & Cluster creation - -:::info Before you get started -#### Some settings may not be changed after launch - -Not all settings may be changed after launch. For example, these settings are currently not changeable after launch: -- helmstoragesize -- albDriver -- ebsDriver -- vpcUseDefault - -#### Some settings may lead to recreation of the cluster - -- Changes to the instance type will lead to recreation of the node pool. - -#### Suggested configurations - -- The default values should be suitable for a majority of cases. -- `helmstoragesize`: For production environments, at least 500GB per StatefulSet pod is recommended. (Smaller disks may be sufficient for dev environments.) -- `helmauthenticationtype`: We recommend not running Weaviate with anonymous access. We suggest setting it to `apikey` and setting a key, for example by executing `pwgen -A -s 32` to generate a random string. -::: - -Once you open the CloudFormation template, you should see a set of options similar to below. - -Here, you can: - -1. Set the `stack name` for identifying the stack in AWS (required). -1. Set Weaviate/AWS parameters, such as: - - number of nodes - - instance types - - Weaviate authentication parameters. -1. Confirm required resources & proceed to <kbd>Create stack</kbd>. - - This template may require additional resources and capabilities. - -After clicking <kbd>Create stack</kbd>, the creation process may take a while, such as around 30 minutes. - -You can check the status of individual resources in the `Events` tab. Once the stack has been created, the status for the stack will change to `✅ CREATE_COMPLETE`. - -## Accessing the cluster - -Once the stack has been created, you can access the cluster using [`kubectl`](https://kubernetes.io/docs/tasks/tools/), and Weaviate itself using the load balancer. - -### Interaction using `kubectl` +1. Go to Weaviate's [AWS Marketplace listing](https://aws.amazon.com/marketplace/pp/prodview-ng2dfhb4yjoic?sr=0-3&ref_=beagle&applicationId=AWSMPContessa) to directly launch a Weaviate cluster. +1. Subscribe to the product in AWS Marketplace by following the instructions on the page. + 1. Click <kbd>View Purchase Options</kbd>, then go to the next page. + 2. Review the pricing, terms and conditions, and click <kbd>Subscribe</kbd>. +From there you will be prompted to set up your account on [Weaviate Cloud](docs/cloud/index.mdx). -You can run the following command which will update or create a kubeconfig file for the Weaviate cluster: -``` -aws eks update-kubeconfig --name [cluster-name] --region [aws-region]--role-arn arn:aws:iam::[AccountID]:role/[StackName]-MastersRole[XX] -``` - -:::tip How to find the kubectl command -The exact command can be found in the CloudFormation stack, in the `Outputs` tab, under the `EKSClusterConfigCommand` output. -::: - -Once that's set up, you can run `kubectl` commands as usual. For example - -- `kubectl get pods -n weaviate` to list all pods in the `weaviate` namespace. -- `kubectl get svc --all-namespaces` to list all services in all namespaces. - -### Finding the Weaviate URL - -Once the stack has been created, you can access Weaviate via the load balancer URL. - -You can find the Weaviate endpoint URL by any of: -- Going to the `Services` section of AWS, under `EC2` > `Load Balancers`. Find the load balancer, and look for the `DNS name` column. -- Running `kubectl get svc -n weaviate` and looking for the `EXTERNAL-IP` of the `weaviate` service. - -The load balancer URL (e.g. `a520f010285b8475eb4b86095cabf265-854109584.eu-north-1.elb.amazonaws.com`) will be the Weaviate URL (e.g. `http://a520f010285b8475eb4b86095cabf265-854109584.eu-north-1.elb.amazonaws.com`). - -## Deleting the cluster +## Billing -You can delete the cluster by deleting the CloudFormation stack. +You will be charged for Weaviate directly by AWS. -Caution. This action deletes your data from Weaviate. If you want to keep your data, back it up or export the data before you delete the cluster. +:::warning -### Some resources many require manual deletion +If you cancel your Weaviate AWS marketplace subscription, your Weaviate organization and its clusters will be deleted by Weaviate. -:::caution -Verify that all unused resources are deleted. You continue to incur costs for undeleted resources. ::: -There may be some AWS resources that are not deleted automatically when the CloudFormation stack is deleted. For example, EBS volumes, and Key Management Service (KMS) keys may not be deleted from time to time. - -You must delete these manually. - -#### Tips - -- If your CloudFormation stack indicates "DELETE_FAILED", you may be able to re-initiate deletion of these resources. -- Review the `Resources` tab of the CloudFormation stack to find resources that may not have been deleted. -- Key Management Service (KMS) keys may be deleted by going to the KMS console, and deleting the keys manually. You may need to schedule deletion of the keys. - - -## Billing - -You will be charged for Weaviate and associated resources directly by AWS. - -This will, for example, include the EC2 instances, EBS volumes, and any other resources used by the cluster. - - ## Questions and feedback import DocsFeedback from '/_includes/docs-feedback.mdx'; diff --git a/docs/deploy/installation-guides/gcp-installation.md b/docs/deploy/installation-guides/gcp-installation.md index 477c4cda..50c80a8f 100644 --- a/docs/deploy/installation-guides/gcp-installation.md +++ b/docs/deploy/installation-guides/gcp-installation.md @@ -1,11 +1,11 @@ --- -title: Google Cloud Marketplace +title: GCP Marketplace description: Set up Weaviate using Google Cloud Marketplace for simplified deployment. image: og/docs/installation.jpg tags: ['installation', 'Google Cloud Marketplace'] --- -You can use [Google Cloud Marketplace](https://console.cloud.google.com/marketplace) to directly launch a Weaviate cluster. +A Weaviate cluster is easy to deploy with Google Cloud Marketplace (GCP). :::info Prerequisites - A Google Cloud account with sufficient credit / payment method. @@ -16,127 +16,21 @@ You can use [Google Cloud Marketplace](https://console.cloud.google.com/marketpl Broadly, the steps are as follows: -1. Go to Weaviate's Google Cloud Marketplace listing page and click <kbd>Configure</kbd>. +1. Go to Weaviate's [Google Cloud Marketplace listing](https://console.cloud.google.com/marketplace/product/weaviate-gcp-mktplace/weaviate) page and click <kbd>Subscribe</kbd>. 1. Configure and deploy Weaviate by following the on-screen instructions. -<!-- 1. Review the GC Marketplace Terms of Service, and if you agree with the terms, confirm accordingly. --> -<!-- 1. Select Deploy to start deploying Weaviate on your GKE cluster. --> -We go through these steps in detail below. +Once completed, you will have a [Weaviate severless cloud](docs/cloud/index.mdx) deployment. -### Configuration options - -:::info Before you get started - -<!-- #### Some settings may not be changed after launch - -Not all settings may be changed after launch. For example, these settings are currently not changeable after launch: -- weaviatePVCSize -- albDriver -- ebsDriver -- vpcUseDefault - -#### Some settings may lead to recreation of the cluster - -- Changes to the instance type will lead to recreation of the node pool. --> - -#### Suggested configurations - -- The default values for settings such as `Global Query limit`, `Modules` and `Storage Size` should be suitable for a majority of cases. -- `Storage size`: For production environments, at least 500GB per pod is recommended. (Smaller disks may be sufficient for dev environments.) -<!-- - `weaviateAuthType`: We recommend not running Weaviate with anonymous access. We suggest setting it to `apikey` and setting a key, for example by excuting `pwgen -A -s 32` to generate a random string. --> - -::: - -Once you are at the deployment page, you should see a set of options. - -You will need to: -1. Select a GKE cluster to deploy Weaviate to. - 1. Optionally, you can create a new cluster and then specify it. -1. Set the `namespace` (for dividing cluster resources) and a unique `app instance name` for identifying the application. -1. Set the app instance name. -1. Set the service account for billing. -1. Set Weaviate parameters, such as `Replicas of Weaviate Instances`, `Global Query Limit`, `Enable Modules` and `Storage Size`. - <!-- - Weaviate authentication parameters. --> -1. If you agree, accept the terms of service and click <kbd>Deploy</kbd>. - -Once you have done so, Weaviate will be deployed to the selected cluster. This should take a few minutes. - -## Accessing the cluster - -Once the application has been created, you can access the cluster through the load balancer. - -You can interact with the cluster using [`kubectl`](https://kubernetes.io/docs/tasks/tools/), or through the Weaviate API. We show examples below. - -### Interaction using `kubectl` - -You can run the following command which will update or create a kubeconfig file for the Weaviate cluster: - -``` -gcloud container clusters get-credentials [YOUR_CLUSTER_NAME] --zone [YOUR_GC_ZONE] --project [YOUR_GC_PROJECT] -``` - -:::tip How to find the kubectl command -The exact command can be found in the Kubernetes Engine page, by clicking on the vertical ellipsis ( <i class="fa-solid fa-ellipsis-vertical"></i> ) for your cluster, and clicking <kbd>Connect</kbd>. -::: - -Once that's set up, you can run `kubectl` commands as usual. For example -- `kubectl get pods -n default` to list all pods in the `default` namespace (or whatever namespace you specified). -- `kubectl get svc --all-namespaces` to list all services in all namespaces. - -<details> - <summary>Example output</summary> - -An example output of `kubectl get svc --all-namespaces` is: - -```bash -NAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE -application-system application-controller-manager-service ClusterIP 10.24.8.231 <none> 443/TCP 11m -default kubernetes ClusterIP 10.24.0.1 <none> 443/TCP 11m -default weaviate LoadBalancer 10.24.13.245 34.173.96.14 80:30664/TCP 8m38s -default weaviate-headless ClusterIP None <none> 80/TCP 8m38s -gmp-system alertmanager ClusterIP None <none> 9093/TCP 10m -gmp-system gmp-operator ClusterIP 10.24.12.8 <none> 8443/TCP,443/TCP 10m -kalm-system kalm-controller-manager-service ClusterIP 10.24.7.189 <none> 443/TCP 11m -kube-system default-http-backend NodePort 10.24.12.61 <none> 80:32508/TCP 10m -kube-system kube-dns ClusterIP 10.24.0.10 <none> 53/UDP,53/TCP 11m -kube-system metrics-server ClusterIP 10.24.13.204 <none> 443/TCP -``` - -Here, the externally accessible Weaviate IP is `34.173.96.14`. - -</details> - -### Finding the Weaviate URL - -Once the application has been created, you can access Weaviate via the load balancer URL. - -You can find the Weaviate endpoint URL by any of: -- Going to the `Kubernetes Engine` section of Google Cloud, under `Service & Ingress`. Find the load balancer, and look for the `Endpoints` column. -- Running `kubectl get svc -n [YOUR_NAMESPACE_NAME]` and looking for the `EXTERNAL-IP` of the `weaviate` service. -The load balancer URL (e.g. `34.38.6.240`) will be the Weaviate URL (e.g. `http://34.38.6.240`). - -## Removing Weaviate and the cluster - -:::caution -Verify that all unused resources are deleted. You continue to incur costs for any remaining resources. -::: - -### Removing Weaviate - -To remove Weaviate and the associated services, go to the `Applications` section of `Kubernetes Engine` in Google Cloud, and delete the Weaviate deployment. - -Review the `Services & Ingress` section as well as the `Storage` section to ensure that all associated services and storage are removed. You may need to delete any remaining resources manually. - -### Removing the cluster - -If you no longer require the cluster (e.g. if you created a new cluster for Weaviate), you can delete the cluster by going to the `Applications` section of `Kubernetes Engine` in Google Cloud. Delete the cluster by selecting it from the list, clicking <kbd>DELETE</kbd>, and following the prompts. ## Billing You will be charged for Weaviate and associated resources directly by Google Cloud. -This will, for example, include the compute instances, volumes, and any other resources used by the cluster. +:::warning +If you cancel your Weaviate GCP marketplace subscription, your Weaviate organization and its clusters will be deleted by Weaviate. + +::: ## Questions and feedback diff --git a/docs/deploy/monitoring-obs/grafana-prometheus.md b/docs/deploy/monitoring-obs/grafana-prometheus.md index e69de29b..be198a1c 100644 --- a/docs/deploy/monitoring-obs/grafana-prometheus.md +++ b/docs/deploy/monitoring-obs/grafana-prometheus.md @@ -0,0 +1,8 @@ +--- + +title: Grafana and Prometheus in Production + +--- + +So you've got your Weaviate deployment up and running and have now found yourself wondering about how to collect metrics of your deployment? Fear not, in this document we'll show how to use Grafana agent to scrape your metrics. + diff --git a/docs/deploy/monitoring-obs/index.md b/docs/deploy/monitoring-obs/index.md index e69de29b..9e5e8fe7 100644 --- a/docs/deploy/monitoring-obs/index.md +++ b/docs/deploy/monitoring-obs/index.md @@ -0,0 +1,6 @@ +--- +title: Monitoring and Observability +sidebar_position: 0 + +--- + From 3c30e471882ff10fa1ef9c3b417bb0b5436492c8 Mon Sep 17 00:00:00 2001 From: DanielleWashington <shakara.washington02@gmail.com> Date: Thu, 8 May 2025 20:25:53 -0400 Subject: [PATCH 26/39] updating EKS doc, adding horizontal scaling doc and migrating docs from core to deployment section --- docs/deploy/config-guides/authentication.md | 145 ------- docs/deploy/config-guides/authorization.md | 259 ++++++++++++ .../config-guides}/backups.md | 44 --- docs/deploy/config-guides/index.mdx | 34 ++ .../monitoring-obs/grafana-prometheus.md | 0 .../weaviate-sample-dashboard-async-queue.png | Bin .../weaviate-sample-dashboard-importing.png | Bin .../img/weaviate-sample-dashboard-lsm.png | Bin .../img/weaviate-sample-dashboard-objects.png | Bin .../img/weaviate-sample-dashboard-startup.png | Bin .../img/weaviate-sample-dashboard-usage.png | Bin .../img/weaviate-sample-dashboard-vector.png | Bin .../monitoring-obs/index.mdx} | 1 - .../{ => monitoring-obs}/monitoring.md | 0 .../scaling-strategies/horizontal-scaling.mdx | 369 ++++++++++++++++++ .../scaling-strategies/imgs/horiz-scaling.png | Bin 0 -> 139432 bytes .../scaling-strategies/index.mdx | 53 +++ .../scaling-strategies/multi-node.md | 4 + docs/deploy/installation-guides/aws-cli.md | 91 +++-- .../installation-guides/aws-installation.md | 2 - .../scaling-strategies/horizontal-scaling.md | 1 - docs/deploy/scaling-strategies/index.md | 1 - docs/deploy/scaling-strategies/multi-node.md | 1 - docs/weaviate/configuration/authentication.md | 273 ------------- docs/weaviate/configuration/authorization.md | 1 - secondaryNavbar.js | 5 +- sidebars.js | 32 +- 27 files changed, 781 insertions(+), 535 deletions(-) create mode 100644 docs/deploy/config-guides/authorization.md rename docs/{weaviate/configuration => deploy/config-guides}/backups.md (96%) create mode 100644 docs/deploy/config-guides/index.mdx rename docs/deploy/{ => config-guides}/monitoring-obs/grafana-prometheus.md (100%) rename docs/deploy/config-guides/{ => monitoring-obs}/img/weaviate-sample-dashboard-async-queue.png (100%) rename docs/deploy/config-guides/{ => monitoring-obs}/img/weaviate-sample-dashboard-importing.png (100%) rename docs/deploy/config-guides/{ => monitoring-obs}/img/weaviate-sample-dashboard-lsm.png (100%) rename docs/deploy/config-guides/{ => monitoring-obs}/img/weaviate-sample-dashboard-objects.png (100%) rename docs/deploy/config-guides/{ => monitoring-obs}/img/weaviate-sample-dashboard-startup.png (100%) rename docs/deploy/config-guides/{ => monitoring-obs}/img/weaviate-sample-dashboard-usage.png (100%) rename docs/deploy/config-guides/{ => monitoring-obs}/img/weaviate-sample-dashboard-vector.png (100%) rename docs/deploy/{monitoring-obs/index.md => config-guides/monitoring-obs/index.mdx} (98%) rename docs/deploy/config-guides/{ => monitoring-obs}/monitoring.md (100%) create mode 100644 docs/deploy/config-guides/scaling-strategies/horizontal-scaling.mdx create mode 100644 docs/deploy/config-guides/scaling-strategies/imgs/horiz-scaling.png create mode 100644 docs/deploy/config-guides/scaling-strategies/index.mdx create mode 100644 docs/deploy/config-guides/scaling-strategies/multi-node.md delete mode 100644 docs/deploy/scaling-strategies/horizontal-scaling.md delete mode 100644 docs/deploy/scaling-strategies/index.md delete mode 100644 docs/deploy/scaling-strategies/multi-node.md diff --git a/docs/deploy/config-guides/authentication.md b/docs/deploy/config-guides/authentication.md index bb479d5f..2e10e013 100644 --- a/docs/deploy/config-guides/authentication.md +++ b/docs/deploy/config-guides/authentication.md @@ -325,151 +325,6 @@ authentication: enabled: true ``` -## Client-side Usage - -### API key - -import APIKeyUsage from '/_includes/clients/api-token-usage.mdx'; - -<APIKeyUsage /> - -We recommend using a client library to authenticate against Weaviate. See [How-to: Connect](../connections/index.mdx) pages for more information. - -### OIDC - -The OIDC standard allows for many different methods *(flows)* of obtaining tokens. The appropriate method can vary depending on your situation, including configurations at the token issuer, and your requirements. - -OIDC authentication flows are outside the scope of this documentation, but here are some options to consider: -1. Use the `client credentials flow` for machine-to-machine authorization. (Note that this authorizes an app, not a user.) - - Validated using Okta and Azure as identity providers; GCP does not support client credentials grant flow (as of December 2022). - - Weaviate's Python client directly supports this method. - - Client credential flows usually do not come with a refresh token and the credentials are saved in the respective clients to acquire a new access token on expiration of the old one. -1. Use the `resource owner password flow` for trusted applications like [Weaviate Cloud](/docs/cloud/manage-clusters/connect). -1. Use `hybrid flow` if Azure is your token issuer or if you would like to prevent exposing passwords. - -### Support for Weaviate clients - -If Weaviate Core is configured to use the `client credentials grant` flow or the `resource owner password flow`, a Weaviate client can instantiate a connection to Weaviate Core that incorporates the authentication flow. - -import OIDCExamples from '/_includes/code/connections/oidc-connect.mdx'; - -<OIDCExamples/> - -### Get and pass tokens manually - -<details> - <summary> - Manually obtaining and passing tokens - </summary> - -For cases or workflows where you may wish to manually obtain a token, we outline below the steps to do so, for the resource owner password flow and hybrid flow. - -#### Resource owner password flow - -1. Send a GET request to `WEAVIATE_INSTANCE_URL/v1/.well-known/openid-configuration` to fetch Weaviate's OIDC configuration (`wv_oidc_config`). Replace WEAVIATE_INSTANCE_URL with your instance URL. -1. Parse the `clientId` and `href` from `wv_oidc_config`. -1. Send a GET request to `href` to fetch the token issuer's OIDC configuration (`token_oidc_config`). -1. If `token_oidc_config` includes the optional `grant_types_supported` key, check that `password` is in the list of values. - - If `password` is not in the list of values, the token issuer is likely not configured for `resource owner password flow`. You may need to reconfigure the token issuer or use another method. - - If the `grant_types_supported` key is not available, you may need to contact the token issuer to see if `resource owner password flow` is supported. -1. Send a POST request to the `token_endpoint` of `token_oidc_config` with the body: - - `{"grant_type": "password", "client_id": client_id, "username": USERNAME, "password": PASSWORD`. Replace `USERNAME` and `PASSWORD` with the actual values. -1. Parse the response (`token_resp`), and look for `access_token` in `token_resp`. This is your Bearer token. - -#### Hybrid flow - -1. Send a GET request to `WEAVIATE_INSTANCE_URL/v1/.well-known/openid-configuration` to fetch Weaviate's OIDC configuration (`wv_oidc_config`). Replace WEAVIATE_INSTANCE_URL with your instance URL. -2. Parse the `clientId` and `href` from `wv_oidc_config` -3. Send a GET request to `href` to fetch the token issuer's OIDC configuration (`token_oidc_config`) -4. Construct a URL (`auth_url`) with the following parameters, based on `authorization_endpoint` from `token_oidc_config`. This will look like the following: - - `{authorization_endpoint}`?client_id=`{clientId}`&response_type=code%20id_token&response_mode=fragment&redirect_url=`{redirect_url}`&scope=openid&nonce=abcd - - the `redirect_url` must have been [pre-registered](https://openid.net/specs/openid-connect-core-1_0.html#AuthRequest) with your token issuer. -5. Go to the `auth_url` in your browser, and log in if prompted. If successful, the token issuer will redirect the browser to the `redirect_url`, with additional parameters that include an `id_token` parameter. -6. Parse the `id_token` parameter value. This is your Bearer token. - -#### Code example - -This example demonstrate how to obtain an OIDC token. - -```python -import requests -import re - -url = "http://localhost:8080" # <-- Replace with your actual Weaviate URL - -# Get Weaviate's OIDC configuration -weaviate_open_id_config = requests.get(url + "/v1/.well-known/openid-configuration") -if weaviate_open_id_config.status_code == "404": - print("Your Weaviate instance is not configured with openid") - -response_json = weaviate_open_id_config.json() -client_id = response_json["clientId"] -href = response_json["href"] - -# Get the token issuer's OIDC configuration -response_auth = requests.get(href) - -if "grant_types_supported" in response_auth.json(): - # For resource owner password flow - assert "password" in response_auth.json()["grant_types_supported"] - - username = "username" # <-- Replace with the actual username - password = "password" # <-- Replace with the actual password - - # Construct the POST request to send to 'token_endpoint' - auth_body = { - "grant_type": "password", - "client_id": client_id, - "username": username, - "password": password, - } - response_post = requests.post(response_auth.json()["token_endpoint"], auth_body) - print("Your access_token is:") - print(response_post.json()["access_token"]) -else: - # For hybrid flow - authorization_url = response_auth.json()["authorization_endpoint"] - parameters = { - "client_id": client_id, - "response_type": "code%20id_token", - "response_mode": "fragment", - "redirect_url": url, - "scope": "openid", - "nonce": "abcd", - } - # Construct 'auth_url' - parameter_string = "&".join([key + "=" + item for key, item in parameters.items()]) - response_auth = requests.get(authorization_url + "?" + parameter_string) - - print("To login, open the following url with your browser:") - print(authorization_url + "?" + parameter_string) - print( - "After the login you will be redirected, the token is the 'id_token' parameter of the redirection url." - ) - - # You could use this regular expression to parse the token - resp_txt = "Redirection URL" - token = re.search("(?<=id_token=).+(?=&)", resp_txt)[0] - -print("Set as bearer token in the clients to access Weaviate.") -``` - -#### Token lifetime - -The token has a configurable expiry time that is set by the token issuer. We suggest establishing a workflow to periodically obtain a new token before expiry. - -</details> - -### Add a Bearer to a Request - -<APIKeyUsage /> - -For example, the cURL command looks like this: - -```bash -curl https://localhost:8080/v1/objects -H "Authorization: Bearer ${WEAVIATE_API_KEY}" | jq -``` - ## Further resources - [Configuration: Authorization and RBAC](./authorization.md) diff --git a/docs/deploy/config-guides/authorization.md b/docs/deploy/config-guides/authorization.md new file mode 100644 index 00000000..51711aac --- /dev/null +++ b/docs/deploy/config-guides/authorization.md @@ -0,0 +1,259 @@ +--- +title: Authorization +image: og/docs/configuration.jpg +# tags: ['authorization'] +--- + +:::info Authentication and authorization +Authentication and authorization are closely related concepts, and sometimes abbreviated as `AuthN` and `AuthZ`. Authentication (`AuthN`) is the process of verifying the identity of a user, while authorization (`AuthZ`) is the process of determining what permissions the user has. +::: + +Weaviate provides differentiated access through [authorization](./authorization.md) levels, based on the user's [authentication](./authentication.md) status. A user can be granted admin permission, read-only permission, or no permission at all. From `v1.29.0`, Weaviate also supports [Role-Based Access Control (RBAC)](/docs/weaviate/configuration/rbac) for more fine-grained control over user permissions. + +The following diagram illustrates the flow of a user request through the authentication and authorization process: + +```mermaid +flowchart TB + User(["Authenticated User"]) --> AuthScheme{"Authorization<br> Scheme?"} + + subgraph rbac ["RBAC Authorization"] + direction TB + AdminRole["Admin Role"] + ViewerRole["Viewer Role"] + CustomRole["Custom Roles"] + + Perms1["Full Access<br> All Operations"] + Perms2["Read-only<br> Access"] + Perms3["Custom<br> Permissions"] + + AdminRole --> Perms1 + ViewerRole --> Perms2 + CustomRole --> Perms3 + end + + subgraph adminlist ["Admin List Authorization"] + direction TB + AdminUser["Admin Users"] + ReadOnly["Read-only Users"] + AnonUser["Anonymous Users<br> (Optional)"] + + AllPerms["Full Access<br> All Operations"] + ReadPerms["Read-only<br> Access"] + + AdminUser --> AllPerms + ReadOnly --> ReadPerms + AnonUser -.->|"If enabled"| AllPerms + AnonUser -.->|"If enabled"| ReadPerms + end + + subgraph undiffer ["Undifferentiated Access"] + AllAccess["Full Access<br> All Operations"] + end + + AuthScheme -->|"RBAC"| rbac + AuthScheme -->|"Admin List"| adminlist + AuthScheme -->|"Undifferentiated"| undiffer + + %% Style nodes + style User fill:#f9f9f9,stroke:#666 + style AuthScheme fill:#f5f5f5,stroke:#666 + style AnonUser fill:#f9f9f9,stroke:#666,stroke-dasharray: 5 5 + + %% Style subgraphs + style rbac fill:#e6f3ff,stroke:#4a90e2 + style adminlist fill:#e6ffe6,stroke:#2ea44f + style undiffer fill:#fff0e6,stroke:#ff9933 +``` + +## Available authorization schemes + +The following authorization schemes are available in Weaviate: + +- [Role-Based Access Control (RBAC)](#role-based-access-control-rbac) +- [Admin list](#admin-list) +- [Undifferentiated access](#undifferentiated-access) + +In the Admin list authorization scheme, [anonymous users](#anonymous-users) can be granted permissions. + +The way to configure authorization differs by your deployment method, depending on whether you are running Weaviate in Docker or Kubernetes. Below, we provide examples for both. + +:::info What about Weaviate Cloud (WCD)? +For Weaviate Cloud (WCD) instances, authorization is pre-configured with Admin list access. You can [authenticate against Weaviate](../connections/connect-cloud.mdx) with your WCD credentials using OIDC, or [with admin or read-only API keys](/docs/cloud/platform/manage-api-keys). +<br/> + +RBAC access will be available in WCD in a future release. +::: + +## Role-Based Access Control (RBAC) + +:::info Available from `v1.29` +Role-based access control (RBAC) is generally available in Weaviate from version `v1.29`. +::: + +Role-based access control (RBAC) is a method of restricting access to resources based on the roles of users. In Weaviate, RBAC allows you to define **roles** and assign **permissions** to those roles. Users can then be assigned to roles, and inherit the permissions associated with those roles. + +Check out the dedicated **[RBAC documentation](./rbac/index.mdx)** for instructions on how to [configure RBAC](./rbac/configuration.md) in your Weaviate instance and examples on how to [manage roles an users](./rbac/manage-roles.mdx). + +## Admin list + +The "Admin list" authorization scheme allows you to specify a list of admin users with full permissions to perform all actions in Weaviate, and a list of read-only users with permissions to perform only read operations. + +These permissions cannot be customized or extended. For more fine-grained control over user permissions, use [RBAC](#role-based-access-control-rbac) instead. + +Admin list authorization scheme cannot be used in combination with RBAC. + +### Admin list: Docker + +Admin list authorization can be configured using environment variables. In Docker Compose, set them in the configuration file (`docker-compose.yml`) such as in the following example: + +```yaml +services: + weaviate: + ... + environment: + ... + # Example authentication configuration using API keys + # OIDC access can also be used with RBAC + AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED: 'false' + AUTHENTICATION_APIKEY_ENABLED: 'true' + AUTHENTICATION_APIKEY_ALLOWED_KEYS: 'user-a-key,user-b-key,user-c-key' + AUTHENTICATION_APIKEY_USERS: 'user-a,user-b,user-c' + + # Authorization configuration + # Enable admin list + AUTHORIZATION_ADMINLIST_ENABLED: 'true' + + # Provide pre-configured roles to users + # This assumes that the relevant user has been authenticated and identified + # + # You MUST define at least one admin user + AUTHORIZATION_ADMINLIST_USERS: 'user-a' + AUTHORIZATION_ADMINLIST_READONLY_USERS: 'user-b' +``` + +This configuration: +- Enables Admin list authorization +- Configures `user-a` as a user with built-in admin permissions +- Configures `user-b` as a user with built-in viewer permissions + +Note that in this configuration, `user-c` has no permissions. + +### Admin list: Kubernetes + +For Kubernetes deployments using Helm, API key authentication can be configured in the `values.yaml` file under the `authorization` section. Here's an example configuration: + +```yaml +# Example authentication configuration using API keys +authentication: + anonymous_access: + enabled: false + apikey: + enabled: true + allowed_keys: + - user-a-key + - user-b-key + - user-c-key + users: + - user-a + - user-b + - user-c + +# Authorization configuration +authorization: + admin_list: + # Enable admin list + enabled: true + + # Provide pre-configured roles to users + # This assumes that the relevant user has been authenticated and identified + # + # You MUST define at least one admin user + users: + - user-a + read_only_users: + - user-b +``` + +### Anonymous users + +Anonymous users are identified as `anonymous` in Weaviate. In the Admin list authorization scheme, you can apply permissions to anonymous users. The RBAC authorization scheme is not compatible with anonymous users. + +To confer permissions to anonymous users in the Admin list scheme, you can use the `anonymous` keyword in the configuration as shown below. + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +<Tabs groupId="platforms"> + + <TabItem value="docker" label="Docker"> + +```yaml +services: + weaviate: + ... + environment: + ... + # Enable anonymous access + AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED: 'true' + + # Configure admin user API key + AUTHORIZATION_ADMINLIST_ENABLED: 'true' + AUTHENTICATION_APIKEY_ALLOWED_KEYS: 'user-a-key' + AUTHENTICATION_APIKEY_USERS: 'user-a' + + # Enable admin list and provide admin access to "user-a" only + AUTHORIZATION_ADMINLIST_USERS: 'user-a' + # Provide read-only access to anonymous users + AUTHORIZATION_ADMINLIST_READONLY_USERS: 'anonymous' +``` + + </TabItem> + + <TabItem value="kubernetes" label="Kubernetes"> + +```yaml +# Example authentication configuration using API keys +authentication: + # Enable anonymous access + anonymous_access: + enabled: true + + # Enable admin list and configure admin user API key + apikey: + enabled: true + allowed_keys: + - user-a-key + users: + - user-a + +authorization: + # Enable admin list and provide admin access to "user-a" only + admin_list: + # Enable admin list + enabled: true + users: + - user-a + # Provide read-only access to anonymous users + read_only_users: + - anonymous +``` + + </TabItem> + +</Tabs> + +## Undifferentiated access + +Weaviate can be configured to provide undifferentiated access, by disabling authentication for example and enabling anonymous access. This configuration is strongly discouraged except for development or evaluation purposes. + +## Further resources + +- [Configuration: Authentication](./authentication.md) +- [Configuration: RBAC](./rbac/index.mdx) +- [References: Environment variables / Authentication and Authorization](../config-refs/env-vars/index.md#authentication-and-authorization) + +## Questions and feedback + +import DocsFeedback from '/_includes/docs-feedback.mdx'; + +<DocsFeedback/> diff --git a/docs/weaviate/configuration/backups.md b/docs/deploy/config-guides/backups.md similarity index 96% rename from docs/weaviate/configuration/backups.md rename to docs/deploy/config-guides/backups.md index e59e0920..073c2e14 100644 --- a/docs/weaviate/configuration/backups.md +++ b/docs/deploy/config-guides/backups.md @@ -1,6 +1,5 @@ --- title: Backups -sidebar_position: 12 image: og/docs/configuration.jpg --- @@ -62,15 +61,6 @@ Restart Weaviate to apply the new configuration. Then, you are ready to start a /> </TabItem> - <TabItem value="pyv3" label="Python Client v3"> - <FilteredTextBlock - text={PyCodeV3} - startMarker="# START CreateBackup" - endMarker="# END CreateBackup" - language="pyv3" - /> - </TabItem> - <TabItem value="js" label="JS/TS Client v3"> <FilteredTextBlock text={TSCodeBackup} @@ -346,15 +336,6 @@ The `include` and `exclude` options are mutually exclusive. You can set none or /> </TabItem> - <TabItem value="pyv3" label="Python Client v3"> - <FilteredTextBlock - text={PyCodeV3} - startMarker="# START CreateBackup" - endMarker="# END CreateBackup" - language="pyv3" - /> - </TabItem> - <TabItem value="js" label="JS/TS Client v3"> <FilteredTextBlock text={TSCodeBackup} @@ -435,14 +416,6 @@ The response contains a `"status"` field. If the status is `SUCCESS`, the backup language="py" /> </TabItem> - <TabItem value="pyv3" label="Python Client v3"> - <FilteredTextBlock - text={PyCodeV3} - startMarker="# START StatusCreateBackup" - endMarker="# END StatusCreateBackup" - language="pyv3" - /> - </TabItem> <TabItem value="js" label="JS/TS Client v3"> <FilteredTextBlock @@ -544,14 +517,6 @@ Versions prior to `v1.23.13` had a bug that could lead to data not being stored language="py" /> </TabItem> - <TabItem value="pyv3" label="Python Client v3"> - <FilteredTextBlock - text={PyCodeV3} - startMarker="# START RestoreBackup" - endMarker="# END RestoreBackup" - language="pyv3" - /> - </TabItem> <TabItem value="js" label="JS/TS Client v3"> <FilteredTextBlock @@ -617,15 +582,6 @@ The response contains a `"status"` field. If the status is `SUCCESS`, the restor language="py" /> </TabItem> - <TabItem value="pyv3" label="Python Client v3"> - <FilteredTextBlock - text={PyCodeV3} - startMarker="# START StatusRestoreBackup" - endMarker="# END StatusRestoreBackup" - language="pyv3" - /> - </TabItem> - <TabItem value="js" label="JS/TS Client v3"> <FilteredTextBlock text={TSCodeStatus} diff --git a/docs/deploy/config-guides/index.mdx b/docs/deploy/config-guides/index.mdx new file mode 100644 index 00000000..8d9ba052 --- /dev/null +++ b/docs/deploy/config-guides/index.mdx @@ -0,0 +1,34 @@ +--- +title: Configuration Guides +sidebar_position: 0 +--- + +Deploying Weaviate successfully depends on robust, well-considered configuration. +This section outlines key configuration requirements and best practices for production deployments. +Whether you are setting up a new environment or optimizing an existing one, configuration choices impact security, scalability, and reliability. + +### Configuring your deployment + +#### Environment Variables and Secrets Management +- Configure environment variables for connection strings, ports, and security credentials. + +#### Resource Limits and Autoscaling +- Set CPU and memory requests and limits for each service. + +#### Persistence and Storage Configuration +- Define volumes for persistent data. +- Enable backups and configure retention policies. + +#### Security Hardening +- Configure TLS/SSL certificates for encrypted communication. +- Use RBAC to restrict access to configuration endpoints and dashboards. + +#### Monitoring, Metrics, and Logging +- Set up metrics exporters and logging targets. +- Define alert thresholds based on config misalignment or performance drops. + +## Questions and feedback + +import DocsFeedback from '/_includes/docs-feedback.mdx'; + +<DocsFeedback/> diff --git a/docs/deploy/monitoring-obs/grafana-prometheus.md b/docs/deploy/config-guides/monitoring-obs/grafana-prometheus.md similarity index 100% rename from docs/deploy/monitoring-obs/grafana-prometheus.md rename to docs/deploy/config-guides/monitoring-obs/grafana-prometheus.md diff --git a/docs/deploy/config-guides/img/weaviate-sample-dashboard-async-queue.png b/docs/deploy/config-guides/monitoring-obs/img/weaviate-sample-dashboard-async-queue.png similarity index 100% rename from docs/deploy/config-guides/img/weaviate-sample-dashboard-async-queue.png rename to docs/deploy/config-guides/monitoring-obs/img/weaviate-sample-dashboard-async-queue.png diff --git a/docs/deploy/config-guides/img/weaviate-sample-dashboard-importing.png b/docs/deploy/config-guides/monitoring-obs/img/weaviate-sample-dashboard-importing.png similarity index 100% rename from docs/deploy/config-guides/img/weaviate-sample-dashboard-importing.png rename to docs/deploy/config-guides/monitoring-obs/img/weaviate-sample-dashboard-importing.png diff --git a/docs/deploy/config-guides/img/weaviate-sample-dashboard-lsm.png b/docs/deploy/config-guides/monitoring-obs/img/weaviate-sample-dashboard-lsm.png similarity index 100% rename from docs/deploy/config-guides/img/weaviate-sample-dashboard-lsm.png rename to docs/deploy/config-guides/monitoring-obs/img/weaviate-sample-dashboard-lsm.png diff --git a/docs/deploy/config-guides/img/weaviate-sample-dashboard-objects.png b/docs/deploy/config-guides/monitoring-obs/img/weaviate-sample-dashboard-objects.png similarity index 100% rename from docs/deploy/config-guides/img/weaviate-sample-dashboard-objects.png rename to docs/deploy/config-guides/monitoring-obs/img/weaviate-sample-dashboard-objects.png diff --git a/docs/deploy/config-guides/img/weaviate-sample-dashboard-startup.png b/docs/deploy/config-guides/monitoring-obs/img/weaviate-sample-dashboard-startup.png similarity index 100% rename from docs/deploy/config-guides/img/weaviate-sample-dashboard-startup.png rename to docs/deploy/config-guides/monitoring-obs/img/weaviate-sample-dashboard-startup.png diff --git a/docs/deploy/config-guides/img/weaviate-sample-dashboard-usage.png b/docs/deploy/config-guides/monitoring-obs/img/weaviate-sample-dashboard-usage.png similarity index 100% rename from docs/deploy/config-guides/img/weaviate-sample-dashboard-usage.png rename to docs/deploy/config-guides/monitoring-obs/img/weaviate-sample-dashboard-usage.png diff --git a/docs/deploy/config-guides/img/weaviate-sample-dashboard-vector.png b/docs/deploy/config-guides/monitoring-obs/img/weaviate-sample-dashboard-vector.png similarity index 100% rename from docs/deploy/config-guides/img/weaviate-sample-dashboard-vector.png rename to docs/deploy/config-guides/monitoring-obs/img/weaviate-sample-dashboard-vector.png diff --git a/docs/deploy/monitoring-obs/index.md b/docs/deploy/config-guides/monitoring-obs/index.mdx similarity index 98% rename from docs/deploy/monitoring-obs/index.md rename to docs/deploy/config-guides/monitoring-obs/index.mdx index 9e5e8fe7..3c355582 100644 --- a/docs/deploy/monitoring-obs/index.md +++ b/docs/deploy/config-guides/monitoring-obs/index.mdx @@ -1,6 +1,5 @@ --- title: Monitoring and Observability sidebar_position: 0 - --- diff --git a/docs/deploy/config-guides/monitoring.md b/docs/deploy/config-guides/monitoring-obs/monitoring.md similarity index 100% rename from docs/deploy/config-guides/monitoring.md rename to docs/deploy/config-guides/monitoring-obs/monitoring.md diff --git a/docs/deploy/config-guides/scaling-strategies/horizontal-scaling.mdx b/docs/deploy/config-guides/scaling-strategies/horizontal-scaling.mdx new file mode 100644 index 00000000..80a47b01 --- /dev/null +++ b/docs/deploy/config-guides/scaling-strategies/horizontal-scaling.mdx @@ -0,0 +1,369 @@ +--- +title: Horizontal Scaling Deployment Strategies +--- + +import FilteredTextBlock from '@site/src/components/Documentation/FilteredTextBlock'; +import TabItem from '@theme/TabItem'; +import Tabs from '@theme/Tabs'; +import PyCode from '!!raw-loader!/_includes/code/howto/manage-data.collections.py'; +import PyCodeV3 from '!!raw-loader!/_includes/code/howto/manage-data.collections-v3.py'; +import TSCode from '!!raw-loader!/_includes/code/howto/manage-data.collections.ts'; +import TSCodeLegacy from '!!raw-loader!/_includes/code/howto/manage-data.collections-v2.ts'; +import JavaCode from '!!raw-loader!/_includes/code/howto/java/src/test/java/io/weaviate/docs/manage-data.classes.java'; +import GoCode from '!!raw-loader!/_includes/code/howto/go/docs/manage-data.classes_test.go'; + + +This document provides detailed implementation guidance for horizontally scaling your Weaviate deployment. + +## Scaling Methods + + + +### Replication + +Replication creates redundant copies of your data, it is useful when your data needs to be highly available. + +### Sharding + +Sharding divides data across nodes, it is useful when your dataset is too large for just a single node. + + +### Choosing your strategy + +<table className="decision-matrix"> + <colgroup> + <col style={{ width: '25%' }} /> + <col style={{ width: '15%' }} /> + <col style={{ width: '15%' }} /> + <col style={{ width: '15%' }} /> + <col style={{ width: '30%' }} /> + </colgroup> + <thead> + <tr> + <th>Requirement/Goal</th> + <th>Sharding</th> + <th>Replication</th> + <th>Both Combined</th> + <th>Primary Consideration</th> + </tr> + </thead> + <tbody> + <tr> + <td> + <strong>Handle dataset too large for single node</strong> + </td> + <td className="access-cell" style={{ textAlign: 'center' }}> + <div className="access-level">Yes</div> + </td> + <td className="access-cell" style={{ textAlign: 'center' }}> + <div className="access-level">No</div> + </td> + <td className="access-cell" style={{ textAlign: 'center' }}> + <div className="access-level">Yes</div> + </td> + <td className="constraints-cell"> + <div className="constraints-level"> + <p><strong>How much data are you storing?</strong></p> + <ul> + <li> + Vector dimensions and count determine memory requirements + </li> + <li> + Sharding divides this across nodes + </li> + </ul> + </div> + </td> + </tr> + <tr> + <td> + <strong>Improve query throughput</strong> + </td> + <td className="access-cell" style={{ textAlign: 'center' }}> + <div className="access-level">Maybe*</div> + </td> + <td className="access-cell" style={{ textAlign: 'center' }}> + <div className="access-level">Yes</div> + </td> + <td className="access-cell" style={{ textAlign: 'center' }}> + <div className="access-level">Yes</div> + </td> + <td className="constraints-cell"> + <div className="constraints-level"> + <p><strong>Is your workload read-heavy?</strong></p> + <ul> + <li> + Replication allows distributing read queries across nodes + </li> + <li> + Sharding may help with certain query patterns + </li> + </ul> + </div> + </td> + </tr> + <tr> + <td> + <strong>Accelerate data imports</strong> + </td> + <td className="access-cell" style={{ textAlign: 'center' }}> + <div className="access-level">Yes</div> + </td> + <td className="access-cell" style={{ textAlign: 'center' }}> + <div className="access-level">No</div> + </td> + <td className="access-cell" style={{ textAlign: 'center' }}> + <div className="access-level">Yes</div> + </td> + <td className="constraints-cell"> + <div className="constraints-level"> + <p><strong>Is import speed a priority?</strong></p> + <ul> + <li> + Sharding enables parallel processing of imports + </li> + <li> + Replication adds overhead during imports + </li> + </ul> + </div> + </td> + </tr> + <tr> + <td> + <strong>Ensure high availability</strong> + </td> + <td className="access-cell" style={{ textAlign: 'center' }}> + <div className="access-level">No</div> + </td> + <td className="access-cell" style={{ textAlign: 'center' }}> + <div className="access-level">Yes</div> + </td> + <td className="access-cell" style={{ textAlign: 'center' }}> + <div className="access-level">Yes</div> + </td> + <td className="constraints-cell"> + <div className="constraints-level"> + <p><strong>Can you tolerate downtime?</strong></p> + <ul> + <li> + Replication provides redundancy if nodes fail + </li> + <li> + Without replication, shard loss = data loss + </li> + </ul> + </div> + </td> + </tr> + <tr> + <td> + <strong>Enable zero-downtime upgrades</strong> + </td> + <td className="access-cell" style={{ textAlign: 'center' }}> + <div className="access-level">No</div> + </td> + <td className="access-cell" style={{ textAlign: 'center' }}> + <div className="access-level">Yes</div> + </td> + <td className="access-cell" style={{ textAlign: 'center' }}> + <div className="access-level">Yes</div> + </td> + <td className="constraints-cell"> + <div className="constraints-level"> + <p><strong>How critical is continuous operation?</strong></p> + <ul> + <li> + Replication allows rolling updates + </li> + <li> + Production systems typically require this capability + </li> + </ul> + </div> + </td> + </tr> + <tr> + <td> + <strong>Optimize resource utilization</strong> + </td> + <td className="access-cell" style={{ textAlign: 'center' }}> + <div className="access-level">Yes</div> + </td> + <td className="access-cell" style={{ textAlign: 'center' }}> + <div className="access-level">Maybe*</div> + </td> + <td className="access-cell" style={{ textAlign: 'center' }}> + <div className="access-level">Maybe*</div> + </td> + <td className="constraints-cell"> + <div className="constraints-level"> + <p><strong>Are you resource-constrained?</strong></p> + <ul> + <li> + Sharding distributes load efficiently + </li> + <li> + Replication adds resource overhead + </li> + </ul> + </div> + </td> + </tr> + <tr> + <td> + <strong>Geographic distribution</strong> + </td> + <td className="access-cell" style={{ textAlign: 'center' }}> + <div className="access-level">No</div> + </td> + <td className="access-cell" style={{ textAlign: 'center' }}> + <div className="access-level">Yes</div> + </td> + <td className="access-cell" style={{ textAlign: 'center' }}> + <div className="access-level">Yes</div> + </td> + <td className="constraints-cell"> + <div className="constraints-level"> + <p><strong>Do you need multi-region support?</strong></p> + <ul> + <li> + Replicas can be deployed across regions + </li> + <li> + Reduces latency for geographically distributed users + </li> + </ul> + </div> + </td> + </tr> + </tbody> +</table> + +**This may serve as a partial solution and will depend on your configuration.* + +### Sharding: Divide and Conquer + +You've made the decision to shard your data, now let's get it configured: + + +<Tabs groupId="languages"> + <TabItem value="py" label="Python Client v4"> + <FilteredTextBlock + text={PyCode} + startMarker="# START ShardingSettings" + endMarker="# END ShardingSettings" + language="py" + /> + </TabItem> + + <TabItem value="js" label="JS/TS Client v3"> + <FilteredTextBlock + text={TSCode} + startMarker="// START ShardingSettings" + endMarker="// END ShardingSettings" + language="ts" + /> + </TabItem> + + <TabItem value="js2" label="JS/TS Client v2"> + <FilteredTextBlock + text={TSCodeLegacy} + startMarker="// START ShardingSettings" + endMarker="// END ShardingSettings" + language="tsv2" + /> + </TabItem> + +</Tabs> + +#### Parameters + +These parameters are used to configure your collection shards: + +| Parameter | Type | Description | +| :-------------------- | :------ | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `desiredCount` | integer | *Immutable, Optional*. Controls the target number of physical shards for the collection index. Defaults to the number of nodes in the cluster, but can be explicitly set lower. If set higher than the node count, some nodes will host multiple shards. | +| `virtualPerPhysical` | integer | *Immutable, Optional*. Defines how many virtual shards correspond to one physical shard, defaulting to `128`. Using virtual shards aids in reducing data movement during resharding. | +| `desiredVirtualCount` | integer | *Read-only*. Shows the target total number of virtual shards, calculated as `desiredCount * virtualPerPhysical`. | + + +### Replication: An army of clones + +Configure your data's replication to ensure it's always available: + +import RaftRFChangeWarning from '/_includes/1-25-replication-factor.mdx'; + +<RaftRFChangeWarning/> + +Configure replication settings, such as [async replication](/docs/weaviate/configuration/replication#async-replication-settings) and [deletion resolution strategy](../concepts/replication-architecture/consistency.md#deletion-resolution-strategies). + +<Tabs groupId="languages"> + <TabItem value="py" label="Python Client v4"> + <FilteredTextBlock + text={PyCode} + startMarker="# START AllReplicationSettings" + endMarker="# END AllReplicationSettings" + language="py" + docRefs={[ + "weaviate.collections.classes.html#weaviate.collections.classes.config.Configure" + ]} + /> + </TabItem> + + <TabItem value="js" label="JS/TS Client v3"> + <FilteredTextBlock + text={TSCode} + startMarker="// START AllReplicationSettings" + endMarker="// END AllReplicationSettings" + language="ts" + /> + </TabItem> + + <TabItem value="js2" label="JS/TS Client v2"> + <FilteredTextBlock + text={TSCodeLegacy} + startMarker="// START AllReplicationSettings" + endMarker="// END AllReplicationSettings" + language="tsv2" + /> + </TabItem> + <TabItem value="curl" label="cURL"> + +```bash +curl \ +-X POST \ +-H "Content-Type: application/json" \ +-d '{ + "class": "Article", + "properties": [ + { + "dataType": [ + "string" + ], + "description": "Title of the article", + "name": "title" + } + ], + "replicationConfig": { + "factor": 3, + "asyncEnabled": true, + "deletionStrategy": "TimeBasedResolution" + } +}' \ +http://localhost:8080/v1/schema +``` + +</TabItem> +</Tabs> + +#### Sharding and Replication: The Dynamic Duo + +In a highly available environment, combining sharding and replication leverages the power and capabilities of both methods to be a dynamic duo that keeps your deployment highly available. + + +## Questions and feedback + +import DocsFeedback from '/_includes/docs-feedback.mdx'; + +<DocsFeedback/> diff --git a/docs/deploy/config-guides/scaling-strategies/imgs/horiz-scaling.png b/docs/deploy/config-guides/scaling-strategies/imgs/horiz-scaling.png new file mode 100644 index 0000000000000000000000000000000000000000..433be7441a77390c2b7d07c2889e357ed96118d2 GIT binary patch literal 139432 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%0DVUGmL#rn050 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 LjdV({IYj>-@jsN@ literal 0 HcmV?d00001 diff --git a/docs/deploy/config-guides/scaling-strategies/index.mdx b/docs/deploy/config-guides/scaling-strategies/index.mdx new file mode 100644 index 00000000..22d01448 --- /dev/null +++ b/docs/deploy/config-guides/scaling-strategies/index.mdx @@ -0,0 +1,53 @@ +--- + +title: Scaling Overview +sidebar_position: 1 + +--- + +Interested in taking a journey to Weaviate's wonderful world of horizontal scaling and learn about the various scaling strategies available for your deployments? As your database grows from an experimental playground to a mission-critical infrastructure, you'll need strategies to scale effectively. So don't worry, we've got you covered! + +### Why Scaling Matters + +Vector databases face unique scaling challenges and as your data grows: + +- Memory requirements increase dramatically with vector dimensions and dataset size +- Query performance becomes critical as user traffic grows +- System reliability becomes non-negotiable for production deployments +- Cost optimization becomes increasingly important + + +### High Availability: Downtime is not an option + +A highly available architecture ensures that your deployment is operational even when individual components fails, this architecture is essential for: + +- Mission-critical applications where search functionality cannot go offline +- Zero-downtime maintenance for seamless upgrades and updates +- Resilience against hardware failures or cloud provider issues +- Consistent performance even during peak traffic periods + +### Horizontal Scaling: Growing out, not up + +Your deployment will grow beyond the limits of a single machine by distributing your workload across multiple nodes by using horizontal scaling. Implementing this will allow your deployment to: + +- Handle larger datasets that exceed single-machine memory +- Improve query throughput by distributing read operations +- Accelerate imports through parallel processing +- Optimize resource usage across your infrastructure + + +### Next Steps + +- [High Availability Strategies] +- [Horizontal Scaling] + +#### Further resources + +- [Concepts: Horizontal Scaling](/docs/weaviate/concepts/cluster.md) + + +## Questions and feedback + +import DocsFeedback from '/_includes/docs-feedback.mdx'; + +<DocsFeedback/> \ No newline at end of file diff --git a/docs/deploy/config-guides/scaling-strategies/multi-node.md b/docs/deploy/config-guides/scaling-strategies/multi-node.md new file mode 100644 index 00000000..456eaca2 --- /dev/null +++ b/docs/deploy/config-guides/scaling-strategies/multi-node.md @@ -0,0 +1,4 @@ +--- +title: Deploying Highly Available Applications +--- + diff --git a/docs/deploy/installation-guides/aws-cli.md b/docs/deploy/installation-guides/aws-cli.md index 314ce6df..0a66fe1c 100644 --- a/docs/deploy/installation-guides/aws-cli.md +++ b/docs/deploy/installation-guides/aws-cli.md @@ -26,11 +26,58 @@ eksctl version ### Step 1: Create the Cluster +To create your cluster, prepare a `yaml` file that with a name of your choosing (e.g. `eks-cluster.yaml`) + ```bash -eksctl create cluster --name <your-cluster-name-here> --region <your-region-here> --nodegroup-name <nodegroup-name-here> --nodes 3 --nodes-min 2 --nodes-max 4 --node-type t3.medium +apiVersion: eksctl.io/v1alpha5 +kind: ClusterConfig +metadata: + name: 'your-cluster-name' # Replace with your desired cluster name + region: 'your-region' # Replace with your desired AWS region + version: "1.33" # Kubernetes version + +iam: + withOIDC: true # Enable IAM OIDC provider + + serviceAccounts: + - metadata: + name: aws-load-balancer-controller + namespace: kube-system + wellKnownPolicies: + awsLoadBalancerController: true + +managedNodeGroups: + - name: node-group-name + labels: { role: worker } + instanceType: t3.large # Choose an appropriate instance type + desiredCapacity: 3 # Number of nodes + minSize: 2 # Minimum number of nodes for autoscaling + maxSize: 5 # Maximum number of nodes for autoscaling + privateNetworking: true # Use private networking + volumeSize: 80 # Root volume size in GB + volumeType: gp3 # Root volume type + +addons: + - name: vpc-cni + version: latest + attachPolicyARNs: + - arn:aws:iam::aws:policy/AmazonEKS_CNI_Policy + - name: coredns + version: latest + - name: kube-proxy + version: latest + - name: aws-ebs-csi-driver + version: latest + wellKnownPolicies: + ebsCSIController: true # Enable EBS CSI driver ``` -This creates an EKS cluster within your specified region with an autoscaling node group. There are 3 nodes for high availability and having autoscaling enabled allows for the cluster to dynamically adjust resources based on demand. +This creates an EKS cluster within your specified region with an autoscaling node group. There are 3 nodes for high availability and having autoscaling enabled allows for the cluster to dynamically adjust resources based on demand. + +Run this command to create your EKS cluster: +``` +eksctl create cluster -f your-file-name.yaml +``` #### Enable `kubectl` to interact with the newly created cluster: @@ -38,26 +85,15 @@ This creates an EKS cluster within your specified region with an autoscaling nod aws eks --region <your-region> update-kubeconfig --name <your-cluster-name> ``` -#### Verify that the node has been created and that you are able to interact with the cluster: +#### Verify that the cluster has been created and that you are able to interact with it: ```bash kubectl get nodes ``` -### Step 2: Enable Persistent Storage on the Cluster - -Peristent storage is required for running Weaviate on a Kubernetes cluster, it ensures that data is retained should a pod restart, a node crashes, or a cluster scales up or down. +#### Step 2: Add Storage Class -#### Add the EBS CSI Driver Add-On -```bash -eksctl create addon --name aws-ebs-csi-driver --cluster <your-cluster-name> --region <your-region> --service-account-role-arn <arn:aws:iam::<your-account-id>:role/AmazonEKS_EBS_CSI_DriverRole> -``` - -The above adds the EBS CSI Driver add-on for your cluster. After adding the add-on, a storage class and `PersistentValueClaim` is needed to enable persistent storage. - -#### Add Storage Class - -After adding the EBS CSI Driver add-on, you'll need to create a `storageclass.yaml` file: +After creating your cluster and verifying that you can interact with it , you'll need to create a `storageclass.yaml` file: ``` apiVersion: storage.k8s.io/v1 kind: StorageClass @@ -74,35 +110,16 @@ allowVolumeExpansion: true After creating the storage class, apply it: ```kubectl apply -f <your-storageclass-name>.yaml``` -#### Create a `PersistentValueClaim` - -After creating and applying the Storage class, you'll need to also create a `PersistentValueClaim` file: - -```apiVersion: v1 -kind: PersistentVolumeClaim -metadata: - name: <your-pvc-name> -spec: - accessModes: - - ReadWriteOnce - storageClassName: <your-storageclass-name> - resources: - requests: - storage: 10Gi -``` -After creating the persistent value claim, you also need to apply it: -```kubectl apply -f <your-pvc-name>.yaml``` -#### Verify your storage class and PersistentValueClaim have both been applied +#### Verify your storage class and has been created and applied ``` kubectl get sc -kubectl get pvc ``` ### Step 3: Add Weaviate to EKS -After creating +After adding persistent storage to your cluster, you can now deploy Weaviate into it. #### Create a Weaviate namespace: diff --git a/docs/deploy/installation-guides/aws-installation.md b/docs/deploy/installation-guides/aws-installation.md index 6427e623..8854e1e0 100644 --- a/docs/deploy/installation-guides/aws-installation.md +++ b/docs/deploy/installation-guides/aws-installation.md @@ -18,8 +18,6 @@ It is easy to deploy a Weaviate cluster through the AWS Marketplace. You can use [AWS Marketplace](https://aws.amazon.com/marketplace/pp/prodview-ng2dfhb4yjoic?sr=0-3&ref_=beagle&applicationId=AWSMPContessa) to directly launch a Weaviate cluster. - - ## Installation instructions ### AWS Marketplace diff --git a/docs/deploy/scaling-strategies/horizontal-scaling.md b/docs/deploy/scaling-strategies/horizontal-scaling.md deleted file mode 100644 index 7bffcb57..00000000 --- a/docs/deploy/scaling-strategies/horizontal-scaling.md +++ /dev/null @@ -1 +0,0 @@ -# Horizontal Scaling Placeholder \ No newline at end of file diff --git a/docs/deploy/scaling-strategies/index.md b/docs/deploy/scaling-strategies/index.md deleted file mode 100644 index 7cc631f4..00000000 --- a/docs/deploy/scaling-strategies/index.md +++ /dev/null @@ -1 +0,0 @@ -# Placeholder Scaling Strategy Landing Page \ No newline at end of file diff --git a/docs/deploy/scaling-strategies/multi-node.md b/docs/deploy/scaling-strategies/multi-node.md deleted file mode 100644 index 064cb77b..00000000 --- a/docs/deploy/scaling-strategies/multi-node.md +++ /dev/null @@ -1 +0,0 @@ -# Multi-Node Placeholder \ No newline at end of file diff --git a/docs/weaviate/configuration/authentication.md b/docs/weaviate/configuration/authentication.md index ecedbba3..0777f586 100644 --- a/docs/weaviate/configuration/authentication.md +++ b/docs/weaviate/configuration/authentication.md @@ -70,279 +70,6 @@ The way to configure authentication differs by your deployment method, depending For Weaviate Cloud (WCD) instances, authentication is pre-configured with OIDC and API key access. You can [authenticate against Weaviate](../connections/connect-cloud.mdx) with your WCD credentials using OIDC, or [with API keys](/docs/cloud/platform/manage-api-keys). ::: -## API Key Authentication - -API key authentication is a simple and effective way to authenticate users. Each user is assigned a unique API key, which is used to authenticate the user. - -### API keys: Database users - -When [creating database users programatically](./rbac/manage-users.mdx#create-a-user), each user is assigned a distinct API key at creation time. These API keys can also be [regenerated (rotated)](./rbac/manage-users.mdx#rotate-user-api-key). - -### API keys: Docker - -API key authentication can be configured using environment variables. In Docker Compose, set them in the configuration file (`docker-compose.yml`) such as in the following example: - -```yaml -services: - weaviate: - ... - environment: - ... - # Disable anonymous access. - AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED: 'false' - - # Enables API key authentication. - AUTHENTICATION_APIKEY_ENABLED: 'true' - - # List one or more keys in plaintext separated by commas. Each key corresponds to a specific user identity below. - AUTHENTICATION_APIKEY_ALLOWED_KEYS: 'user-a-key,user-b-key' - - # List one or more user identities, separated by commas. Each identity corresponds to a specific key above. - AUTHENTICATION_APIKEY_USERS: 'user-a,user-b' -``` - -This configuration: -- Disables anonymous access -- Enables API key authentication -- Defines plaintext API keys in `AUTHENTICATION_APIKEY_ALLOWED_KEYS` -- Associates users with the API keys in `AUTHENTICATION_APIKEY_USERS` - -These users can now be assigned permissions based on the authorization settings. - -import DynamicUserManagement from '/_includes/configuration/dynamic-user-management.mdx'; - -<DynamicUserManagement /> - -:::note - -Note that you can either: -- Set one user for all API keys, or -- Define one user per API key (the number of users must match the number of API keys) - -Make sure all listed users are also configured in the authorization settings. - -::: - -### API keys: Kubernetes - -For Kubernetes deployments using Helm, API key authentication can be configured in the `values.yaml` file under the `authentication` section. Here's an example configuration: - -```yaml -authentication: - anonymous_access: - # Disable anonymous access. - enabled: false - - apikey: - # Enables API key authentication. - enabled: true - - # List one or more keys in plaintext separated by commas. Each key corresponds to a specific user identity below. - allowed_keys: - - user-a-key - - user-b-key - - # List one or more user identities, separated by commas. Each identity corresponds to a specific key above. - users: - - user-a - - user-b -``` - -This configuration: -- Disables anonymous access -- Enables API key authentication -- Defines plaintext API keys in `allowed_keys` -- Associates users with the API keys in `users` - -:::warning Environment Variables Take Precedence -If you configure API keys using environment variables, those settings will take precedence over the values in `values.yaml`. To use the Helm values configuration, ensure you have not set the corresponding environment variables. -::: - -For enhanced security in production environments, you can store API keys in Kubernetes secrets and reference them using environment variables instead of storing them as plaintext in the Helm values. - -## OIDC Authentication - -OIDC authentication requires the resource (Weaviate) to validate tokens issued by an identity provider. The identity provider authenticates the user and issues tokens, which are then validated by Weaviate. - -In an example setup, a Weaviate instance acts as the resource, Weaviate Cloud (WCD) acts as the identity provider, and the Weaviate client acts on behalf of the user. - -Any "OpenID Connect" compatible token issuer that implements OpenID Connect Discovery is compatible with Weaviate. - -This document discusses how to configure Weaviate as the resource. - -<details> - <summary> - More about OIDC - </summary> - -With [OpenID Connect](https://openid.net/connect/) (based on OAuth2), an -external identity provider and token issuer ('token issuer' hereafter) is responsible for managing users. - -OIDC authentication requires obtaining a valid token from the token issuer so that it can be sent in the header of any request to Weaviate. This applies to both REST and GraphQL requests. - -When Weaviate receives a token (JSON Web Token or JWT), it verifies -that it was indeed signed by the configured token issuer. If the signature is -correct, all contents of the token are trusted, which authenticates the user based on the information in the token. - -</details> - -:::tip TIP: OIDC and RBAC - -The [user mmanagement API](./rbac/manage-users.mdx#oidc-user-permissions-management) allows you to assign cuton roles and permissions to OIDC users via [Role-Based Access Control (RBAC)](./rbac/index.mdx). - -::: - -### OIDC: Docker - -To configure Weaviate for OIDC-based authentication, add the following environment variables to your configuration file. - -An example `docker-compose.yml` file looks like this: - -```yaml -services: - weaviate: - ... - environment: - ... - # enabled (optional - defaults to false) turns OIDC auth on. All other fields in - # this section will only be validated if enabled is set to true. - AUTHENTICATION_OIDC_ENABLED: 'true' - - # issuer (required) tells weaviate how to discover the token issuer. This - # endpoint must implement the OpenID Connect Discovery spec, so that weaviate - # can retrieve the issuer's public key. - # - # The example URL below uses the path structure commonly found with keycloak - # where an example realm 'my-weaviate-usecase' was created. The exact - # path structure depends on the token issuer. See the token issuer's documentation - # about which endpoint implements OIDC Discovery. - AUTHENTICATION_OIDC_ISSUER: 'http://my-token-issuer/auth/realms/my-weaviate-usecase' - - # client_id (required unless skip_client_id_check is set to true) tells - # Weaviate to check for a particular OAuth 2.0 client_id in the audience claim. - # This is to prevent that a token which was signed by the correct issuer - # but never intended to be used with Weaviate can be used for authentication. - # - # For more information on what clients are in OAuth 2.0, see - # https://tools.ietf.org/html/rfc6749#section-1.1 - AUTHENTICATION_OIDC_CLIENT_ID: 'my-weaviate-client' - - # username_claim (required) tells Weaviate which claim in the token to use for extracting - # the username. The username will be passed to the authorization plugin. - AUTHENTICATION_OIDC_USERNAME_CLAIM: 'email' - - # skip_client_id_check (optional, defaults to false) skips the client_id - # validation in the audience claim as outlined in the section above. - # Not recommended to set this option as it reduces security, only set this - # if your token issuer is unable to provide a correct audience claim - AUTHENTICATION_OIDC_SKIP_CLIENT_ID_CHECK: 'false' - - # scope (optional) these will be used by clients as default scopes for authentication - AUTHENTICATION_OIDC_SCOPES: '' -``` - -:::info OIDC and Azure -As of November 2022, we were aware of some differences in Microsoft Azure's OIDC implementation compared to others. If you are using Azure and experiencing difficulties, [this external blog post](https://xsreality.medium.com/making-azure-ad-oidc-compliant-5734b70c43ff) may be useful. -::: - -### OIDC: Kubernetes - -For Kubernetes deployments using Helm, OIDC authentication can be configured in the `values.yaml` file under the `authentication` section. Here's an example configuration: - -```yaml -authentication: - anonymous_access: - # Disable anonymous access. - enabled: false - oidc: - # enabled (optional - defaults to false) turns OIDC auth on. All other fields in - # this section will only be validated if enabled is set to true. - enabled: true - - # issuer (required) tells weaviate how to discover the token issuer. This - # endpoint must implement the OpenID Connect Discovery spec, so that weaviate - # can retrieve the issuer's public key. - # - # The example URL below uses the path structure commonly found with keycloak - # where an example realm 'my-weaviate-usecase' was created. The exact - # path structure depends on the token issuer. See the token issuer's documentation - # about which endpoint implements OIDC Discovery. - issuer: 'http://my-token-issuer/auth/realms/my-weaviate-usecase' - - # client_id (required unless skip_client_id_check is set to true) tells - # Weaviate to check for a particular OAuth 2.0 client_id in the audience claim. - # This is to prevent that a token which was signed by the correct issuer - # but never intended to be used with Weaviate can be used for authentication. - # - # For more information on what clients are in OAuth 2.0, see - # https://tools.ietf.org/html/rfc6749#section-1.1 - client_id: 'my-weaviate-client' - - # username_claim (required) tells Weaviate which claim in the token to use for extracting - # the username. The username will be passed to the authorization plugin. - username_claim: 'email' - - # skip_client_id_check (optional, defaults to false) skips the client_id - # validation in the audience claim as outlined in the section above. - # Not recommended to set this option as it reduces security, only set this - # if your token issuer is unable to provide a correct audience claim - skip_client_id_check: 'false' - - # scope (optional) these will be used by clients as default scopes for authentication - scopes: '' - - # groups_claim: '' -``` - -### Note: Configuring the OIDC token issuer - -Configuring the OIDC token issuer is outside the scope of this document, but here are a few options as a starting point: - -- For simple use-cases such as for a single user, you can use Weaviate Cloud (WCD) as the OIDC token issuer. To do so: - - Make sure you have a WCD account (you can [sign up here](https://console.weaviate.cloud/)). - - In the Docker Compose file (e.g. `docker-compose.yml`), specify: - - `https://auth.wcs.api.weaviate.io/auth/realms/SeMI` as the issuer (in `AUTHENTICATION_OIDC_ISSUER`), - - `wcs` as the client id (in `AUTHENTICATION_OIDC_CLIENT_ID`), and - - enable the adminlist (`AUTHORIZATION_ADMINLIST_ENABLED: 'true'`) and add your WCD account email as the user (in `AUTHORIZATION_ADMINLIST_USERS`) . - - `email` as the username claim (in `AUTHENTICATION_OIDC_USERNAME_CLAIM`). - -- If you need a more customizable setup you can use commercial OIDC providers like [Okta](https://www.okta.com/). -- As another alternative, you can run your own OIDC token issuer server, which may be the most complex but also configurable solution. Popular open-source solutions include Java-based [Keycloak](https://www.keycloak.org/) and Golang-based [dex](https://github.com/dexidp/dex). - -:::info -By default, Weaviate validates that the token includes a specified client id in the audience claim. If your token issuer does not support this feature, you can turn it off as outlined in the configuration section below. -::: - -## Anonymous Access - -Weaviate can be configured to accept anonymous requests. This is strongly discouraged except for development or evaluation purposes. - -Users that send requests without explicit authentication are authenticated as `user: anonymous`. - -You can use the authorization plugin to specify which permissions to apply to this `anonymous` user. If anonymous access is disabled altogether, any request without an allowed authentication scheme returns `401 Unauthorized`. - -### Anonymous access: Docker - -To enable anonymous access in Docker Compose, add the following environment variable to your configuration file: - -```yaml -services: - weaviate: - ... - environment: - ... - AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED: 'true' -``` - -### Anonymous access: Kubernetes - -To enable anonymous access in Kubernetes, add the following configuration to your `values.yaml` file: - -```yaml -authentication: - anonymous_access: - enabled: true -``` ## Client-side Usage diff --git a/docs/weaviate/configuration/authorization.md b/docs/weaviate/configuration/authorization.md index fdab62fe..51711aac 100644 --- a/docs/weaviate/configuration/authorization.md +++ b/docs/weaviate/configuration/authorization.md @@ -1,6 +1,5 @@ --- title: Authorization -sidebar_position: 35 image: og/docs/configuration.jpg # tags: ['authorization'] --- diff --git a/secondaryNavbar.js b/secondaryNavbar.js index ba821d66..c88768c6 100644 --- a/secondaryNavbar.js +++ b/secondaryNavbar.js @@ -64,11 +64,12 @@ const secondaryNavbarItems = { link: "/docs/deploy", links: [ { label: "Get Started", link: "/docs/deploy", sidebar: "deploySidebar" }, + { label: "Configuration Guides", link: "/docs/deploy/config-guides", sidebar: "deployConfigSidebar"}, /*{ label: "Kubernetes", link: "/docs/deploy/k8s", sidebar: "deployK8sSidebar" },*/ { label: "Production Environments", link: "/docs/deploy/production", sidebar: "deployProductionSidebar"}, /*{ label: "AWS", link: "/docs/deploy/aws", sidebar: "deployAwsSidebar" },*/ - { label: "Scaling Strategies", link: "/docs/deploy/scaling-strategies", sidebar: "deployScalingSidebar"}, - { label: "Monitoring and Observability", link: "/docs/deploy/monitoring-obs", sidebar: "deployObservabilitySidebar"}, + /*{ label: "Scaling Strategies", link: "/docs/deploy/scaling-strategies", sidebar: "deployScalingSidebar"},*/ + /*{ label: "Monitoring and Observability", link: "/docs/deploy/monitoring-obs", sidebar: "deployObservabilitySidebar"},*/ { label: "FAQs", link: "/docs/deploy/faqs", sidebar: "deployFaqsSidebar"}, ] }, diff --git a/sidebars.js b/sidebars.js index fbff1200..6e01ddb0 100644 --- a/sidebars.js +++ b/sidebars.js @@ -159,9 +159,8 @@ const sidebars = { }, "weaviate/configuration/tenant-offloading", "weaviate/configuration/modules", - "weaviate/configuration/backups", - "weaviate/configuration/authentication", "weaviate/configuration/authorization", + "weaviate/configuration/authentication", { type: "category", label: "RBAC", @@ -445,18 +444,11 @@ const sidebars = { "deploy/installation-guides/helm-installation", ], }, + ], + deployConfigSidebar: [ { - type: "category", - label: "Configuration Guides", - collapsible: true, - collapsed: true, - items: [ - "deploy/config-guides/authentication", - "deploy/config-guides/modules", - "deploy/config-guides/monitoring", - "deploy/config-guides/persistence", - "deploy/config-guides/async-rep", - ], + type: "autogenerated", + dirName: "deploy/config-guides", }, ], /*deployAwsSidebar: [ @@ -478,20 +470,6 @@ const sidebars = { }, ], - deployScalingSidebar: [ - { - type: "autogenerated", - dirName: "deploy/scaling-strategies", - - }, - ], - deployObservabilitySidebar: [ - { - type: "autogenerated", - dirName: "deploy/monitoring-obs", - - }, - ], deployFaqsSidebar: [ { type: "autogenerated", From 72852f7fc1ca2712d0bdc4bfae84a728f20065be Mon Sep 17 00:00:00 2001 From: DanielleWashington <shakara.washington02@gmail.com> Date: Thu, 8 May 2025 20:39:53 -0400 Subject: [PATCH 27/39] fixing broken link --- docs/weaviate/configuration/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/weaviate/configuration/index.md b/docs/weaviate/configuration/index.md index fc88fd43..942faa08 100644 --- a/docs/weaviate/configuration/index.md +++ b/docs/weaviate/configuration/index.md @@ -15,7 +15,7 @@ This section shows you how to configure Weaviate. - [distance metrics](../config-refs/distances.md) - Manage performance and cost with [vector index properties](/docs/weaviate/config-refs/schema/vector-index) -- [Back up](./backups.md) your Weaviate instance +- [Back up](docs/deploy/config-guides/backups.md) your Weaviate instance - Control access - [authentication](./authentication.md) - [authorization](./authorization.md) From bb6c04604727ba1b2977a463b83d925d85b1ec69 Mon Sep 17 00:00:00 2001 From: DanielleWashington <dwashington.100292@gmail.com> Date: Thu, 8 May 2025 21:08:13 -0400 Subject: [PATCH 28/39] fixing broken links --- docs/weaviate/config-refs/env-vars/index.md | 2 +- docs/weaviate/configuration/persistence.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/weaviate/config-refs/env-vars/index.md b/docs/weaviate/config-refs/env-vars/index.md index 0ff1627b..9ef56610 100644 --- a/docs/weaviate/config-refs/env-vars/index.md +++ b/docs/weaviate/config-refs/env-vars/index.md @@ -90,7 +90,7 @@ import APITable from '@site/src/components/APITable'; | Variable | Description | Type | Example Value | | --- | --- | --- | --- | -| `BACKUP_*` | Various configuration variables for backup provider modules. They are outlined in detail on the [Backups page](/docs/weaviate/configuration/backups.md). | | +| `BACKUP_*` | Various configuration variables for backup provider modules. They are outlined in detail on the [Backups page](docs/deploy/config-guides/backups.md). | | | `AZURE_BLOCK_SIZE` | The block size for Azure Blob Storage for backups. Default: `41943040` (40MB) | `int - bytes` | `10000000` | | `AZURE_CONCURRENCY` | The maximum number of parts that will be concurrently uploaded/downloaded during backup operations. Default: `1` | `int` | `3` | | `CLIP_INFERENCE_API` | The endpoint where to reach the clip module if enabled | `string` | `http://multi2vec-clip:8000` | diff --git a/docs/weaviate/configuration/persistence.md b/docs/weaviate/configuration/persistence.md index 7ded1689..fe93ea2d 100644 --- a/docs/weaviate/configuration/persistence.md +++ b/docs/weaviate/configuration/persistence.md @@ -72,7 +72,7 @@ services: ### Backups -See [Backups](./backups.md). +See [Backups](docs/deploy/config-guides/backups.md). ## Kubernetes From 6307881c88d13897bd7dcf3256661bdf9ad0ebea Mon Sep 17 00:00:00 2001 From: DanielleWashington <dwashington.100292@gmail.com> Date: Sun, 11 May 2025 22:41:16 -0400 Subject: [PATCH 29/39] more updates and doc migrations --- docs/deploy/config-guides/authentication.md | 3 +- docs/deploy/config-guides/backups.md | 1 + .../config-guides/configuring-rbac.md} | 11 +- .../config-guides}/env-vars/_category_.json | 0 .../config-guides}/env-vars/index.md | 0 .../config-guides}/env-vars/runtime-config.md | 0 .../config-guides}/nodes.md | 1 - docs/deploy/config-guides/replication.md | 120 ++++++++ .../scaling-strategies/horizontal-scaling.mdx | 2 + docs/deploy/faqs/index.md | 16 +- docs/deploy/faqs/troubleshooting.md | 23 +- docs/deploy/installation-guides/aws-cli.md | 2 +- .../installation-guides/aws-installation.md | 27 +- .../installation-guides/gcp-installation.md | 22 +- .../installation-guides/helm-installation.md | 1 - .../other}/migration/_category_.json | 0 .../other}/migration/archive.md | 0 .../other}/migration/index.md | 0 .../other}/migration/weaviate-1-25.md | 0 .../other}/migration/weaviate-1-30.md | 0 .../Kubernetes/production-readiness.md | 8 +- docs/deploy/tutorials/index.mdx | 31 +++ docs/{weaviate => deploy}/tutorials/rbac.mdx | 1 - docs/weaviate/configuration/authorization.md | 259 ------------------ secondaryNavbar.js | 4 +- sidebars.js | 59 ++-- 26 files changed, 262 insertions(+), 329 deletions(-) rename docs/{weaviate/configuration/rbac/configuration.md => deploy/config-guides/configuring-rbac.md} (94%) rename docs/{weaviate/config-refs => deploy/config-guides}/env-vars/_category_.json (100%) rename docs/{weaviate/config-refs => deploy/config-guides}/env-vars/index.md (100%) rename docs/{weaviate/config-refs => deploy/config-guides}/env-vars/runtime-config.md (100%) rename docs/{weaviate/config-refs => deploy/config-guides}/nodes.md (98%) create mode 100644 docs/deploy/config-guides/replication.md delete mode 100644 docs/deploy/installation-guides/helm-installation.md rename docs/{weaviate/more-resources => deploy/other}/migration/_category_.json (100%) rename docs/{weaviate/more-resources => deploy/other}/migration/archive.md (100%) rename docs/{weaviate/more-resources => deploy/other}/migration/index.md (100%) rename docs/{weaviate/more-resources => deploy/other}/migration/weaviate-1-25.md (100%) rename docs/{weaviate/more-resources => deploy/other}/migration/weaviate-1-30.md (100%) create mode 100644 docs/deploy/tutorials/index.mdx rename docs/{weaviate => deploy}/tutorials/rbac.mdx (99%) delete mode 100644 docs/weaviate/configuration/authorization.md diff --git a/docs/deploy/config-guides/authentication.md b/docs/deploy/config-guides/authentication.md index 2e10e013..783a1f5f 100644 --- a/docs/deploy/config-guides/authentication.md +++ b/docs/deploy/config-guides/authentication.md @@ -59,7 +59,7 @@ In summary, Weaviate allows the following authentication methods: - API key - OpenID Connect (OIDC) -- Anonymous access (no authentication, strongly discouraged except for development or evaluation) +- Anonymous access **(no authentication, strongly discouraged except for development or evaluation)** Note that API key and OIDC authentication can be both enabled at the same time. @@ -136,6 +136,7 @@ authentication: ``` This configuration: + - Disables anonymous access - Enables API key authentication - Defines plaintext API keys in `allowed_keys` diff --git a/docs/deploy/config-guides/backups.md b/docs/deploy/config-guides/backups.md index 6024eeb6..d2ef9780 100644 --- a/docs/deploy/config-guides/backups.md +++ b/docs/deploy/config-guides/backups.md @@ -110,6 +110,7 @@ Restart Weaviate to apply the new configuration. Then, you are ready to start a That's all there is to getting started with backups in Weaviate. The backup will be stored in the specified location on the local filesystem. You can also: + - [Restore the backup](#restore-backup) to a Weaviate instance - [Check the status](#asynchronous-status-checking) of the backup (if you did not wait for completion) - [Cancel the backup](#cancel-backup) if needed diff --git a/docs/weaviate/configuration/rbac/configuration.md b/docs/deploy/config-guides/configuring-rbac.md similarity index 94% rename from docs/weaviate/configuration/rbac/configuration.md rename to docs/deploy/config-guides/configuring-rbac.md index f69460a4..1cf313cb 100644 --- a/docs/weaviate/configuration/rbac/configuration.md +++ b/docs/deploy/config-guides/configuring-rbac.md @@ -1,7 +1,6 @@ --- title: Enable and configure RBAC -sidebar_label: Enable RBAC -sidebar_position: 1 +sidebar_label: RBAC image: og/docs/configuration.jpg # tags: ['rbac', 'roles', 'configuration', 'authorization'] --- @@ -120,10 +119,10 @@ Here are some tips to optimize performance when using RBAC: ## Further resources -- [RBAC: Overview](./index.mdx) -- [RBAC: Manage roles](./manage-roles.mdx) -- [RBAC: Manage users](./manage-users.mdx) -- [RBAC: Tutorial](../../tutorials/rbac.mdx) +- [RBAC: Overview](docs/weaviate/configuration/rbac/index.mdx) +- [RBAC: Manage roles](docs/weaviate/configuration/rbac/manage-roles.mdx) +- [RBAC: Manage users](docs/weaviate/configuration/rbac/manage-users.mdx) +- [RBAC: Tutorial](docs/weaviate/tutorials/rbac.mdx) ## Questions and feedback diff --git a/docs/weaviate/config-refs/env-vars/_category_.json b/docs/deploy/config-guides/env-vars/_category_.json similarity index 100% rename from docs/weaviate/config-refs/env-vars/_category_.json rename to docs/deploy/config-guides/env-vars/_category_.json diff --git a/docs/weaviate/config-refs/env-vars/index.md b/docs/deploy/config-guides/env-vars/index.md similarity index 100% rename from docs/weaviate/config-refs/env-vars/index.md rename to docs/deploy/config-guides/env-vars/index.md diff --git a/docs/weaviate/config-refs/env-vars/runtime-config.md b/docs/deploy/config-guides/env-vars/runtime-config.md similarity index 100% rename from docs/weaviate/config-refs/env-vars/runtime-config.md rename to docs/deploy/config-guides/env-vars/runtime-config.md diff --git a/docs/weaviate/config-refs/nodes.md b/docs/deploy/config-guides/nodes.md similarity index 98% rename from docs/weaviate/config-refs/nodes.md rename to docs/deploy/config-guides/nodes.md index ff4ea134..a4dc1205 100644 --- a/docs/weaviate/config-refs/nodes.md +++ b/docs/deploy/config-guides/nodes.md @@ -1,6 +1,5 @@ --- title: Cluster node data -sidebar_position: 93 image: og/docs/configuration.jpg # tags: ['nodes', 'reference', 'configuration'] --- diff --git a/docs/deploy/config-guides/replication.md b/docs/deploy/config-guides/replication.md new file mode 100644 index 00000000..9d09615d --- /dev/null +++ b/docs/deploy/config-guides/replication.md @@ -0,0 +1,120 @@ +--- +title: Replication +image: og/docs/configuration.jpg +# tags: ['configuration', 'operations', 'monitoring', 'observability'] +--- + +Weaviate instances can be replicated. Replication can improve read throughput, improve availability, and enable zero-downtime upgrades. + +For more details on how replication is designed and built in Weaviate, see [Replication Architecture](../concepts/replication-architecture/index.md). + +## How to configure + +import RaftRFChangeWarning from '/\_includes/1-25-replication-factor.mdx'; + +<RaftRFChangeWarning/> + +Replication is disabled by default. It can be enabled per collection in the [collection configuration](../manage-collections/multi-node-setup.mdx#replication-settings). This means you can set different replication factors per class in your dataset. + +To enable replication, you can set one or both of the following: + +- `REPLICATION_MINIMUM_FACTOR` environment variable for the entire Weaviate instance, or +- `replicationFactor` parameter for a collection. + +### Weaviate-wide minimum replication factor + +The `REPLICATION_MINIMUM_FACTOR` environment variable sets the minimum replication factor for all collections in the Weaviate instance. + +If you set the [replication factor for a collection](#replication-factor-for-a-collection), the collection's replication factor overrides the minimum replication factor. + + +## Data consistency + +When Weaviate detects inconsistent data across nodes, it attempts to repair the out of sync data. + +Starting in v1.26, Weaviate adds [async replication](../concepts/replication-architecture/consistency.md#async-replication) to proactively detect inconsistencies. In earlier versions, Weaviate uses a [repair-on-read](../concepts/replication-architecture/consistency.md#repair-on-read) strategy to repair inconsistencies at read time. + +Repair-on-read is automatic. To activate async replication, set `asyncEnabled` to true in the `replicationConfig` section of your collection definition. + +import ReplicationConfigWithAsyncRepair from '/\_includes/code/configuration/replication-consistency.mdx'; + +<ReplicationConfigWithAsyncRepair /> + +### Configure async replication settings {#async-replication-settings} + +:::info Added in `v1.29` +The [environment variables](/docs/weaviate/config-refs/env-vars#async-replication) for configuring async replication (`ASYNC_*`) have been introduced in `v1.29`. +::: + +Async replication helps achieve consistency for data replicated across multiple nodes. + +Update the following [environment variables](/docs/weaviate/config-refs/env-vars#async-replication) to configure async replication for your particular use case. + +#### Logging + +- **Set the frequency of the logger:** `ASYNC_REPLICATION_LOGGING_FREQUENCY` + Define how often the async replication background process will log events. + +#### Data comparison + +- **Set the frequency of comparisons:** `ASYNC_REPLICATION_FREQUENCY` + Define how often each node compares its local data with other nodes. +- **Set comparison timeout:** `ASYNC_REPLICATION_DIFF_PER_NODE_TIMEOUT` + Optionally configure a timeout for how long to wait during comparison when a node is unresponsive. +- **Monitor node availability:** `ASYNC_REPLICATION_ALIVE_NODES_CHECKING_FREQUENCY` + Trigger comparisons whenever there’s a change in node availability. +- **Configure hash tree height:** `ASYNC_REPLICATION_HASHTREE_HEIGHT` + Specify the size of the hash tree, which helps narrow down data differences by comparing hash digests at multiple levels instead of scanning entire datasets. See [this page](../concepts/replication-architecture/consistency.md#memory-and-performance-considerations-for-async-replication) for more information on the memory and performance considerations for async replication. +- **Batch size for digest comparison:** `ASYNC_REPLICATION_DIFF_BATCH_SIZE` + Define the number of objects whose digest (e.g., last update time) is compared between nodes before propagating actual objects. + +#### Data synchronization + +Once differences between nodes are detected, Weaviate propagates outdated or missing data. Configure synchronization as follows: + +- **Set the frequency of propagation:** `ASYNC_REPLICATION_FREQUENCY_WHILE_PROPAGATING` + After synchronization is completed on a node, temporarily adjust the data comparison frequency to the set value. +- **Set propagation timeout:** `ASYNC_REPLICATION_PROPAGATION_TIMEOUT` + Optionally configure a timeout for how long to wait during propagation when a node is unresponsive. +- **Set propagation delay:** `ASYNC_REPLICATION_PROPAGATION_DELAY` + Define a delay period to allow asynchronous write operations to reach all nodes before propagating new or updated objects. +- **Batch size for data propagation:** `ASYNC_REPLICATION_PROPAGATION_BATCH_SIZE` + Define the number of objects that are sent in each synchronization batch during the propagation phase. +- **Set propagation limits:** `ASYNC_REPLICATION_PROPAGATION_LIMIT` + Enforce a limit on the number of out-of-sync objects to be propagated per replication iteration. +- **Set propagation concurrency:** `ASYNC_REPLICATION_PROPAGATION_CONCURRENCY` + Specify the number of concurrent workers that can send batches of objects to other nodes, allowing multiple propagation batches to be sent simultaneously. + +:::tip +Tweak these settings based on your cluster size and network latency to achieve optimal performance. Smaller batch sizes and shorter timeouts may be beneficial for high-traffic clusters, while larger clusters might require more conservative settings. +::: + +## How to use: Queries + +When you add (write) or query (read) data, one or more replica nodes in the cluster will respond to the request. How many nodes need to send a successful response and acknowledgment to the coordinator node depends on the `consistency_level`. Available [consistency levels](../concepts/replication-architecture/consistency.md) are `ONE`, `QUORUM` (replication_factor / 2 + 1) and `ALL`. + +The `consistency_level` can be specified at query time: + +```bash +# Get an object by ID, with consistency level ONE +curl "http://localhost:8080/v1/objects/{ClassName}/{id}?consistency_level=ONE" +``` + +:::note +In v1.17, only [read queries that get data by ID](../manage-objects/read.mdx#get-an-object-by-id) had a tunable consistency level. All other object-specific REST endpoints (read or write) used the consistency level `ALL`. Starting with v1.18, all write and read queries are tunable to either `ONE`, `QUORUM` (default) or `ALL`. GraphQL endpoints use the consistency level `ONE` (in both versions). +::: + +import QueryReplication from '/\_includes/code/replication.get.object.by.id.mdx'; + +<QueryReplication/> + +## Related pages + +- [Concepts: Replication Architecture](../concepts/replication-architecture/index.md) +- [Configurinfg Async Replication](./async-rep.md) + +## Questions and feedback + +import DocsFeedback from '/\_includes/docs-feedback.mdx'; + +<DocsFeedback/> diff --git a/docs/deploy/config-guides/scaling-strategies/horizontal-scaling.mdx b/docs/deploy/config-guides/scaling-strategies/horizontal-scaling.mdx index 80a47b01..fd20d426 100644 --- a/docs/deploy/config-guides/scaling-strategies/horizontal-scaling.mdx +++ b/docs/deploy/config-guides/scaling-strategies/horizontal-scaling.mdx @@ -19,6 +19,8 @@ This document provides detailed implementation guidance for horizontally scaling  + + ### Replication Replication creates redundant copies of your data, it is useful when your data needs to be highly available. diff --git a/docs/deploy/faqs/index.md b/docs/deploy/faqs/index.md index 8119d470..e2fc4e80 100644 --- a/docs/deploy/faqs/index.md +++ b/docs/deploy/faqs/index.md @@ -23,7 +23,7 @@ This almost always means you've run out of disk space. Weaviate protects itself <summary> Answer </summary> -This [doc](../installation-guides/aws-installation.md) will walk you through all the necessary steps to deploy Weaviate using AWS marketplace. +This [page](../installation-guides/aws-installation.md) will walk you through all the necessary steps to deploy Weaviate using AWS marketplace. </details> @@ -33,7 +33,7 @@ This [doc](../installation-guides/aws-installation.md) will walk you through all <summary> Answer </summary> -This [doc](../installation-guides/gcp-installation.md) will walk you through all the necessary steps to deploy Weaviate using GCP marketplace. +This [page](../installation-guides/gcp-installation.md) will walk you through all the necessary steps to deploy Weaviate using GCP marketplace. </details> @@ -57,10 +57,14 @@ If you plan to create more than **20** collections, you may want to consider mul Common issues that occur during deployment include: -- The cluster becoming `read-only` -- Query results being inconsistent +- The cluster becoming `read-only`. +- Query results being inconsistent. - Nodes unable to maintain consensus. -- Creating too many collections +- Creating too many collections. + +#### Further resources + +For further information, the [troubleshooting page](./troubleshooting.md) will help with some of the common issue encountered. </details> @@ -70,7 +74,7 @@ Common issues that occur during deployment include: <summary> Answer </summary> -Weaviate has complex processes which means that ingestion and deletion require more steps than other types of databases. +Weaviate has complex processes which means that ingestion and deletion require more steps than other types of databases. Data ingestion tends to take longer than a traditional database because of vectorization and deleting objects can be expensive due to the embedding costs. </details> #### Q7: Do my resources free up immediately after deleting objects? diff --git a/docs/deploy/faqs/troubleshooting.md b/docs/deploy/faqs/troubleshooting.md index a931c424..f62a34e9 100644 --- a/docs/deploy/faqs/troubleshooting.md +++ b/docs/deploy/faqs/troubleshooting.md @@ -7,25 +7,28 @@ title: Deployment Troubleshooting Guide So you've deployed Weaviate and you're fully immersed in the world of vectors when suddenly you encounter a puzzling mystery. This page will serve as your handbook for when things go awry in "Vector Land!" Consider every error message a clue to solving the mystery you're encountering. -## Common Issues and Solutions +## Common issues and solutions + +### The cluster is not accepting new information and there are disk space or `read-only` error messages in the logs. <details> -<summary> The cluster is not accepting new information and there are disk space or `read-only` error messages in the logs. </summary> +<summary>Answer</summary> #### Identifying the issue - As a first step, you'll want to examine your cluster's logs to identify the problem. If after checking the logs of your cluster you see error messages that include phrases like "read-only" or "disk space," then your cluster is more than likely in a `read-only` state due to insufficient disk space. #### Resolving the issue To solve this mystery, you'll need to increase the available disk space for your nodes. Once the disk space is increased, then you'll need to manually mark the affected shards or collections as writeable again. - +You can also set the [`MEMORY_WARNING_PERCENTAGE`](/weaviate/config-refs/env-vars/index.md#MEMORY_WARNING_PERCENTAGE) environment variable to issue warnings when the memory limit is near. </details> +### You're receiving inconsistent query results. + <details> -<summary> You're receiving inconsistent query results. </summary> +<summary> Answer </summary> #### Identifying the issue @@ -36,9 +39,11 @@ To confirm and identify the issue, you'll want to first run the same query multi Check your settings to check if you have asynchronous replication enabled. If `async_replication_disabled` is set to "true" then you'll need to set that variable to "false." Once it is enabled, the logs will show messages that indicate successful peers checks and synchronization for the nodes. </details> +### Your nodes won't communicate, join a cluster, or maintain consensus. + <details> -<summary> Your nodes won't communicate, join a cluster, or maintain consensus. </summary> +<summary> Answer </summary> #### Identifying the issue @@ -46,9 +51,13 @@ To confirm and identify the issue, you'll want to first run the same query multi #### Resolving the issue -Check your settings to check if you have asynchronous replication enabled. If `async_replication_disabled` is set to "true" then you'll need to set that variable to "false." Once it is enabled, the logs will show messages that indicate successful peers checks and synchronization for the nodes. +Check your settings to check if you have asynchronous replication enabled. If `async_replication_disabled` is set to "true" then you'll need to set that variable to "false." Once it is enabled, the logs will show messages that indicate successful peers checks and synchronization for the nodes. Additionally, test the [live and ready REST endpoints](/docs/weaviate/api/rest#tag/well-known/GET/.well-known/live) and check the network configuration of the nodes. </details> +## Further reading + +- [LOG_LEVEL](insert env vars `log_level`) + ## Questions and feedback import DocsFeedback from '/_includes/docs-feedback.mdx'; diff --git a/docs/deploy/installation-guides/aws-cli.md b/docs/deploy/installation-guides/aws-cli.md index 0a66fe1c..2df72178 100644 --- a/docs/deploy/installation-guides/aws-cli.md +++ b/docs/deploy/installation-guides/aws-cli.md @@ -1,5 +1,5 @@ --- -title: AWS EKS Installation +title: EKS Installation description: Deploy Weaviate on EKS using the AWS CLI --- diff --git a/docs/deploy/installation-guides/aws-installation.md b/docs/deploy/installation-guides/aws-installation.md index 8854e1e0..185efc58 100644 --- a/docs/deploy/installation-guides/aws-installation.md +++ b/docs/deploy/installation-guides/aws-installation.md @@ -9,25 +9,40 @@ import ReactPlayer from 'react-player/lazy' <!-- NOTE: To show this page on the sidebar, remove the `sidebar_class_name: hidden` line above. --> -It is easy to deploy a Weaviate cluster through the AWS Marketplace. +Through the AWS Marketplace you can launch a Weaviate serverless instance billed directly from AWS. :::info Prerequisites - An AWS account with sufficient credit / payment method. - (Recommended) Familiarity with AWS and the AWS console. ::: -You can use [AWS Marketplace](https://aws.amazon.com/marketplace/pp/prodview-ng2dfhb4yjoic?sr=0-3&ref_=beagle&applicationId=AWSMPContessa) to directly launch a Weaviate cluster. +You can use [AWS Marketplace](https://aws.amazon.com/marketplace/pp/prodview-ng2dfhb4yjoic?sr=0-3&ref_=beagle&applicationId=AWSMPContessa) to launch a Weaviate serverless instance. ## Installation instructions -### AWS Marketplace - -1. Go to Weaviate's [AWS Marketplace listing](https://aws.amazon.com/marketplace/pp/prodview-ng2dfhb4yjoic?sr=0-3&ref_=beagle&applicationId=AWSMPContessa) to directly launch a Weaviate cluster. -1. Subscribe to the product in AWS Marketplace by following the instructions on the page. +1. Go to Weaviate's [AWS Marketplace listing](https://aws.amazon.com/marketplace/pp/prodview-ng2dfhb4yjoic?sr=0-3&ref_=beagle&applicationId=AWSMPContessa). +1. Subscribe to the product by following the instructions on the page. 1. Click <kbd>View Purchase Options</kbd>, then go to the next page. 2. Review the pricing, terms and conditions, and click <kbd>Subscribe</kbd>. From there you will be prompted to set up your account on [Weaviate Cloud](docs/cloud/index.mdx). +:::info +<details> + +<summary> A little background information </summary> + +- When you deploy Weaviate Serverless Cloud through the AWS Marketplace, you're subscribing to a Software as a Service (SaaS) solution that is specifically built for AWS customers. + +- AWS will notify you once your Weaviate serverless cluster is available. + +**This solution is ideal for:** + +- Organizations requiring AWS billing integration. +- Organizations with regulatory requirements who need specific regional deployments. + +</details> + +::: ## Billing diff --git a/docs/deploy/installation-guides/gcp-installation.md b/docs/deploy/installation-guides/gcp-installation.md index 50c80a8f..c3c6f808 100644 --- a/docs/deploy/installation-guides/gcp-installation.md +++ b/docs/deploy/installation-guides/gcp-installation.md @@ -8,19 +8,35 @@ tags: ['installation', 'Google Cloud Marketplace'] A Weaviate cluster is easy to deploy with Google Cloud Marketplace (GCP). :::info Prerequisites + - A Google Cloud account with sufficient credit / payment method. - (Recommended) Familiarity with Google Cloud and the Google Cloud console. ::: ## Installation instructions -Broadly, the steps are as follows: - 1. Go to Weaviate's [Google Cloud Marketplace listing](https://console.cloud.google.com/marketplace/product/weaviate-gcp-mktplace/weaviate) page and click <kbd>Subscribe</kbd>. 1. Configure and deploy Weaviate by following the on-screen instructions. -Once completed, you will have a [Weaviate severless cloud](docs/cloud/index.mdx) deployment. +Once completed, you will have a [Weaviate serverless cloud](docs/cloud/index.mdx) deployment. + +:::info +<details> + +<summary> A little background information </summary> + +- When you deploy Weaviate Serverless Cloud through the GCP Marketplace, you're subscribing to a Software as a Service (SaaS) solution that is specifically built for GCP customers. +- GCP will notify you once your Weaviate serverless cluster is available. + +**This solution is ideal for:** + +- Organizations requiring GCP billing integration. +- Organizations with regulatory requirements who need specific regional deployments. + +</details> + +::: ## Billing diff --git a/docs/deploy/installation-guides/helm-installation.md b/docs/deploy/installation-guides/helm-installation.md deleted file mode 100644 index 56178afe..00000000 --- a/docs/deploy/installation-guides/helm-installation.md +++ /dev/null @@ -1 +0,0 @@ -# Placeholder for Helm Chart Installation \ No newline at end of file diff --git a/docs/weaviate/more-resources/migration/_category_.json b/docs/deploy/other/migration/_category_.json similarity index 100% rename from docs/weaviate/more-resources/migration/_category_.json rename to docs/deploy/other/migration/_category_.json diff --git a/docs/weaviate/more-resources/migration/archive.md b/docs/deploy/other/migration/archive.md similarity index 100% rename from docs/weaviate/more-resources/migration/archive.md rename to docs/deploy/other/migration/archive.md diff --git a/docs/weaviate/more-resources/migration/index.md b/docs/deploy/other/migration/index.md similarity index 100% rename from docs/weaviate/more-resources/migration/index.md rename to docs/deploy/other/migration/index.md diff --git a/docs/weaviate/more-resources/migration/weaviate-1-25.md b/docs/deploy/other/migration/weaviate-1-25.md similarity index 100% rename from docs/weaviate/more-resources/migration/weaviate-1-25.md rename to docs/deploy/other/migration/weaviate-1-25.md diff --git a/docs/weaviate/more-resources/migration/weaviate-1-30.md b/docs/deploy/other/migration/weaviate-1-30.md similarity index 100% rename from docs/weaviate/more-resources/migration/weaviate-1-30.md rename to docs/deploy/other/migration/weaviate-1-30.md diff --git a/docs/deploy/production/Kubernetes/production-readiness.md b/docs/deploy/production/Kubernetes/production-readiness.md index fab9e81a..751338e1 100644 --- a/docs/deploy/production/Kubernetes/production-readiness.md +++ b/docs/deploy/production/Kubernetes/production-readiness.md @@ -6,6 +6,11 @@ sidebar_label: Production Readiness Self-Assessment Think you’re ready for production? Ensuring that your Weaviate cluster is production-ready requires careful planning, configuration, and ongoing maintenance. Ensuring that you have a stable, reliable deployment requires you to think of your *ending* at the *beginning.* This guide provides you with introspective questions to assess readiness and identify any potential gaps before moving your workloads into production. +:::tip +If you *do* identify gaps within your deployment, be sure to reach out to your SE (solutions engineer) who can help steer you on the path to production success! +::: + + ### High Availability and Resilience - [ ] Are your clusters deployed across multiple availability zones (AZs) or regions to prevent downtime? @@ -81,6 +86,3 @@ Think you’re ready for production? Ensuring that your Weaviate cluster is prod Evaluate these key areas to build a highly available, resilient, and efficient deployment that will scale to meet your business needs. By ensuring that these self-assessment questions have been addressed, you can proactively identify potential risks and maximize the reliability of your deployment. -:::tip -If you *do* identify gaps within your deployment, be sure to reach out to your SE (sales engineer) who can help steer you on the path to production success! -::: diff --git a/docs/deploy/tutorials/index.mdx b/docs/deploy/tutorials/index.mdx new file mode 100644 index 00000000..54266bad --- /dev/null +++ b/docs/deploy/tutorials/index.mdx @@ -0,0 +1,31 @@ +--- +title: Tutorials +description: Explore Weaviate tutorials for practical guidance on data management and queries. +sidebar_position: 0 +image: og/docs/tutorials.jpg +hide_table_of_contents: true +# tags: ['how to', 'schema'] +--- + +import BasicPrereqs from "/_includes/prerequisites-quickstart.md"; + +<BasicPrereqs /> + +Tutorials aim to empower you to use Weaviate based on _your_ particular needs. +Here, you can learn how to: + +import CardsSection from "/src/components/CardsSection"; + +export const advancedFeaturesData = [ + { + title: "Set up Role-Based Access Control (RBAC)", + description: + "Configure roles, permissions, and user assignments for secure access control in Weaviate.", + link: "docs/deploy/tutorials/rbac.mdx", + icon: "fas fa-user-shield", + }, +]; + +<br /> +<CardsSection items={advancedFeaturesData} /> +<br /> diff --git a/docs/weaviate/tutorials/rbac.mdx b/docs/deploy/tutorials/rbac.mdx similarity index 99% rename from docs/weaviate/tutorials/rbac.mdx rename to docs/deploy/tutorials/rbac.mdx index 7d828ea6..7868eaa2 100644 --- a/docs/weaviate/tutorials/rbac.mdx +++ b/docs/deploy/tutorials/rbac.mdx @@ -1,7 +1,6 @@ --- title: Set up RBAC in Weaviate description: Learn how to set up RBAC (Role Based Access Control) in Weaviate -sidebar_position: 3 image: og/docs/tutorials.jpg # tags: ['basics'] --- diff --git a/docs/weaviate/configuration/authorization.md b/docs/weaviate/configuration/authorization.md deleted file mode 100644 index 51711aac..00000000 --- a/docs/weaviate/configuration/authorization.md +++ /dev/null @@ -1,259 +0,0 @@ ---- -title: Authorization -image: og/docs/configuration.jpg -# tags: ['authorization'] ---- - -:::info Authentication and authorization -Authentication and authorization are closely related concepts, and sometimes abbreviated as `AuthN` and `AuthZ`. Authentication (`AuthN`) is the process of verifying the identity of a user, while authorization (`AuthZ`) is the process of determining what permissions the user has. -::: - -Weaviate provides differentiated access through [authorization](./authorization.md) levels, based on the user's [authentication](./authentication.md) status. A user can be granted admin permission, read-only permission, or no permission at all. From `v1.29.0`, Weaviate also supports [Role-Based Access Control (RBAC)](/docs/weaviate/configuration/rbac) for more fine-grained control over user permissions. - -The following diagram illustrates the flow of a user request through the authentication and authorization process: - -```mermaid -flowchart TB - User(["Authenticated User"]) --> AuthScheme{"Authorization<br> Scheme?"} - - subgraph rbac ["RBAC Authorization"] - direction TB - AdminRole["Admin Role"] - ViewerRole["Viewer Role"] - CustomRole["Custom Roles"] - - Perms1["Full Access<br> All Operations"] - Perms2["Read-only<br> Access"] - Perms3["Custom<br> Permissions"] - - AdminRole --> Perms1 - ViewerRole --> Perms2 - CustomRole --> Perms3 - end - - subgraph adminlist ["Admin List Authorization"] - direction TB - AdminUser["Admin Users"] - ReadOnly["Read-only Users"] - AnonUser["Anonymous Users<br> (Optional)"] - - AllPerms["Full Access<br> All Operations"] - ReadPerms["Read-only<br> Access"] - - AdminUser --> AllPerms - ReadOnly --> ReadPerms - AnonUser -.->|"If enabled"| AllPerms - AnonUser -.->|"If enabled"| ReadPerms - end - - subgraph undiffer ["Undifferentiated Access"] - AllAccess["Full Access<br> All Operations"] - end - - AuthScheme -->|"RBAC"| rbac - AuthScheme -->|"Admin List"| adminlist - AuthScheme -->|"Undifferentiated"| undiffer - - %% Style nodes - style User fill:#f9f9f9,stroke:#666 - style AuthScheme fill:#f5f5f5,stroke:#666 - style AnonUser fill:#f9f9f9,stroke:#666,stroke-dasharray: 5 5 - - %% Style subgraphs - style rbac fill:#e6f3ff,stroke:#4a90e2 - style adminlist fill:#e6ffe6,stroke:#2ea44f - style undiffer fill:#fff0e6,stroke:#ff9933 -``` - -## Available authorization schemes - -The following authorization schemes are available in Weaviate: - -- [Role-Based Access Control (RBAC)](#role-based-access-control-rbac) -- [Admin list](#admin-list) -- [Undifferentiated access](#undifferentiated-access) - -In the Admin list authorization scheme, [anonymous users](#anonymous-users) can be granted permissions. - -The way to configure authorization differs by your deployment method, depending on whether you are running Weaviate in Docker or Kubernetes. Below, we provide examples for both. - -:::info What about Weaviate Cloud (WCD)? -For Weaviate Cloud (WCD) instances, authorization is pre-configured with Admin list access. You can [authenticate against Weaviate](../connections/connect-cloud.mdx) with your WCD credentials using OIDC, or [with admin or read-only API keys](/docs/cloud/platform/manage-api-keys). -<br/> - -RBAC access will be available in WCD in a future release. -::: - -## Role-Based Access Control (RBAC) - -:::info Available from `v1.29` -Role-based access control (RBAC) is generally available in Weaviate from version `v1.29`. -::: - -Role-based access control (RBAC) is a method of restricting access to resources based on the roles of users. In Weaviate, RBAC allows you to define **roles** and assign **permissions** to those roles. Users can then be assigned to roles, and inherit the permissions associated with those roles. - -Check out the dedicated **[RBAC documentation](./rbac/index.mdx)** for instructions on how to [configure RBAC](./rbac/configuration.md) in your Weaviate instance and examples on how to [manage roles an users](./rbac/manage-roles.mdx). - -## Admin list - -The "Admin list" authorization scheme allows you to specify a list of admin users with full permissions to perform all actions in Weaviate, and a list of read-only users with permissions to perform only read operations. - -These permissions cannot be customized or extended. For more fine-grained control over user permissions, use [RBAC](#role-based-access-control-rbac) instead. - -Admin list authorization scheme cannot be used in combination with RBAC. - -### Admin list: Docker - -Admin list authorization can be configured using environment variables. In Docker Compose, set them in the configuration file (`docker-compose.yml`) such as in the following example: - -```yaml -services: - weaviate: - ... - environment: - ... - # Example authentication configuration using API keys - # OIDC access can also be used with RBAC - AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED: 'false' - AUTHENTICATION_APIKEY_ENABLED: 'true' - AUTHENTICATION_APIKEY_ALLOWED_KEYS: 'user-a-key,user-b-key,user-c-key' - AUTHENTICATION_APIKEY_USERS: 'user-a,user-b,user-c' - - # Authorization configuration - # Enable admin list - AUTHORIZATION_ADMINLIST_ENABLED: 'true' - - # Provide pre-configured roles to users - # This assumes that the relevant user has been authenticated and identified - # - # You MUST define at least one admin user - AUTHORIZATION_ADMINLIST_USERS: 'user-a' - AUTHORIZATION_ADMINLIST_READONLY_USERS: 'user-b' -``` - -This configuration: -- Enables Admin list authorization -- Configures `user-a` as a user with built-in admin permissions -- Configures `user-b` as a user with built-in viewer permissions - -Note that in this configuration, `user-c` has no permissions. - -### Admin list: Kubernetes - -For Kubernetes deployments using Helm, API key authentication can be configured in the `values.yaml` file under the `authorization` section. Here's an example configuration: - -```yaml -# Example authentication configuration using API keys -authentication: - anonymous_access: - enabled: false - apikey: - enabled: true - allowed_keys: - - user-a-key - - user-b-key - - user-c-key - users: - - user-a - - user-b - - user-c - -# Authorization configuration -authorization: - admin_list: - # Enable admin list - enabled: true - - # Provide pre-configured roles to users - # This assumes that the relevant user has been authenticated and identified - # - # You MUST define at least one admin user - users: - - user-a - read_only_users: - - user-b -``` - -### Anonymous users - -Anonymous users are identified as `anonymous` in Weaviate. In the Admin list authorization scheme, you can apply permissions to anonymous users. The RBAC authorization scheme is not compatible with anonymous users. - -To confer permissions to anonymous users in the Admin list scheme, you can use the `anonymous` keyword in the configuration as shown below. - -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - -<Tabs groupId="platforms"> - - <TabItem value="docker" label="Docker"> - -```yaml -services: - weaviate: - ... - environment: - ... - # Enable anonymous access - AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED: 'true' - - # Configure admin user API key - AUTHORIZATION_ADMINLIST_ENABLED: 'true' - AUTHENTICATION_APIKEY_ALLOWED_KEYS: 'user-a-key' - AUTHENTICATION_APIKEY_USERS: 'user-a' - - # Enable admin list and provide admin access to "user-a" only - AUTHORIZATION_ADMINLIST_USERS: 'user-a' - # Provide read-only access to anonymous users - AUTHORIZATION_ADMINLIST_READONLY_USERS: 'anonymous' -``` - - </TabItem> - - <TabItem value="kubernetes" label="Kubernetes"> - -```yaml -# Example authentication configuration using API keys -authentication: - # Enable anonymous access - anonymous_access: - enabled: true - - # Enable admin list and configure admin user API key - apikey: - enabled: true - allowed_keys: - - user-a-key - users: - - user-a - -authorization: - # Enable admin list and provide admin access to "user-a" only - admin_list: - # Enable admin list - enabled: true - users: - - user-a - # Provide read-only access to anonymous users - read_only_users: - - anonymous -``` - - </TabItem> - -</Tabs> - -## Undifferentiated access - -Weaviate can be configured to provide undifferentiated access, by disabling authentication for example and enabling anonymous access. This configuration is strongly discouraged except for development or evaluation purposes. - -## Further resources - -- [Configuration: Authentication](./authentication.md) -- [Configuration: RBAC](./rbac/index.mdx) -- [References: Environment variables / Authentication and Authorization](../config-refs/env-vars/index.md#authentication-and-authorization) - -## Questions and feedback - -import DocsFeedback from '/_includes/docs-feedback.mdx'; - -<DocsFeedback/> diff --git a/secondaryNavbar.js b/secondaryNavbar.js index 7037b4da..0e710ab2 100644 --- a/secondaryNavbar.js +++ b/secondaryNavbar.js @@ -66,11 +66,13 @@ const secondaryNavbarItems = { { label: "Get Started", link: "/docs/deploy", sidebar: "deploySidebar" }, { label: "Configuration Guides", link: "/docs/deploy/config-guides", sidebar: "deployConfigSidebar"}, /*{ label: "Kubernetes", link: "/docs/deploy/k8s", sidebar: "deployK8sSidebar" },*/ - { label: "Production Environments", link: "/docs/deploy/production", sidebar: "deployProductionSidebar"}, + { label: "Production Guides", link: "/docs/deploy/production", sidebar: "deployProductionSidebar"}, + { label: "Tutorials", link: "/docs/deploy/tutorials", sidebar: "deployTutorialSidebar"}, /*{ label: "AWS", link: "/docs/deploy/aws", sidebar: "deployAwsSidebar" },*/ /*{ label: "Scaling Strategies", link: "/docs/deploy/scaling-strategies", sidebar: "deployScalingSidebar"},*/ /*{ label: "Monitoring and Observability", link: "/docs/deploy/monitoring-obs", sidebar: "deployObservabilitySidebar"},*/ { label: "FAQs", link: "/docs/deploy/faqs", sidebar: "deployFaqsSidebar"}, + { label: "Other", link: "/docs/deploy/other", sidebar: "deployOtherSidebar"}, ] }, diff --git a/sidebars.js b/sidebars.js index a2cd2dee..acdc0e09 100644 --- a/sidebars.js +++ b/sidebars.js @@ -428,7 +428,6 @@ const sidebars = { }, "weaviate/configuration/tenant-offloading", "weaviate/configuration/modules", - "weaviate/configuration/authorization", "weaviate/configuration/authentication", { type: "category", @@ -438,7 +437,6 @@ const sidebars = { id: "weaviate/configuration/rbac/index", }, items: [ - "weaviate/configuration/rbac/configuration", "weaviate/configuration/rbac/manage-roles", "weaviate/configuration/rbac/manage-users", ], @@ -517,7 +515,6 @@ const sidebars = { id: "weaviate/tutorials/index", }, items: [ - "weaviate/tutorials/rbac", "weaviate/tutorials/multi-vector-embeddings", //"weaviate/tutorials/import", "weaviate/tutorials/cross-references", @@ -563,16 +560,6 @@ const sidebars = { id: "weaviate/config-refs/distances", className: "sidebar-item", }, - { - type: "category", - label: "Environment variables", - className: "sidebar-item", - link: { - type: "doc", - id: "weaviate/config-refs/env-vars/index", - }, - items: ["weaviate/config-refs/env-vars/runtime-config"], - }, { type: "doc", id: "weaviate/config-refs/status", @@ -588,11 +575,6 @@ const sidebars = { id: "weaviate/config-refs/meta", className: "sidebar-item", }, - { - type: "doc", - id: "weaviate/config-refs/nodes", - className: "sidebar-item", - }, { type: "doc", id: "weaviate/config-refs/oidc", @@ -730,7 +712,7 @@ const sidebars = { ], }, ], - othersSidebar: [ + othersSidebar: [ { type: "category", label: "Releases", @@ -739,19 +721,6 @@ const sidebars = { id: "weaviate/release-notes/index", }, items: [ - { - type: "category", - label: "Migration", - link: { - type: "doc", - id: "weaviate/more-resources/migration/index", - }, - items: [ - "weaviate/more-resources/migration/weaviate-1-30", - "weaviate/more-resources/migration/weaviate-1-25", - "weaviate/more-resources/migration/archive", - ], - }, ], }, { @@ -802,7 +771,6 @@ const sidebars = { "deploy/installation-guides/gcp-installation", "deploy/installation-guides/aws-installation", "deploy/installation-guides/aws-cli", - "deploy/installation-guides/helm-installation", ], }, ], @@ -831,6 +799,12 @@ const sidebars = { }, ], + deployTutorialSidebar: [ + { + type: "autogenerated", + dirName: "deploy/tutorials", + }, + ], deployFaqsSidebar: [ { type: "autogenerated", @@ -838,6 +812,25 @@ const sidebars = { }, ], + deployOtherSidebar: [ + { + type: "autogenerated", + dirName: "deploy/other", + }, + { + type: "category", + label: "Migration", + link: { + type: "doc", + id: "deploy/other/migration/index.md", + }, + items: [ + "deploy/other/migration/weaviate-1-30", + "deploy/other/migration/weaviate-1-25.md", + "deploy/other/migration/archive.md", + ], + }, + ], agentsSidebar: [ "agents/index", { From 306b9bb3c8f59c5b9d0861fbbf043d09dc53d84b Mon Sep 17 00:00:00 2001 From: DanielleWashington <dwashington.100292@gmail.com> Date: Mon, 12 May 2025 13:47:01 -0400 Subject: [PATCH 30/39] fixing sidebar links --- sidebars.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sidebars.js b/sidebars.js index acdc0e09..5b52c53f 100644 --- a/sidebars.js +++ b/sidebars.js @@ -822,12 +822,12 @@ const sidebars = { label: "Migration", link: { type: "doc", - id: "deploy/other/migration/index.md", + id: "deploy/other/migration/index", }, items: [ "deploy/other/migration/weaviate-1-30", - "deploy/other/migration/weaviate-1-25.md", - "deploy/other/migration/archive.md", + "deploy/other/migration/weaviate-1-25", + "deploy/other/migration/archive", ], }, ], From 2d5e616b4b4d3829b9a3d34cadc09bc9ce4ba8ac Mon Sep 17 00:00:00 2001 From: DanielleWashington <dwashington.100292@gmail.com> Date: Mon, 12 May 2025 15:25:43 -0400 Subject: [PATCH 31/39] broken link fixes --- docs/cloud/manage-clusters/status.mdx | 2 +- docs/weaviate/best-practices/index.md | 3 ++- docs/weaviate/concepts/data.md | 2 +- docs/weaviate/concepts/indexing/inverted-index.md | 2 +- docs/weaviate/concepts/indexing/vector-index.md | 2 +- docs/weaviate/concepts/replication-architecture/index.md | 2 +- docs/weaviate/config-refs/index.mdx | 4 ++-- docs/weaviate/config-refs/schema/index.md | 2 +- 8 files changed, 10 insertions(+), 9 deletions(-) diff --git a/docs/cloud/manage-clusters/status.mdx b/docs/cloud/manage-clusters/status.mdx index ac0b36c6..df1b47f1 100644 --- a/docs/cloud/manage-clusters/status.mdx +++ b/docs/cloud/manage-clusters/status.mdx @@ -72,7 +72,7 @@ Serverless clusters also have an `Advanced configuration` section to configure o ## API Endpoint {#api-endpoint} -To get cluster details programmatically, use the [`nodes`](/docs/weaviate/config-refs/nodes.md) REST endpoint. +To get cluster details programmatically, use the [`nodes`](/docs/deploy/config-guides/nodes.md) REST endpoint. import APIOutputs from '/_includes/rest/node-endpoint-info.mdx'; diff --git a/docs/weaviate/best-practices/index.md b/docs/weaviate/best-practices/index.md index fb73d759..b201fef8 100644 --- a/docs/weaviate/best-practices/index.md +++ b/docs/weaviate/best-practices/index.md @@ -97,7 +97,8 @@ These thresholds can be adjusted to better fit your use case. For example, if yo Set `DISK_USE_WARNING_PERCENTAGE` and `DISK_USE_READONLY_PERCENTAGE` to adjust the disk usage thresholds, and `MEMORY_WARNING_PERCENTAGE` and `MEMORY_READONLY_PERCENTAGE` to adjust the memory usage thresholds. :::tip Further resources -- [References: Environment variables](../config-refs/env-vars/index.md#general) +- [References: Environment variables](/docs/deploy/config-guides/env-vars/index.md#general) () + ::: ### Plan memory allocation diff --git a/docs/weaviate/concepts/data.md b/docs/weaviate/concepts/data.md index 2c68df98..a3aacb32 100644 --- a/docs/weaviate/concepts/data.md +++ b/docs/weaviate/concepts/data.md @@ -466,7 +466,7 @@ Cross-references like these are not supported: ### Monitoring metrics -To group tenants together for monitoring, set [`PROMETHEUS_MONITORING_GROUP = true`](../config-refs/env-vars/index.md) in your system configuration file. +To group tenants together for monitoring, set [`PROMETHEUS_MONITORING_GROUP = true`](/docs/deploy/config-guides/env-vars/index.md) in your system configuration file. ### Number of tenants per node diff --git a/docs/weaviate/concepts/indexing/inverted-index.md b/docs/weaviate/concepts/indexing/inverted-index.md index b8e61e43..0fa74ffb 100644 --- a/docs/weaviate/concepts/indexing/inverted-index.md +++ b/docs/weaviate/concepts/indexing/inverted-index.md @@ -27,7 +27,7 @@ As always, we recommend upgrading to the latest version of Weaviate to benefit f The BlockMax WAND algorithm is a variant of the WAND algorithm that is used to speed up BM25 and hybrid searches. It organizes the inverted index in blocks to enable skipping over blocks that are not relevant to the query. This can significantly reduce the number of documents that need to be scored, improving search performance. -If you are experiencing slow BM25 (or hybrid) searches and use a Weaviate version prior to `v1.30`, try migrating to a newer version that uses the BlockMax WAND algorithm to see if it improves performance. If you need to migrate existing data from a previous version of Weaviate, follow the [v1.30 migration guide](../../more-resources/migration/weaviate-1-30.md). +If you are experiencing slow BM25 (or hybrid) searches and use a Weaviate version prior to `v1.30`, try migrating to a newer version that uses the BlockMax WAND algorithm to see if it improves performance. If you need to migrate existing data from a previous version of Weaviate, follow the [v1.30 migration guide](/docs/deploy/other/migration/weaviate-1-30.md). :::note Scoring changes with BlockMax WAND diff --git a/docs/weaviate/concepts/indexing/vector-index.md b/docs/weaviate/concepts/indexing/vector-index.md index 2c6f9660..5299115d 100644 --- a/docs/weaviate/concepts/indexing/vector-index.md +++ b/docs/weaviate/concepts/indexing/vector-index.md @@ -162,7 +162,7 @@ When asynchronous indexing is enabled, all vector indexing operations go through This means that the object store can be updated quickly to finish performing user requests while the vector index updates in the background. Asynchronous indexing is especially useful for importing large amounts of data. -This means that there will be a short delay between object creation and the object being available for vector search using the HNSW index. The number of objects in the queue can be monitored per node [as shown here](../../config-refs/nodes.md). +This means that there will be a short delay between object creation and the object being available for vector search using the HNSW index. The number of objects in the queue can be monitored per node [as shown here](/docs/deploy/config-guides/nodes.md). :::info Changes in `v1.28` In Weaviate `v1.22` to `v1.27`, the async indexing feature only affected batch import operations, using an in-memory queue. diff --git a/docs/weaviate/concepts/replication-architecture/index.md b/docs/weaviate/concepts/replication-architecture/index.md index 5f1c6bb9..01753a13 100644 --- a/docs/weaviate/concepts/replication-architecture/index.md +++ b/docs/weaviate/concepts/replication-architecture/index.md @@ -147,7 +147,7 @@ Prior to Weaviate `v1.25`, each cluster metadata change was recorded via a distr This is a synchronous process, which means that the cluster metadata change is only committed when all nodes have acknowledged the change. In this architecture, any node downtime would temporarily prevent metadata operations. Additionally, only one such operation could be processed at a time. -If you are using Weaviate `v1.24` or earlier, you can [upgrade to `v1.25`](../../more-resources/migration/weaviate-1-25.md) to benefit from the Raft consensus algorithm for cluster metadata changes. +If you are using Weaviate `v1.24` or earlier, you can [upgrade to `v1.25`](/docs/deploy/other/migration/weaviate-1-25.md) to benefit from the Raft consensus algorithm for cluster metadata changes. </details> diff --git a/docs/weaviate/config-refs/index.mdx b/docs/weaviate/config-refs/index.mdx index f314e200..870cbac0 100644 --- a/docs/weaviate/config-refs/index.mdx +++ b/docs/weaviate/config-refs/index.mdx @@ -48,7 +48,7 @@ export const mainReferencesData = [ title: "Environment variables", description: "Configure Weaviate through environment variables and runtime settings.", - link: "/docs/weaviate/config-refs/env-vars", + link: "/docs/deploy/config-guides/env-vars", icon: "fas fa-cogs", }, ]; @@ -76,7 +76,7 @@ export const otherReferencesData = [ { title: "Cluster node data", description: "View and manage data about individual nodes in your cluster.", - link: "/docs/weaviate/config-refs/nodes", + link: "/docs/deploy/config-guides/nodes", icon: "fas fa-server", }, { diff --git a/docs/weaviate/config-refs/schema/index.md b/docs/weaviate/config-refs/schema/index.md index 9448629b..1ceaf4b3 100644 --- a/docs/weaviate/config-refs/schema/index.md +++ b/docs/weaviate/config-refs/schema/index.md @@ -159,7 +159,7 @@ We are working on a re-indexing API to allow you to re-index the data after addi To ensure optimal performance, Weaviate **limits the number of collections per node**. Each collection adds overhead in terms of indexing, definition management, and storage. This limit aims to ensure Weaviate remains performant. - **Default limit**: `1000` collections. -- **Modify the limit**: Use the [`MAXIMUM_ALLOWED_COLLECTIONS_COUNT`](../../config-refs/env-vars/index.md) environment variable to adjust the collection count limit. +- **Modify the limit**: Use the [`MAXIMUM_ALLOWED_COLLECTIONS_COUNT`](docs/deploy/config-guides/env-vars/index.md) environment variable to adjust the collection count limit. :::note If your instance already exceeds the limit, Weaviate will not allow the creation of any new collections. Existing collections will not be deleted. From 341c8703e849efa813926e8b0c8f817f258f7e09 Mon Sep 17 00:00:00 2001 From: g-despot <66276597+g-despot@users.noreply.github.com> Date: Tue, 13 May 2025 15:35:00 +0200 Subject: [PATCH 32/39] Update navigation modal --- secondaryNavbar.js | 1 + 1 file changed, 1 insertion(+) diff --git a/secondaryNavbar.js b/secondaryNavbar.js index 0e710ab2..8611c672 100644 --- a/secondaryNavbar.js +++ b/secondaryNavbar.js @@ -127,6 +127,7 @@ const secondaryNavbarItems = { integrations: { title: "Integrations", icon: "fa fa-puzzle-piece", + isSmall: true, description: "For hyperscalers, data platforms, LLM frameworks, etc.", link: "/docs/integrations", links: [ From c507c9a723fa1621bbaef59f76a3614890f5a69c Mon Sep 17 00:00:00 2001 From: DanielleWashington <dwashington.100292@gmail.com> Date: Wed, 14 May 2025 14:12:47 -0400 Subject: [PATCH 33/39] sidebar updates --- .../weaviate-sample-dashboard-async-queue.png | Bin .../weaviate-sample-dashboard-importing.png | Bin .../img/weaviate-sample-dashboard-lsm.png | Bin .../img/weaviate-sample-dashboard-objects.png | Bin .../img/weaviate-sample-dashboard-startup.png | Bin .../img/weaviate-sample-dashboard-usage.png | Bin .../img/weaviate-sample-dashboard-vector.png | Bin .../monitoring-obs/grafana-prometheus.md | 8 ---- .../config-guides/monitoring-obs/index.mdx | 5 -- .../{monitoring-obs => }/monitoring.md | 2 +- .../scaling-strategies/index.mdx | 11 ++--- .../scaling-strategies/multi-node.md | 4 -- docs/deploy/faqs/troubleshooting.md | 26 ++++++++-- docs/deploy/installation-guides/aws-cli.md | 45 +++++++----------- docs/deploy/migration/_category_.json | 4 ++ docs/deploy/{other => }/migration/archive.md | 2 +- docs/deploy/{other => }/migration/index.md | 12 ++++- .../{other => }/migration/weaviate-1-25.md | 2 +- .../{other => }/migration/weaviate-1-30.md | 2 +- docs/deploy/other/migration/_category_.json | 4 -- secondaryNavbar.js | 2 +- sidebars.js | 17 +------ 22 files changed, 66 insertions(+), 80 deletions(-) rename docs/deploy/config-guides/{monitoring-obs => }/img/weaviate-sample-dashboard-async-queue.png (100%) rename docs/deploy/config-guides/{monitoring-obs => }/img/weaviate-sample-dashboard-importing.png (100%) rename docs/deploy/config-guides/{monitoring-obs => }/img/weaviate-sample-dashboard-lsm.png (100%) rename docs/deploy/config-guides/{monitoring-obs => }/img/weaviate-sample-dashboard-objects.png (100%) rename docs/deploy/config-guides/{monitoring-obs => }/img/weaviate-sample-dashboard-startup.png (100%) rename docs/deploy/config-guides/{monitoring-obs => }/img/weaviate-sample-dashboard-usage.png (100%) rename docs/deploy/config-guides/{monitoring-obs => }/img/weaviate-sample-dashboard-vector.png (100%) delete mode 100644 docs/deploy/config-guides/monitoring-obs/grafana-prometheus.md delete mode 100644 docs/deploy/config-guides/monitoring-obs/index.mdx rename docs/deploy/config-guides/{monitoring-obs => }/monitoring.md (98%) delete mode 100644 docs/deploy/config-guides/scaling-strategies/multi-node.md create mode 100644 docs/deploy/migration/_category_.json rename docs/deploy/{other => }/migration/archive.md (99%) rename docs/deploy/{other => }/migration/index.md (86%) rename docs/deploy/{other => }/migration/weaviate-1-25.md (99%) rename docs/deploy/{other => }/migration/weaviate-1-30.md (99%) delete mode 100644 docs/deploy/other/migration/_category_.json diff --git a/docs/deploy/config-guides/monitoring-obs/img/weaviate-sample-dashboard-async-queue.png b/docs/deploy/config-guides/img/weaviate-sample-dashboard-async-queue.png similarity index 100% rename from docs/deploy/config-guides/monitoring-obs/img/weaviate-sample-dashboard-async-queue.png rename to docs/deploy/config-guides/img/weaviate-sample-dashboard-async-queue.png diff --git a/docs/deploy/config-guides/monitoring-obs/img/weaviate-sample-dashboard-importing.png b/docs/deploy/config-guides/img/weaviate-sample-dashboard-importing.png similarity index 100% rename from docs/deploy/config-guides/monitoring-obs/img/weaviate-sample-dashboard-importing.png rename to docs/deploy/config-guides/img/weaviate-sample-dashboard-importing.png diff --git a/docs/deploy/config-guides/monitoring-obs/img/weaviate-sample-dashboard-lsm.png b/docs/deploy/config-guides/img/weaviate-sample-dashboard-lsm.png similarity index 100% rename from docs/deploy/config-guides/monitoring-obs/img/weaviate-sample-dashboard-lsm.png rename to docs/deploy/config-guides/img/weaviate-sample-dashboard-lsm.png diff --git a/docs/deploy/config-guides/monitoring-obs/img/weaviate-sample-dashboard-objects.png b/docs/deploy/config-guides/img/weaviate-sample-dashboard-objects.png similarity index 100% rename from docs/deploy/config-guides/monitoring-obs/img/weaviate-sample-dashboard-objects.png rename to docs/deploy/config-guides/img/weaviate-sample-dashboard-objects.png diff --git a/docs/deploy/config-guides/monitoring-obs/img/weaviate-sample-dashboard-startup.png b/docs/deploy/config-guides/img/weaviate-sample-dashboard-startup.png similarity index 100% rename from docs/deploy/config-guides/monitoring-obs/img/weaviate-sample-dashboard-startup.png rename to docs/deploy/config-guides/img/weaviate-sample-dashboard-startup.png diff --git a/docs/deploy/config-guides/monitoring-obs/img/weaviate-sample-dashboard-usage.png b/docs/deploy/config-guides/img/weaviate-sample-dashboard-usage.png similarity index 100% rename from docs/deploy/config-guides/monitoring-obs/img/weaviate-sample-dashboard-usage.png rename to docs/deploy/config-guides/img/weaviate-sample-dashboard-usage.png diff --git a/docs/deploy/config-guides/monitoring-obs/img/weaviate-sample-dashboard-vector.png b/docs/deploy/config-guides/img/weaviate-sample-dashboard-vector.png similarity index 100% rename from docs/deploy/config-guides/monitoring-obs/img/weaviate-sample-dashboard-vector.png rename to docs/deploy/config-guides/img/weaviate-sample-dashboard-vector.png diff --git a/docs/deploy/config-guides/monitoring-obs/grafana-prometheus.md b/docs/deploy/config-guides/monitoring-obs/grafana-prometheus.md deleted file mode 100644 index be198a1c..00000000 --- a/docs/deploy/config-guides/monitoring-obs/grafana-prometheus.md +++ /dev/null @@ -1,8 +0,0 @@ ---- - -title: Grafana and Prometheus in Production - ---- - -So you've got your Weaviate deployment up and running and have now found yourself wondering about how to collect metrics of your deployment? Fear not, in this document we'll show how to use Grafana agent to scrape your metrics. - diff --git a/docs/deploy/config-guides/monitoring-obs/index.mdx b/docs/deploy/config-guides/monitoring-obs/index.mdx deleted file mode 100644 index 3c355582..00000000 --- a/docs/deploy/config-guides/monitoring-obs/index.mdx +++ /dev/null @@ -1,5 +0,0 @@ ---- -title: Monitoring and Observability -sidebar_position: 0 ---- - diff --git a/docs/deploy/config-guides/monitoring-obs/monitoring.md b/docs/deploy/config-guides/monitoring.md similarity index 98% rename from docs/deploy/config-guides/monitoring-obs/monitoring.md rename to docs/deploy/config-guides/monitoring.md index 4fd4d77e..39d14f43 100644 --- a/docs/deploy/config-guides/monitoring-obs/monitoring.md +++ b/docs/deploy/config-guides/monitoring.md @@ -55,7 +55,7 @@ command. In this setup the following components are used: ### Multi-tenancy -When using multi-tenancy, we suggest setting the `PROMETHEUS_MONITORING_GROUP` [environment variable](docs/weaviate/config-refs/env-vars.md) as `true` so that data across all tenants are grouped together for monitoring. +When using multi-tenancy, we suggest setting the `PROMETHEUS_MONITORING_GROUP` [environment variable](docs/deploy/config-guides/env-vars/index.md) as `true` so that data across all tenants are grouped together for monitoring. ## Obtainable Metrics diff --git a/docs/deploy/config-guides/scaling-strategies/index.mdx b/docs/deploy/config-guides/scaling-strategies/index.mdx index 22d01448..8f28d9b8 100644 --- a/docs/deploy/config-guides/scaling-strategies/index.mdx +++ b/docs/deploy/config-guides/scaling-strategies/index.mdx @@ -1,7 +1,7 @@ --- -title: Scaling Overview -sidebar_position: 1 +title: Scaling +sidebar_position: 0 --- @@ -36,12 +36,7 @@ Your deployment will grow beyond the limits of a single machine by distributing - Optimize resource usage across your infrastructure -### Next Steps - -- [High Availability Strategies] -- [Horizontal Scaling] - -#### Further resources +### Further resources - [Concepts: Horizontal Scaling](/docs/weaviate/concepts/cluster.md) diff --git a/docs/deploy/config-guides/scaling-strategies/multi-node.md b/docs/deploy/config-guides/scaling-strategies/multi-node.md deleted file mode 100644 index 456eaca2..00000000 --- a/docs/deploy/config-guides/scaling-strategies/multi-node.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -title: Deploying Highly Available Applications ---- - diff --git a/docs/deploy/faqs/troubleshooting.md b/docs/deploy/faqs/troubleshooting.md index f62a34e9..8a725b8d 100644 --- a/docs/deploy/faqs/troubleshooting.md +++ b/docs/deploy/faqs/troubleshooting.md @@ -4,7 +4,10 @@ title: Deployment Troubleshooting Guide --- -So you've deployed Weaviate and you're fully immersed in the world of vectors when suddenly you encounter a puzzling mystery. This page will serve as your handbook for when things go awry in "Vector Land!" Consider every error message a clue to solving the mystery you're encountering. +So you've deployed Weaviate and you're fully immersed in the world of vectors when suddenly you encounter a puzzling mystery. This page will serve as your handbook for when things go awry in "Vector Land!" + +Consider every error message a clue to solving the mystery you're encountering. The [LOG_LEVEL](/deploy/config-guides/env-vars#LOG_LEVEL) environment variable helps you to solve any mysteries you encounter. The various levels of logging will allow you to right-size the precise amount of information you need to solve any Vector Land mysteries. + ## Common issues and solutions @@ -54,9 +57,26 @@ To confirm and identify the issue, you'll want to first run the same query multi Check your settings to check if you have asynchronous replication enabled. If `async_replication_disabled` is set to "true" then you'll need to set that variable to "false." Once it is enabled, the logs will show messages that indicate successful peers checks and synchronization for the nodes. Additionally, test the [live and ready REST endpoints](/docs/weaviate/api/rest#tag/well-known/GET/.well-known/live) and check the network configuration of the nodes. </details> -## Further reading +### You've downgraded and now your clusters won't reach the `Ready` state. + +<details> + +<summary> Answer </summary> + +#### Identifying the issue + +If you have a multi-node instance running `1.28.13+`, `1.29.5+`, or `1.30.2+` and have downgraded to a `v1.27.x` version earlier than `1.27.26`. + +#### Resolving the issue + +If you need to downgrade Weaviate to `v1.27.x`, use `1.27.26` or higher. + +- [Migration guides](../migration/index.md) + +</details> + -- [LOG_LEVEL](insert env vars `log_level`) +As you continue your adventures in Vector Land, remember that even the most seasoned vector detectives encounter mysterious cases from time to time. Behind every error message lies not just a problem, but the clue you need to run Weaviate in its most optimal form! ## Questions and feedback diff --git a/docs/deploy/installation-guides/aws-cli.md b/docs/deploy/installation-guides/aws-cli.md index 2df72178..d4932de1 100644 --- a/docs/deploy/installation-guides/aws-cli.md +++ b/docs/deploy/installation-guides/aws-cli.md @@ -28,28 +28,18 @@ eksctl version To create your cluster, prepare a `yaml` file that with a name of your choosing (e.g. `eks-cluster.yaml`) -```bash +```yaml apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: - name: 'your-cluster-name' # Replace with your desired cluster name - region: 'your-region' # Replace with your desired AWS region - version: "1.33" # Kubernetes version - -iam: - withOIDC: true # Enable IAM OIDC provider + name: <your-cluster-name> + region: <your-region> + version: "1.31" - serviceAccounts: - - metadata: - name: aws-load-balancer-controller - namespace: kube-system - wellKnownPolicies: - awsLoadBalancerController: true - managedNodeGroups: - name: node-group-name labels: { role: worker } - instanceType: t3.large # Choose an appropriate instance type + instanceType: t3.large # Choose your instance type desiredCapacity: 3 # Number of nodes minSize: 2 # Minimum number of nodes for autoscaling maxSize: 5 # Maximum number of nodes for autoscaling @@ -74,9 +64,10 @@ addons: This creates an EKS cluster within your specified region with an autoscaling node group. There are 3 nodes for high availability and having autoscaling enabled allows for the cluster to dynamically adjust resources based on demand. -Run this command to create your EKS cluster: -``` -eksctl create cluster -f your-file-name.yaml +#### Run this command to create your EKS cluster: + +```bash +eksctl create cluster -f <your-file-name.yaml> ``` #### Enable `kubectl` to interact with the newly created cluster: @@ -91,10 +82,10 @@ aws eks --region <your-region> update-kubeconfig --name <your-cluster-name> kubectl get nodes ``` -#### Step 2: Add Storage Class +### Step 2: Add Storage Class After creating your cluster and verifying that you can interact with it , you'll need to create a `storageclass.yaml` file: -``` +```yaml apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: @@ -108,12 +99,15 @@ volumeBindingMode: Immediate allowVolumeExpansion: true ``` -After creating the storage class, apply it: ```kubectl apply -f <your-storageclass-name>.yaml``` +After creating the storage class, apply it: +```bash +kubectl apply -f <your-storageclass-name>.yaml +``` #### Verify your storage class and has been created and applied -``` +```bash kubectl get sc ``` @@ -148,13 +142,10 @@ helm upgrade --install weaviate weaviate/weaviate \ #### Verify your deployment ```bash -kubectl get pods +kubectl get pods -n weaviate ``` - -### Next Steps: [Connecting to Weaviate](docs/weaviate/connections/index.mdx) - -### Further Resources +## Further Resources - [Persistent storage for Kubernetes](https://aws.amazon.com/blogs/storage/persistent-storage-for-kubernetes/) diff --git a/docs/deploy/migration/_category_.json b/docs/deploy/migration/_category_.json new file mode 100644 index 00000000..aecbb8a4 --- /dev/null +++ b/docs/deploy/migration/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "Migration guides", + "position": 8 +} diff --git a/docs/deploy/other/migration/archive.md b/docs/deploy/migration/archive.md similarity index 99% rename from docs/deploy/other/migration/archive.md rename to docs/deploy/migration/archive.md index 87117745..786f1984 100644 --- a/docs/deploy/other/migration/archive.md +++ b/docs/deploy/migration/archive.md @@ -1,7 +1,7 @@ --- title: Archive -sidebar_position: 90 image: og/docs/more-resources.jpg +sidebar_position: 10 # tags: ['migration'] --- diff --git a/docs/deploy/other/migration/index.md b/docs/deploy/migration/index.md similarity index 86% rename from docs/deploy/other/migration/index.md rename to docs/deploy/migration/index.md index 28ff4e1d..dd1c0b3e 100644 --- a/docs/deploy/other/migration/index.md +++ b/docs/deploy/migration/index.md @@ -1,6 +1,6 @@ --- title: Migration Guide -sidebar_position: 10 +sidebar_position: 0 image: og/docs/more-resources.jpg # tags: ['migration'] --- @@ -59,6 +59,16 @@ If you are upgrading from a version before `v1.23.13`, we recommend that you: 2. Upgrade to at least `v1.23.13` (preferably to `v1.23.16`) or higher, using the [general upgrade instructions above](#general-upgrade-instructions). 3. Restore your backup to the upgraded instance. +## Downgrades + +### RAFT Snapshots (v1.28.13+, v1.29.5+, v1.30.2+) + +Multi-node instances of Weaviate running `1.28.13+`, `1.29.5+`, or `1.30.2+` may experience problems if downgraded to a `v1.27.x` version earlier than `1.27.26`. The cluster may not reach a **Ready** state due to a change in the way that RAFT snapshots are stored in the database. + +A fix for this issue will be released with `1.27.26`, which safely handles the downgrade path to `1.27`. + +If you need to downgrade Weaviate to `v1.27.x`, use `1.27.26` or higher. + ## Questions and feedback import DocsFeedback from '/_includes/docs-feedback.mdx'; diff --git a/docs/deploy/other/migration/weaviate-1-25.md b/docs/deploy/migration/weaviate-1-25.md similarity index 99% rename from docs/deploy/other/migration/weaviate-1-25.md rename to docs/deploy/migration/weaviate-1-25.md index 501334f7..2344fbeb 100644 --- a/docs/deploy/other/migration/weaviate-1-25.md +++ b/docs/deploy/migration/weaviate-1-25.md @@ -1,6 +1,6 @@ --- title: 1.25 (For Kubernetes users) -sidebar_position: 10 +sidebar_position: 2 image: og/docs/more-resources.jpg # tags: ['migration'] --- diff --git a/docs/deploy/other/migration/weaviate-1-30.md b/docs/deploy/migration/weaviate-1-30.md similarity index 99% rename from docs/deploy/other/migration/weaviate-1-30.md rename to docs/deploy/migration/weaviate-1-30.md index f939599d..f26bbb46 100644 --- a/docs/deploy/other/migration/weaviate-1-30.md +++ b/docs/deploy/migration/weaviate-1-30.md @@ -1,7 +1,7 @@ --- title: BlockMax WAND migration guide sidebar_label: 1.30 (BlockMax WAND migration) -sidebar_position: 9 +sidebar_position: 1 image: og/docs/more-resources.jpg --- diff --git a/docs/deploy/other/migration/_category_.json b/docs/deploy/other/migration/_category_.json deleted file mode 100644 index d2921f4f..00000000 --- a/docs/deploy/other/migration/_category_.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "label": "Migration guide", - "position": 8 -} diff --git a/secondaryNavbar.js b/secondaryNavbar.js index 8611c672..880d3494 100644 --- a/secondaryNavbar.js +++ b/secondaryNavbar.js @@ -72,7 +72,7 @@ const secondaryNavbarItems = { /*{ label: "Scaling Strategies", link: "/docs/deploy/scaling-strategies", sidebar: "deployScalingSidebar"},*/ /*{ label: "Monitoring and Observability", link: "/docs/deploy/monitoring-obs", sidebar: "deployObservabilitySidebar"},*/ { label: "FAQs", link: "/docs/deploy/faqs", sidebar: "deployFaqsSidebar"}, - { label: "Other", link: "/docs/deploy/other", sidebar: "deployOtherSidebar"}, + { label: "Migration", link: "/docs/deploy/migration", sidebar: "deployMigrationSidebar"}, ] }, diff --git a/sidebars.js b/sidebars.js index 5b52c53f..b7d97a97 100644 --- a/sidebars.js +++ b/sidebars.js @@ -812,23 +812,10 @@ const sidebars = { }, ], - deployOtherSidebar: [ + deployMigrationSidebar: [ { type: "autogenerated", - dirName: "deploy/other", - }, - { - type: "category", - label: "Migration", - link: { - type: "doc", - id: "deploy/other/migration/index", - }, - items: [ - "deploy/other/migration/weaviate-1-30", - "deploy/other/migration/weaviate-1-25", - "deploy/other/migration/archive", - ], + dirName: "deploy/migration" }, ], agentsSidebar: [ From d5a1dcc884de6598ddf43117583d9a84cf6f3102 Mon Sep 17 00:00:00 2001 From: DanielleWashington <dwashington.100292@gmail.com> Date: Wed, 14 May 2025 14:13:00 -0400 Subject: [PATCH 34/39] sidebar changes --- docs/deploy/config-guides/configuring-rbac.md | 2 +- .../horizontal-scaling.mdx | 18 +++++-- .../imgs => img}/horiz-scaling.png | Bin docs/deploy/config-guides/monitoring.md | 1 - .../scaling-strategies/index.mdx | 48 ------------------ .../installation-guides/aws-installation.md | 6 ++- 6 files changed, 19 insertions(+), 56 deletions(-) rename docs/deploy/config-guides/{scaling-strategies => }/horizontal-scaling.mdx (91%) rename docs/deploy/config-guides/{scaling-strategies/imgs => img}/horiz-scaling.png (100%) delete mode 100644 docs/deploy/config-guides/scaling-strategies/index.mdx diff --git a/docs/deploy/config-guides/configuring-rbac.md b/docs/deploy/config-guides/configuring-rbac.md index 1cf313cb..15b1b54a 100644 --- a/docs/deploy/config-guides/configuring-rbac.md +++ b/docs/deploy/config-guides/configuring-rbac.md @@ -1,5 +1,5 @@ --- -title: Enable and configure RBAC +title: RBAC sidebar_label: RBAC image: og/docs/configuration.jpg # tags: ['rbac', 'roles', 'configuration', 'authorization'] diff --git a/docs/deploy/config-guides/scaling-strategies/horizontal-scaling.mdx b/docs/deploy/config-guides/horizontal-scaling.mdx similarity index 91% rename from docs/deploy/config-guides/scaling-strategies/horizontal-scaling.mdx rename to docs/deploy/config-guides/horizontal-scaling.mdx index fd20d426..d7356a9c 100644 --- a/docs/deploy/config-guides/scaling-strategies/horizontal-scaling.mdx +++ b/docs/deploy/config-guides/horizontal-scaling.mdx @@ -1,4 +1,5 @@ --- +sidebar_label: Horizontal scaling title: Horizontal Scaling Deployment Strategies --- @@ -13,11 +14,16 @@ import JavaCode from '!!raw-loader!/_includes/code/howto/java/src/test/java/io/w import GoCode from '!!raw-loader!/_includes/code/howto/go/docs/manage-data.classes_test.go'; -This document provides detailed implementation guidance for horizontally scaling your Weaviate deployment. +Weaviate offers two complementary superpowers for scaling your deployment: sharding and replication. +Sharding divides your data across multiple nodes, allowing you to handle datasets far larger than a single machine could process. +Meanwhile, replication creates redundant copies of your data, ensuring high availability even when individual nodes fail or need maintenance. +While each scaling method shines on its own, the true magic happens when they join forces. + +Let's explore how you can harness these capabilities to build a deployment that's both massive in scale and rock-solid in reliability! ## Scaling Methods - + @@ -359,10 +365,12 @@ http://localhost:8080/v1/schema </TabItem> </Tabs> -#### Sharding and Replication: The Dynamic Duo - -In a highly available environment, combining sharding and replication leverages the power and capabilities of both methods to be a dynamic duo that keeps your deployment highly available. +In a highly available environment, combining sharding and replication leverages the power and +capabilities of both methods to be a dynamic duo that keeps your deployment highly available. +If given the opportunity, those two techniques will be your deployment's dynamic duo. +Specifically using the [`ASYNC_REPLICATION` environment variables](./async-rep.md) introduced in the 1.29 release +will allow you to unleash the full power of horizontal scaling! ## Questions and feedback diff --git a/docs/deploy/config-guides/scaling-strategies/imgs/horiz-scaling.png b/docs/deploy/config-guides/img/horiz-scaling.png similarity index 100% rename from docs/deploy/config-guides/scaling-strategies/imgs/horiz-scaling.png rename to docs/deploy/config-guides/img/horiz-scaling.png diff --git a/docs/deploy/config-guides/monitoring.md b/docs/deploy/config-guides/monitoring.md index 39d14f43..6525945b 100644 --- a/docs/deploy/config-guides/monitoring.md +++ b/docs/deploy/config-guides/monitoring.md @@ -1,6 +1,5 @@ --- title: Monitoring -sidebar_position: 50 image: og/docs/configuration.jpg # tags: ['configuration', 'operations', 'monitoring', 'observability'] --- diff --git a/docs/deploy/config-guides/scaling-strategies/index.mdx b/docs/deploy/config-guides/scaling-strategies/index.mdx deleted file mode 100644 index 8f28d9b8..00000000 --- a/docs/deploy/config-guides/scaling-strategies/index.mdx +++ /dev/null @@ -1,48 +0,0 @@ ---- - -title: Scaling -sidebar_position: 0 - ---- - -Interested in taking a journey to Weaviate's wonderful world of horizontal scaling and learn about the various scaling strategies available for your deployments? As your database grows from an experimental playground to a mission-critical infrastructure, you'll need strategies to scale effectively. So don't worry, we've got you covered! - -### Why Scaling Matters - -Vector databases face unique scaling challenges and as your data grows: - -- Memory requirements increase dramatically with vector dimensions and dataset size -- Query performance becomes critical as user traffic grows -- System reliability becomes non-negotiable for production deployments -- Cost optimization becomes increasingly important - - -### High Availability: Downtime is not an option - -A highly available architecture ensures that your deployment is operational even when individual components fails, this architecture is essential for: - -- Mission-critical applications where search functionality cannot go offline -- Zero-downtime maintenance for seamless upgrades and updates -- Resilience against hardware failures or cloud provider issues -- Consistent performance even during peak traffic periods - -### Horizontal Scaling: Growing out, not up - -Your deployment will grow beyond the limits of a single machine by distributing your workload across multiple nodes by using horizontal scaling. Implementing this will allow your deployment to: - -- Handle larger datasets that exceed single-machine memory -- Improve query throughput by distributing read operations -- Accelerate imports through parallel processing -- Optimize resource usage across your infrastructure - - -### Further resources - -- [Concepts: Horizontal Scaling](/docs/weaviate/concepts/cluster.md) - - -## Questions and feedback - -import DocsFeedback from '/_includes/docs-feedback.mdx'; - -<DocsFeedback/> \ No newline at end of file diff --git a/docs/deploy/installation-guides/aws-installation.md b/docs/deploy/installation-guides/aws-installation.md index 185efc58..8af042d5 100644 --- a/docs/deploy/installation-guides/aws-installation.md +++ b/docs/deploy/installation-guides/aws-installation.md @@ -44,7 +44,7 @@ From there you will be prompted to set up your account on [Weaviate Cloud](docs ::: -## Billing +### Billing You will be charged for Weaviate directly by AWS. @@ -54,6 +54,10 @@ If you cancel your Weaviate AWS marketplace subscription, your Weaviate organiza ::: +### Other marketplace offerings + +- [Weaviate Kubernetes Cluster](https://aws.amazon.com/marketplace/pp/prodview-cicacyv63r43i?sr=0-1&ref_=beagle&applicationId=AWSMPContessa) this product uses a CloudFormation template to create an EKS cluster with Weaviate already installed. + ## Questions and feedback import DocsFeedback from '/_includes/docs-feedback.mdx'; From 68b7297ab2b481d45f768ad8cb3634202c9c84bf Mon Sep 17 00:00:00 2001 From: DanielleWashington <dwashington.100292@gmail.com> Date: Thu, 15 May 2025 16:05:29 -0400 Subject: [PATCH 35/39] broken link fixes --- _includes/collections-count-limit.mdx | 2 +- _includes/dynamic-index-async-req.mdx | 2 +- .../deployment/k8s/30_setup_weaviate.mdx | 2 +- docs/academy/deployment/k8s/90_next_steps.mdx | 2 +- .../academy/js/_snippets/intro_next_steps.mdx | 2 +- .../js/_snippets/intro_next_steps_js.mdx | 2 +- .../academy/py/_snippets/intro_next_steps.mdx | 2 +- .../101_hello_weaviate/90_next_steps.mdx | 2 +- docs/contributor-guide/weaviate-core/setup.md | 3 +- docs/deploy/config-guides/async-rep.md | 6 ++-- docs/deploy/config-guides/authentication.md | 4 +-- docs/deploy/config-guides/authorization.md | 8 ++--- docs/deploy/config-guides/backups.md | 6 ++-- docs/deploy/config-guides/configuring-rbac.md | 6 ++-- docs/deploy/config-guides/env-vars/index.md | 36 +++++++++---------- .../config-guides/env-vars/runtime-config.md | 8 ++++- .../config-guides/horizontal-scaling.mdx | 2 +- docs/deploy/config-guides/modules.md | 4 +-- docs/deploy/config-guides/persistence.md | 2 +- docs/deploy/config-guides/replication.md | 4 +-- docs/deploy/faqs/troubleshooting.md | 2 +- .../docker-installation.md | 6 ++-- .../installation-guides/k8s-installation.md | 6 ++-- docs/deploy/production/Kubernetes/k8s-poc.md | 2 +- docs/weaviate/api/grpc.md | 2 +- docs/weaviate/concepts/cluster.md | 2 +- docs/weaviate/concepts/filtering.md | 2 +- .../cluster-architecture.md | 2 +- .../replication-architecture/consistency.md | 2 +- docs/weaviate/concepts/resources.md | 6 ++-- .../weaviate/concepts/search/vector-search.md | 2 +- docs/weaviate/configuration/authentication.md | 2 +- docs/weaviate/configuration/index.mdx | 2 +- docs/weaviate/configuration/modules.md | 2 +- docs/weaviate/configuration/monitoring.md | 2 +- docs/weaviate/configuration/rbac/index.mdx | 6 ++-- docs/weaviate/configuration/replication.md | 4 +-- docs/weaviate/installation/docker-compose.md | 6 ++-- docs/weaviate/installation/kubernetes.md | 4 +-- .../manage-collections/vector-config.mdx | 2 +- docs/weaviate/manage-objects/delete.mdx | 4 +-- .../use_google_auth_instructions.mdx | 2 +- docs/weaviate/more-resources/faq.md | 2 +- .../collections-scaling-limits.mdx | 4 +-- docs/weaviate/tutorials/import.md | 2 +- 45 files changed, 94 insertions(+), 89 deletions(-) diff --git a/_includes/collections-count-limit.mdx b/_includes/collections-count-limit.mdx index 2c9dd21c..1079633a 100644 --- a/_includes/collections-count-limit.mdx +++ b/_includes/collections-count-limit.mdx @@ -1,3 +1,3 @@ :::info -To ensure optimal performance, Weaviate **limits the number of collections per instance**. The default limit is `100` collections and it can be adjusted via the [`MAXIMUM_ALLOWED_COLLECTIONS_COUNT`](/docs/weaviate/config-refs/env-vars) environment variable. +To ensure optimal performance, Weaviate **limits the number of collections per instance**. The default limit is `100` collections and it can be adjusted via the [`MAXIMUM_ALLOWED_COLLECTIONS_COUNT`](/docs/deploy/config-guides/env-vars/index.md) environment variable. ::: \ No newline at end of file diff --git a/_includes/dynamic-index-async-req.mdx b/_includes/dynamic-index-async-req.mdx index 2a3d3d68..5a230a7d 100644 --- a/_includes/dynamic-index-async-req.mdx +++ b/_includes/dynamic-index-async-req.mdx @@ -1,3 +1,3 @@ :::info Dynamic index requires `ASYNC_INDEXING` -Dynamic indexes require asynchronous indexing. To enable asynchronous indexing in a self-hosted Weaviate instance, set the `ASYNC_INDEXING` [environment variable](/docs/weaviate/config-refs/env-vars#general) to `true`. If your instance is hosted in Weaviate Cloud, use the Weaviate Cloud console to enable asynchronous indexing. +Dynamic indexes require asynchronous indexing. To enable asynchronous indexing in a self-hosted Weaviate instance, set the `ASYNC_INDEXING` [environment variable](/docs/deploy/config-guides/env-vars/index.md#general) to `true`. If your instance is hosted in Weaviate Cloud, use the Weaviate Cloud console to enable asynchronous indexing. ::: \ No newline at end of file diff --git a/docs/academy/deployment/k8s/30_setup_weaviate.mdx b/docs/academy/deployment/k8s/30_setup_weaviate.mdx index dbb25836..f1259e1f 100644 --- a/docs/academy/deployment/k8s/30_setup_weaviate.mdx +++ b/docs/academy/deployment/k8s/30_setup_weaviate.mdx @@ -139,7 +139,7 @@ Congratulations! You have successfully deployed Weaviate on your local Kubernete To upgrade to `1.25` or higher from a pre-`1.25` version, you must delete the deployed `StatefulSet`, update the helm chart to version `17.0.0` or higher, and re-deploy Weaviate. -See the [1.25 migration guide for Kubernetes](/docs/weaviate/more-resources/migration/weaviate-1-25) for more details. +See the [1.25 migration guide for Kubernetes](docs/deploy/migration/weaviate-1-25.md) for more details. ::: ## Questions and feedback diff --git a/docs/academy/deployment/k8s/90_next_steps.mdx b/docs/academy/deployment/k8s/90_next_steps.mdx index bbe15bb2..beded78a 100644 --- a/docs/academy/deployment/k8s/90_next_steps.mdx +++ b/docs/academy/deployment/k8s/90_next_steps.mdx @@ -31,7 +31,7 @@ If you have replication configured, you can apply [tunable consistency](/docs/we - How-to guides - - The [How-to: Manage collections](/docs/weaviate/manage-collections/index.mdx) and [How-to: Manage objects](/docs/weaviate/manage-objects/index.mdx) guides show how to perform data operations (i.e. create, read, update, delete collections and objects within them).. - [How-to: search](/docs/weaviate/search/index.mdx): Code examples for all types of search operations. - - [How-to: configure Weaviate](/docs/weaviate/configuration/index.mdx): Guides for configuring Weaviate, such as [PQ](/docs/weaviate/configuration/compression/pq-compression.md) and [BQ](/docs/weaviate/configuration/compression/bq-compression.md) compression, [backups](/docs/weaviate/configuration/backups.md) and [replication](/docs/weaviate/configuration/replication.md). + - [How-to: configure Weaviate](/docs/weaviate/configuration/index.mdx): Guides for configuring Weaviate, such as [PQ](/docs/weaviate/configuration/compression/pq-compression.md) and [BQ](/docs/weaviate/configuration/compression/bq-compression.md) compression, [backups](docs/deploy/config-guides/backups.md) and [replication](/docs/weaviate/configuration/replication.md). - [Concepts guides](/docs/weaviate/concepts/index.md): Guides for understanding Weaviate's architecture and concepts. - [API reference](/docs/weaviate/api/index.mdx): Detailed information about Weaviate's APIs. diff --git a/docs/academy/js/_snippets/intro_next_steps.mdx b/docs/academy/js/_snippets/intro_next_steps.mdx index df7f9d1f..0fb1baad 100644 --- a/docs/academy/js/_snippets/intro_next_steps.mdx +++ b/docs/academy/js/_snippets/intro_next_steps.mdx @@ -9,7 +9,7 @@ Some of our more popular resources include: - How-to guides - The [How-to: Manage collections](/docs/weaviate/manage-collections/index.mdx) and [How-to: Manage objects](/docs/weaviate/manage-objects/index.mdx) guides show how to perform data operations (i.e. create, read, update, delete collections and objects within them).. - [How-to: search](/docs/weaviate/search/index.mdx): Code examples for all types of search operations. - - [How-to: configure Weaviate](/docs/weaviate/configuration/index.mdx): Guides for configuring Weaviate, such as [PQ](/docs/weaviate/configuration/compression/pq-compression.md) and [BQ](/docs/weaviate/configuration/compression/bq-compression.md) compression, [backups](/docs/weaviate/configuration/backups.md) and [replication](/docs/weaviate/configuration/replication.md). + - [How-to: configure Weaviate](/docs/weaviate/configuration/index.mdx): Guides for configuring Weaviate, such as [PQ](/docs/weaviate/configuration/compression/pq-compression.md) and [BQ](/docs/weaviate/configuration/compression/bq-compression.md) compression, [backups](docs/deploy/config-guides/backups.md) and [replication](/docs/weaviate/configuration/replication.md). - [Concepts guides](/docs/weaviate/concepts/index.md): Guides for understanding Weaviate's architecture and concepts. - [API reference](/docs/weaviate/api/index.mdx): Detailed information about Weaviate's APIs. diff --git a/docs/academy/js/_snippets/intro_next_steps_js.mdx b/docs/academy/js/_snippets/intro_next_steps_js.mdx index 854b7b3a..aed9bb8e 100644 --- a/docs/academy/js/_snippets/intro_next_steps_js.mdx +++ b/docs/academy/js/_snippets/intro_next_steps_js.mdx @@ -9,7 +9,7 @@ Some of our more popular resources include: - How-to guides - The [How-to: Manage collections](/docs/weaviate/manage-collections/index.mdx) and [How-to: Manage objects](/docs/weaviate/manage-objects/index.mdx) guides show how to perform data operations (i.e. create, read, update, delete collections and objects within them).. - [How-to: search](/docs/weaviate/search/index.mdx): Code examples for all types of search operations. - - [How-to: configure Weaviate](/docs/weaviate/configuration/index.mdx): Guides for configuring Weaviate, such as [PQ](/docs/weaviate/configuration/compression/pq-compression.md) and [BQ](/docs/weaviate/configuration/compression/bq-compression.md) compression, [backups](/docs/weaviate/configuration/backups.md) and [replication](/docs/weaviate/configuration/replication.md). + - [How-to: configure Weaviate](/docs/weaviate/configuration/index.mdx): Guides for configuring Weaviate, such as [PQ](/docs/weaviate/configuration/compression/pq-compression.md) and [BQ](/docs/weaviate/configuration/compression/bq-compression.md) compression, [backups](docs/deploy/config-guides/backups.md) and [replication](/docs/weaviate/configuration/replication.md). - [Concepts guides](/docs/weaviate/concepts/index.md): Guides for understanding Weaviate's architecture and concepts. - [API reference](/docs/weaviate/api/index.mdx): Detailed information about Weaviate's APIs. diff --git a/docs/academy/py/_snippets/intro_next_steps.mdx b/docs/academy/py/_snippets/intro_next_steps.mdx index 02bf0dbf..4c52713b 100644 --- a/docs/academy/py/_snippets/intro_next_steps.mdx +++ b/docs/academy/py/_snippets/intro_next_steps.mdx @@ -9,7 +9,7 @@ Some of our more popular resources include: - How-to guides - The [How-to: Manage collections](/docs/weaviate/manage-collections/index.mdx) and [How-to: Manage objects](/docs/weaviate/manage-objects/index.mdx) guides show how to perform data operations (i.e. create, read, update, delete collections and objects within them).. - [How-to: search](/docs/weaviate/search/index.mdx): Code examples for all types of search operations. - - [How-to: configure Weaviate](/docs/weaviate/configuration/index.mdx): Guides for configuring Weaviate, such as [PQ](/docs/weaviate/configuration/compression/pq-compression.md) and [BQ](/docs/weaviate/configuration/compression/bq-compression.md) compression, [backups](/docs/weaviate/configuration/backups.md) and [replication](/docs/weaviate/configuration/replication.md). + - [How-to: configure Weaviate](/docs/weaviate/configuration/index.mdx): Guides for configuring Weaviate, such as [PQ](/docs/weaviate/configuration/compression/pq-compression.md) and [BQ](/docs/weaviate/configuration/compression/bq-compression.md) compression, [backups](docs/deploy/config-guides/backups.md) and [replication](/docs/weaviate/configuration/replication.md). - [Concepts guides](/docs/weaviate/concepts/index.md): Guides for understanding Weaviate's architecture and concepts. - [API reference](/docs/weaviate/api/index.mdx): Detailed information about Weaviate's APIs. diff --git a/docs/academy/theory/101_hello_weaviate/90_next_steps.mdx b/docs/academy/theory/101_hello_weaviate/90_next_steps.mdx index 00f90bc0..6ddc7d52 100644 --- a/docs/academy/theory/101_hello_weaviate/90_next_steps.mdx +++ b/docs/academy/theory/101_hello_weaviate/90_next_steps.mdx @@ -23,7 +23,7 @@ And for TypeScript/JavaScript: - How-to guides - The [How-to: Manage collections](/docs/weaviate/manage-collections/index.mdx) and [How-to: Manage objects](/docs/weaviate/manage-objects/index.mdx) guides show how to perform data operations (i.e. create, read, update, delete collections and objects within them).. - [How-to: search](/docs/weaviate/search/index.mdx): Code examples for all types of search operations. - - [How-to: configure Weaviate](/docs/weaviate/configuration/index.mdx): Guides for configuring Weaviate, such as [PQ](/docs/weaviate/configuration/compression/pq-compression.md) and [BQ](/docs/weaviate/configuration/compression/bq-compression.md) compression, [backups](/docs/weaviate/configuration/backups.md) and [replication](/docs/weaviate/configuration/replication.md). + - [How-to: configure Weaviate](/docs/weaviate/configuration/index.mdx): Guides for configuring Weaviate, such as [PQ](/docs/weaviate/configuration/compression/pq-compression.md) and [BQ](/docs/weaviate/configuration/compression/bq-compression.md) compression, [backups](docs/deploy/config-guides/backups.md) and [replication](/docs/weaviate/configuration/replication.md). - [Concepts guides](/docs/weaviate/concepts/index.md): Guides for understanding Weaviate's architecture and concepts. - [API reference](/docs/weaviate/api/index.mdx): Detailed information about Weaviate's APIs. diff --git a/docs/contributor-guide/weaviate-core/setup.md b/docs/contributor-guide/weaviate-core/setup.md index 0174aa37..fe625c50 100644 --- a/docs/contributor-guide/weaviate-core/setup.md +++ b/docs/contributor-guide/weaviate-core/setup.md @@ -31,8 +31,7 @@ To run the server locally with the OpenAI module. The default configuration is `local-development` which will run the server locally with the `text2vec-contextionary` and `backup-filesystem` modules. -You can also create your own configuration. For instance, you can clone an entry (`local-all-openai-cohere-google` is a good start) and add the required [environment variables](../../weaviate/config-refs/env-vars/index.md). - +You can also create your own configuration. For instance, you can clone an entry (`local-all-openai-cohere-google` is a good start) and add the required [environment variables](docs/deploy/config-guides/env-vars/index.md). ## Running with Docker diff --git a/docs/deploy/config-guides/async-rep.md b/docs/deploy/config-guides/async-rep.md index 3bed2b78..34ac5ffb 100644 --- a/docs/deploy/config-guides/async-rep.md +++ b/docs/deploy/config-guides/async-rep.md @@ -166,11 +166,11 @@ Sets the maximum time allowed for a single propagation request (sending actual o ### Further Resources -[Concepts: Replication](https://weaviate.io/developers/weaviate/concepts/replication-architecture/consistency) +- [Concepts: Replication](https://weaviate.io/developers/weaviate/concepts/replication-architecture/consistency) -[Replication How-To](https://weaviate.io/developers/weaviate/configuration/replication#async-replication-settings) +- [Replication How-To](https://weaviate.io/developers/weaviate/configuration/replication#async-replication-settings) -[Environment Variables](https://weaviate.io/developers/weaviate/config-refs/env-vars#async-replication) +- [Environment Variables](docs/deploy/config-guides/env-vars/index.md#async-replication) ## Questions and feedback diff --git a/docs/deploy/config-guides/authentication.md b/docs/deploy/config-guides/authentication.md index 783a1f5f..89bc07df 100644 --- a/docs/deploy/config-guides/authentication.md +++ b/docs/deploy/config-guides/authentication.md @@ -66,7 +66,7 @@ Note that API key and OIDC authentication can be both enabled at the same time. The way to configure authentication differs by your deployment method, depending on whether you are running Weaviate in Docker or Kubernetes. Below, we provide examples for both. :::info What about Weaviate Cloud (WCD)? -For Weaviate Cloud (WCD) instances, authentication is pre-configured with OIDC and API key access. You can [authenticate against Weaviate](../connections/connect-cloud.mdx) with your WCD credentials using OIDC, or [with API keys](/docs/cloud/platform/manage-api-keys). +For Weaviate Cloud (WCD) instances, authentication is pre-configured with OIDC and API key access. You can [authenticate against Weaviate](/docs/weaviate/connections/connect-cloud.mdx) with your WCD credentials using OIDC, or [with API keys](/docs/cloud/platform/manage-api-keys). ::: ## API Key Authentication @@ -329,7 +329,7 @@ authentication: ## Further resources - [Configuration: Authorization and RBAC](./authorization.md) -- [References: Environment variables / Authentication and Authorization](../config-refs/env-vars.md#authentication-and-authorization) +- [References: Environment variables / Authentication and Authorization](/docs/deploy/config-guides/env-vars#authentication-and-authorization) ## Questions and feedback diff --git a/docs/deploy/config-guides/authorization.md b/docs/deploy/config-guides/authorization.md index 51711aac..58e5c776 100644 --- a/docs/deploy/config-guides/authorization.md +++ b/docs/deploy/config-guides/authorization.md @@ -78,7 +78,7 @@ In the Admin list authorization scheme, [anonymous users](#anonymous-users) can The way to configure authorization differs by your deployment method, depending on whether you are running Weaviate in Docker or Kubernetes. Below, we provide examples for both. :::info What about Weaviate Cloud (WCD)? -For Weaviate Cloud (WCD) instances, authorization is pre-configured with Admin list access. You can [authenticate against Weaviate](../connections/connect-cloud.mdx) with your WCD credentials using OIDC, or [with admin or read-only API keys](/docs/cloud/platform/manage-api-keys). +For Weaviate Cloud (WCD) instances, authorization is pre-configured with Admin list access. You can [authenticate against Weaviate](/docs/weaviate/connections/connect-cloud.mdx) with your WCD credentials using OIDC, or [with admin or read-only API keys](/docs/cloud/platform/manage-api-keys). <br/> RBAC access will be available in WCD in a future release. @@ -92,7 +92,7 @@ Role-based access control (RBAC) is generally available in Weaviate from version Role-based access control (RBAC) is a method of restricting access to resources based on the roles of users. In Weaviate, RBAC allows you to define **roles** and assign **permissions** to those roles. Users can then be assigned to roles, and inherit the permissions associated with those roles. -Check out the dedicated **[RBAC documentation](./rbac/index.mdx)** for instructions on how to [configure RBAC](./rbac/configuration.md) in your Weaviate instance and examples on how to [manage roles an users](./rbac/manage-roles.mdx). +Check out the dedicated **[RBAC documentation](/docs/weaviate/configuration/rbac/index.mdx)** for instructions on how to [configure RBAC](/docs/deploy/config-guides/configuring-rbac.md) in your Weaviate instance and examples on how to [manage roles an users](/docs/weaviate/configuration/rbac/manage-roles.mdx). ## Admin list @@ -249,8 +249,8 @@ Weaviate can be configured to provide undifferentiated access, by disabling auth ## Further resources - [Configuration: Authentication](./authentication.md) -- [Configuration: RBAC](./rbac/index.mdx) -- [References: Environment variables / Authentication and Authorization](../config-refs/env-vars/index.md#authentication-and-authorization) +- [Configuration: RBAC](/docs/weaviate/configuration/rbac/index.mdx) +- [References: Environment variables / Authentication and Authorization](docs/deploy/config-guides/env-vars/index.md#authentication-and-authorization) ## Questions and feedback diff --git a/docs/deploy/config-guides/backups.md b/docs/deploy/config-guides/backups.md index d2ef9780..7ee6f17a 100644 --- a/docs/deploy/config-guides/backups.md +++ b/docs/deploy/config-guides/backups.md @@ -27,8 +27,8 @@ Weaviate's Backup feature is designed to work natively with cloud technology. Mo :::caution Important backup considerations -- **Version Requirements**: If you are running Weaviate `v1.23.12` or older, you must [update](../more-resources/migration/index.md) to `v1.23.13` or higher before restoring a backup to prevent data corruption. -- **[Multi-tenancy](../concepts/data.md#multi-tenancy) limitations**: Backups will only include `active` tenants. `Inactive` or `offloaded` tenants in multi-tenant collections will not be included. Be sure to [activate](../manage-collections/multi-tenancy.mdx#manage-tenant-states) any required tenants before creating a backup. +- **Version Requirements**: If you are running Weaviate `v1.23.12` or older, you must [update](/docs/deploy/migration/index.md) to `v1.23.13` or higher before restoring a backup to prevent data corruption. +- **[Multi-tenancy](docs/weaviate/concepts/data.md#multi-tenancy) limitations**: Backups will only include `active` tenants. `Inactive` or `offloaded` tenants in multi-tenant collections will not be included. Be sure to [activate](docs/weaviate/manage-collections/multi-tenancy.mdx#manage-tenant-states) any required tenants before creating a backup. ::: ## Backup Quickstart @@ -643,7 +643,7 @@ These values are available under the `backups` key in the `values.yaml` file. Re The backup process is designed to be minimally invasive to a running setup. Even on very large setups, where terabytes of data need to be copied, Weaviate stays available during backup. It even accepts write requests while a backup process is running. This sections explains how backups work under the hood and why Weaviate can safely accept writes while a backup is copied. -Weaviate uses a custom [LSM Store](../concepts/storage.md#object-and-inverted-index-store) for its object store and inverted index. LSM stores are a hybrid of immutable disk segments and an in-memory structure called a memtable that accepts all writes (including updates and deletes). Most of the time, files on disk are immutable, there are only three situations where files are changed: +Weaviate uses a custom [LSM Store](docs/weaviate/concepts/storage.md#object-and-inverted-index-store) for its object store and inverted index. LSM stores are a hybrid of immutable disk segments and an in-memory structure called a memtable that accepts all writes (including updates and deletes). Most of the time, files on disk are immutable, there are only three situations where files are changed: 1. Anytime a memtable is flushed. This creates a new segment. Existing segments are not changed. 2. Any write into the memtable is also written into a Write-Ahead-Log (WAL). The WAL is only needed for disaster-recovery. Once a segment has been orderly flushed, the WAL can be discarded. diff --git a/docs/deploy/config-guides/configuring-rbac.md b/docs/deploy/config-guides/configuring-rbac.md index 15b1b54a..696a2ca9 100644 --- a/docs/deploy/config-guides/configuring-rbac.md +++ b/docs/deploy/config-guides/configuring-rbac.md @@ -58,7 +58,7 @@ This configuration: - Enables RBAC - Configures `root-user` as a user with built-in admin permissions -You can connect to your instance with the root user in order to [create new users](./manage-users.mdx) which can be assigned custom roles and permissions using the <SkipLink href="/docs/weaviate/api/rest#tag/authz">REST API</SkipLink> or [programmatically using a client library](./manage-roles.mdx). +You can connect to your instance with the root user in order to [create new users](docs/weaviate/configuration/rbac/manage-users.mdx) which can be assigned custom roles and permissions using the <SkipLink href="/docs/weaviate/api/rest#tag/authz">REST API</SkipLink> or [programmatically using a client library](docs/weaviate/configuration/rbac/manage-roles.mdx). import DynamicUserManagement from '/_includes/configuration/dynamic-user-management.mdx'; @@ -103,7 +103,7 @@ This configuration: - Enables RBAC - Configures `root-user` as a user with built-in admin permissions -You can connect to your instance with the root user in order to [create new users](./manage-users.mdx) which can be assigned custom roles and permissions using the <SkipLink href="/docs/weaviate/api/rest#tag/authz">REST API</SkipLink> or [programmatically using a client library](./manage-roles.mdx). +You can connect to your instance with the root user in order to [create new users](docs/weaviate/configuration/rbac/manage-users.mdx) which can be assigned custom roles and permissions using the <SkipLink href="/docs/weaviate/api/rest#tag/authz">REST API</SkipLink> or [programmatically using a client library](docs/weaviate/configuration/rbac/manage-roles.mdx). ## RBAC and performance @@ -122,7 +122,7 @@ Here are some tips to optimize performance when using RBAC: - [RBAC: Overview](docs/weaviate/configuration/rbac/index.mdx) - [RBAC: Manage roles](docs/weaviate/configuration/rbac/manage-roles.mdx) - [RBAC: Manage users](docs/weaviate/configuration/rbac/manage-users.mdx) -- [RBAC: Tutorial](docs/weaviate/tutorials/rbac.mdx) +- [RBAC: Tutorial](docs/deploy/tutorials/rbac.mdx) ## Questions and feedback diff --git a/docs/deploy/config-guides/env-vars/index.md b/docs/deploy/config-guides/env-vars/index.md index 9ef56610..0b31a99c 100644 --- a/docs/deploy/config-guides/env-vars/index.md +++ b/docs/deploy/config-guides/env-vars/index.md @@ -5,7 +5,7 @@ image: og/docs/configuration.jpg # tags: ['HNSW'] --- -To configure Weaviate in a [Docker](../../installation/docker-compose.md) or a [Kubernetes](../../installation/kubernetes.md) deployment, you can set these environment variables. +To configure Weaviate in a [Docker](/docs/deploy/installation-guides/docker-installation.md) or a [Kubernetes](/docs/deploy/installation-guides/k8s-installation.md) deployment, you can set these environment variables. :::info Boolean environment variables For Boolean environment variables, `"on"`, `"enabled"`, `"1"`, and `"true"` are interpreted as `true`. @@ -35,14 +35,14 @@ import APITable from '@site/src/components/APITable'; | `RAFT_ENABLE_ONE_NODE_RECOVERY` | Enable running the single node recovery routine on restart. This is useful if the default hostname has changed and a single node cluster believes there are supposed to be two nodes. | `boolean` | `false` | | `DEFAULT_VECTORIZER_MODULE` | Default vectorizer module - will be overridden by any class-level value defined in the schema | `string` | `text2vec-contextionary` | | `DISABLE_LAZY_LOAD_SHARDS` | New in v1.23. When `false`, enable lazy shard loading to improve mean time to recovery in multi-tenant deployments. | `string` | `false` | -| `DISABLE_TELEMETRY` | Disable [telemetry](../telemetry.md) data collection | boolean | `false` | +| `DISABLE_TELEMETRY` | Disable [telemetry](docs/weaviate/config-refs/telemetry.md) data collection | boolean | `false` | | `DISK_USE_READONLY_PERCENTAGE` | If disk usage is higher than the given percentage all shards on the affected node will be marked as `READONLY`, meaning all future write requests will fail. See [Disk Pressure Warnings and Limits for details](/docs/weaviate/configuration/persistence.md#disk-pressure-warnings-and-limits). | `string - number` | `90` | | `DISK_USE_WARNING_PERCENTAGE` | If disk usage is higher than the given percentage a warning will be logged by all shards on the affected node's disk. See [Disk Pressure Warnings and Limits for details](/docs/weaviate/configuration/persistence.md#disk-pressure-warnings-and-limits). | `string - number` | `80` | | `ENABLE_API_BASED_MODULES` | Enable all API-based modules. (Experimental as of `v1.26.0`) | `boolean` | `true` | | `ENABLE_MODULES` | Specify Weaviate modules to enable | `string - comma separated names` | `text2vec-openai,generative-openai` | -| `ENABLE_TOKENIZER_GSE` | Enable the [`GSE` tokenizer](../../config-refs/schema/index.md#gse-and-trigram-tokenization-methods) for use | `boolean` | `true` | -| `ENABLE_TOKENIZER_KAGOME_JA` | Enable the [`Kagome` tokenizer for Japanese](../../config-refs/schema/index.md#kagome_ja-tokenization-method) for use (Experimental as of `v1.28.0`) | `boolean` | `true` | -| `ENABLE_TOKENIZER_KAGOME_KR` | Enable the [`Kagome` tokenizer for Korean](../../config-refs/schema/index.md#kagome_kr-tokenization-method) for use (Experimental as of `v1.25.7`) | `boolean` | `true` | +| `ENABLE_TOKENIZER_GSE` | Enable the [`GSE` tokenizer](/docs/weaviate/config-refs/schema/index.md#gse-and-trigram-tokenization-methods) for use | `boolean` | `true` | +| `ENABLE_TOKENIZER_KAGOME_JA` | Enable the [`Kagome` tokenizer for Japanese](docs/weaviate/config-refs/schema/index.md#kagome_ja-tokenization-method) for use (Experimental as of `v1.28.0`) | `boolean` | `true` | +| `ENABLE_TOKENIZER_KAGOME_KR` | Enable the [`Kagome` tokenizer for Korean](docs/weaviate/config-refs/schema/index.md#kagome_kr-tokenization-method) for use (Experimental as of `v1.25.7`) | `boolean` | `true` | | `GODEBUG` | Controls debugging variables within the runtime. [See official Go docs](https://pkg.go.dev/runtime). | `string - comma-separated list of name=val pairs` | `gctrace=1` | | `GOMAXPROCS` | Set the maximum number of threads that can be executing simultaneously. If this value is set, it be respected by `LIMIT_RESOURCES`. | `string - number` | `NUMBER_OF_CPU_CORES` | | `GOMEMLIMIT` | Set the memory limit for the Go runtime. A suggested value is between 90-80% of your total memory for Weaviate. The Go runtime tries to make sure that long-lived and temporary memory allocations do not exceed this value by making the garbage collector more aggressive as the memory usage approaches the limit. [Learn more about GOMEMLIMIT](https://weaviate.io/blog/gomemlimit-a-game-changer-for-high-memory-applications). | `string - memory limit in SI units` | `4096MiB` | @@ -53,28 +53,28 @@ import APITable from '@site/src/components/APITable'; | `LIMIT_RESOURCES` | If `true`, Weaviate will automatically attempt to auto-detect and limit the amount of resources (memory & threads) it uses to (0.8 * total memory) and (number of cores-1). It will override any `GOMEMLIMIT` values, however it will respect `GOMAXPROCS` values. | `boolean` | `false` | | `LOG_FORMAT` | Set the Weaviate logging format <br/><br/>Default: Outputs log data to json. e.g.: `{"action":"startup","level":"debug","msg":"finished initializing modules","time":"2023-04-12T05:07:43Z"}` <br/>`text`: Outputs log data to a string. e.g. `time="2023-04-12T04:54:23Z" level=debug msg="finished initializing modules" action=startup` | `string` | | | `LOG_LEVEL` | Sets the Weaviate logging level. Default: `info`<br/><br/>`panic`: Panic entries only. (new in `v1.24`) <br/>`fatal`: Fatal entries only. (new in `v1.24`) <br/> `error`: Error entries only. (new in `v1.24`) <br/>`warning`: Warning entries only. (new in `v1.24`) <br/>`info`: General operational entries. <br/> `debug`: Very verbose logging. <br/>`trace`: Even finer-grained informational events than `debug`. | `string` | | -| `MAXIMUM_ALLOWED_COLLECTIONS_COUNT` | Maximum allowed number of collections in a Weaviate node. A value of `-1` removes the limit. Default: `1000` <br/><br/>Instead of raising the collections count limit, consider [rethinking your architecture](../../starter-guides/managing-collections/collections-scaling-limits.mdx).<br/>Added in `v1.30`| `string - number` | `20` | +| `MAXIMUM_ALLOWED_COLLECTIONS_COUNT` | Maximum allowed number of collections in a Weaviate node. A value of `-1` removes the limit. Default: `1000` <br/><br/>Instead of raising the collections count limit, consider [rethinking your architecture](docs/weaviate/starter-guides/managing-collections/collections-scaling-limits.mdx).<br/>Added in `v1.30`| `string - number` | `20` | | `MEMORY_READONLY_PERCENTAGE` | If memory usage is higher than the given percentage all shards on the affected node will be marked as `READONLY`, meaning all future write requests will fail. (Default: `80`) | `string - number` | `75` | | `MEMORY_WARNING_PERCENTAGE` | If memory usage is higher than the given percentage a warning will be logged by all shards on the affected node's disk. (Default: `0` - i.e. no limit) | `string - number` | `85` | | `MODULES_CLIENT_TIMEOUT` | Timeout for requests to Weaviate modules. Default: `50s` | `string - duration` | `5s`, `10m`, `1h` | | `ORIGIN` | Set the http(s) origin for Weaviate | `string - HTTP origin` | `https://my-weaviate-deployment.com` | -| `PERSISTENCE_DATA_PATH` | Path to the Weaviate data store.<br/>[Note about file systems and performance](../../concepts/resources.md#file-system). | `string - file path` | `/var/lib/weaviate` <br/> Starting in v1.24, defaults to `./data`| -| `PERSISTENCE_HNSW_MAX_LOG_SIZE` | Maximum size of the HNSW [write-ahead-log](../../concepts/storage.md#hnsw-vector-index-storage). Increase this to improve log compaction efficiency, or decrease to reduce memory requirements. Default: 500MiB | `string` | `4GiB` (IEC units), `4GB` (SI units), `4000000000` (bytes) | +| `PERSISTENCE_DATA_PATH` | Path to the Weaviate data store.<br/>[Note about file systems and performance](docs/weaviate/concepts/resources.md#file-system). | `string - file path` | `/var/lib/weaviate` <br/> Starting in v1.24, defaults to `./data`| +| `PERSISTENCE_HNSW_MAX_LOG_SIZE` | Maximum size of the HNSW [write-ahead-log](docs/weaviate/concepts/storage.md#hnsw-vector-index-storage). Increase this to improve log compaction efficiency, or decrease to reduce memory requirements. Default: 500MiB | `string` | `4GiB` (IEC units), `4GB` (SI units), `4000000000` (bytes) | | `PERSISTENCE_LSM_ACCESS_STRATEGY` | Function used to access disk data in virtual memory. Default: `mmap` | `string` | `mmap` or `pread` | -| `PERSISTENCE_LSM_MAX_SEGMENT_SIZE` | Maximum size of a segment in the [LSM store](../../concepts/storage.md#object-and-inverted-index-store). Set this to limit disk usage spikes during compaction to ~2x the segment size. Default: no limit | `string` | `4GiB` (IEC units), `4GB` (SI units), `4000000000` (bytes) | -| `PROMETHEUS_MONITORING_ENABLED` | If set, Weaviate collects [metrics in a Prometheus-compatible format](/docs/weaviate/configuration/monitoring.md) | `boolean` | `false` | +| `PERSISTENCE_LSM_MAX_SEGMENT_SIZE` | Maximum size of a segment in the [LSM store](docs/weaviate/concepts/storage.md#object-and-inverted-index-store). Set this to limit disk usage spikes during compaction to ~2x the segment size. Default: no limit | `string` | `4GiB` (IEC units), `4GB` (SI units), `4000000000` (bytes) | +| `PROMETHEUS_MONITORING_ENABLED` | If set, Weaviate collects [metrics in a Prometheus-compatible format](docs/deploy/config-guides/monitoring.md) | `boolean` | `false` | | `PROMETHEUS_MONITORING_GROUP` | If set, Weaviate groups metrics for the same class across all shards. | `boolean` | `true` | | `QUERY_CROSS_REFERENCE_DEPTH_LIMIT` | Sets the maximum depth of cross-references to be resolved in a query. Defaults to 5. <br/>Added in `v1.24.25`, `v1.25.18`, `v1.26.5`. | `string - number` | `3` | | `QUERY_DEFAULTS_LIMIT` | Sets the default number of objects to be returned in a query. | `string - number` | `25` <br/> Starting in v1.24, defaults to `10`| | `QUERY_MAXIMUM_RESULTS` | Sets the maximum total number of objects that can be retrieved. | `string - number` | `10000` | | `QUERY_SLOW_LOG_ENABLED` | Log slow queries for debugging. Requires a restart to update. <br/> (New in 1.24.16, 1.25.3) | `boolean` | `False` | | `QUERY_SLOW_LOG_THRESHOLD` | Set a threshold time for slow query logging. Requires a restart to update. <br/> (New in 1.24.16, 1.25.3) | `string` | `2s` <br/> Values are times: `3h`, `2s`, `100ms` | -| `REINDEX_SET_TO_ROARINGSET_AT_STARTUP` | Allow Weaviate to perform a one-off re-indexing to [use Roaring Bitmaps](../../concepts/filtering.md#indexFilterable). <br/><br/>Available in versions `1.18` and higher. | `boolean` | `true` | +| `REINDEX_SET_TO_ROARINGSET_AT_STARTUP` | Allow Weaviate to perform a one-off re-indexing to [use Roaring Bitmaps](docs/weaviate/concepts/filtering.md#indexFilterable). <br/><br/>Available in versions `1.18` and higher. | `boolean` | `true` | | `TOKENIZER_CONCURRENCY_COUNT` | Limit the combined number of GSE and Kagome tokenizers running at the same time. Default: `GOMAXPROCS` | `string - number` | `NUMBER_OF_CPU_CORES` | | `TOMBSTONE_DELETION_CONCURRENCY` | The maximum number of cores to use for tombstone deletion. Set this to limit the number of cores used for cleanup. Default: Half of the available cores. (New in `v1.24.0`) | `string - int` | `4` | | `TOMBSTONE_DELETION_MAX_PER_CYCLE` | Maximum number of tombstones to delete per cleanup cycle. Set this to limit cleanup cycles, as they are resource-intensive. As an example, set a maximum of 10000000 (10M) for a cluster with 300 million-object shards. Default: none | `string - int` (New in `v1.24.15` / `v1.25.2`) | `10000000` | | `TOMBSTONE_DELETION_MIN_PER_CYCLE` | Minimum number of tombstones to delete per cleanup cycle. Set this to prevent triggering unnecessary cleanup cycles below a threshold. As an example, set a minimum of 1000000 (1M) for a cluster with 300 million-object shards. Default: 0 (New in `v1.24.15`, `v1.25.2`) | `string - int` | `100000` | -| `USE_GSE` | Enable the [`GSE` tokenizer](../../config-refs/schema/index.md#gse-and-trigram-tokenization-methods) for use. <br/> (The same as `ENABLE_TOKENIZER_GSE`. We recommend using `ENABLE_TOKENIZER_GSE` for consistency in naming with other optional tokenizers.) | `boolean` | `true` | +| `USE_GSE` | Enable the [`GSE` tokenizer](docs/weaviate/config-refs/schema/index.md#gse-and-trigram-tokenization-methods) for use. <br/> (The same as `ENABLE_TOKENIZER_GSE`. We recommend using `ENABLE_TOKENIZER_GSE` for consistency in naming with other optional tokenizers.) | `boolean` | `true` | | `USE_INVERTED_SEARCHABLE` | Store searchable properties using a more efficient in-disk format, designed for the BlockMax WAND algorithm. Set as `true` together with `USE_BLOCKMAX_WAND` to enable BlockMax WAND at query time. <br/><br/>Added in `v1.28` default: `false` <br/> From `v1.30` default: `true` <br/><Link to="/docs/weaviate/concepts/indexing/inverted-index#blockmax-wand-algorithm">Read more</Link> | `boolean` | `true` | | `USE_BLOCKMAX_WAND` | Use BlockMax WAND algorithm for BM25 and hybrid searches. Enable it together with `USE_INVERTED_SEARCHABLE` to get the performance benefits. <br/><br/>Added in `v1.28` default: `false` <br/> From `v1.30` default: `true` <br/><Link to="/docs/weaviate/concepts/indexing/inverted-index#blockmax-wand-algorithm">Read more</Link> | `boolean` | `true` | @@ -102,7 +102,7 @@ import APITable from '@site/src/components/APITable'; | `OFFLOAD_S3_CONCURRENCY` | The maximum number of parts that will be uploaded/downloaded in parallel during offloading operations (default: `25`) | `string - number` | `10` | | `OFFLOAD_TIMEOUT` | The request timeout value, in seconds (default: `120`) | `string - number` | `60` | | `TRANSFORMERS_INFERENCE_API` | The endpoint where to reach the transformers module if enabled | `string` | `http://t2v-transformers:8080` | -| `USE_GOOGLE_AUTH` | Automatically look for Google Cloud credentials, and generate Vertex AI access tokens for Weaviate to use as needed ([read more](../../model-providers/google/index.md)). (default: `false`) | `boolean` | `true` | +| `USE_GOOGLE_AUTH` | Automatically look for Google Cloud credentials, and generate Vertex AI access tokens for Weaviate to use as needed ([read more](docs/weaviate/model-providers/google/index.md)). (default: `false`) | `boolean` | `true` | | `USE_SENTENCE_TRANSFORMERS_VECTORIZER` | (EXPERIMENTAL) Use the `sentence-transformer` vectorizer instead of the default vectorizer (from the `transformers` library). Applies to custom images only. | `boolean` | `true` | | `CLIP_WAIT_FOR_STARTUP` | If `true`, Weaviate waits for the `multi2vec-clip` module to start up before starting (default: `true`). | `boolean` | `true` | | `NER_WAIT_FOR_STARTUP` | If `true`, Weaviate waits for the `ner-transformers` module to start up before starting (default: `true`). (Available from `v1.25.27`, `v1.26.12`, `v1.27.7`) | `boolean` | `true` | @@ -119,7 +119,7 @@ import APITable from '@site/src/components/APITable'; ## Authentication and authorization :::info Authentication & Authorization documentation -For more information on authentication and authorization, see the [Authentication](../../configuration/authentication.md) and [Authorization](../../configuration/authorization.md) pages. +For more information on authentication and authorization, see the [Authentication](docs/deploy/config-guides/authentication.md) and [Authorization](docs/deploy/config-guides/authorization.md) pages. ::: ```mdx-code-block @@ -132,7 +132,7 @@ For more information on authentication and authorization, see the [Authenticatio | `AUTHENTICATION_APIKEY_ALLOWED_KEYS` | Allowed API keys. <br/><br/> Each key corresponds to a specific user identity below. | `string - comma-separated list` | `jane-secret-key,ian-secret-key` | | `AUTHENTICATION_APIKEY_ENABLED` | Enable API key-based authentication | `boolean` | `false` | | `AUTHENTICATION_APIKEY_USERS` | API key-based identities. <br/><br/> Each identity corresponds to a specific key above. | `string - comma-separated list` | `jane@doe.com,ian-smith` | -| `AUTHENTICATION_DB_USERS_ENABLED` | Allow runtime [user management](../../configuration/rbac/manage-users.mdx). Default: `false` | `boolean` | `true` | +| `AUTHENTICATION_DB_USERS_ENABLED` | Allow runtime [user management](docs/weaviate/configuration/rbac/manage-users.mdx). Default: `false` | `boolean` | `true` | | `AUTHENTICATION_OIDC_CLIENT_ID` | OIDC Client ID | `string` | `my-client-id` | | `AUTHENTICATION_OIDC_ENABLED` | Enable OIDC-based authentication | `boolean` | `false` | | `AUTHENTICATION_OIDC_GROUPS_CLAIM` | OIDC Groups Claim | `string` | `groups` | @@ -174,9 +174,9 @@ For more information on authentication and authorization, see the [Authenticatio | `CLUSTER_HOSTNAME` | Hostname of a node. Always set this value if the default OS hostname might change over time. | `string` | `node1` | | `CLUSTER_JOIN` | The service name of the "founding" member node in a cluster setup | `string` | `weaviate-node-1:7100` | | `HNSW_STARTUP_WAIT_FOR_VECTOR_CACHE` | If `true`, vector cache prefill is synchronous when a node starts. The node reports ready to serve when the cache is hot. Defaults to `false`. Added in 1.24.20 and 1.25.5. | `boolean` | `false` | -| `COLLECTION_RETRIEVAL_STRATEGY`| Set collection definition retrieval behavior for a data request. <br/><br/> <ul><li>`LeaderOnly` (default): Always requests the definition from the leader node. </li><li>`LocalOnly`: Always use the local definition</li><li>`LeaderOnMismatch`: Requests the definition if outdated.</li></ul> ([Read more](../../concepts/replication-architecture/consistency.md#collection-definition-requests-in-queries)) (Added in `v1.27.10`, `v1.28.4`) | `string` | `LeaderOnly` | -| `RAFT_ENABLE_FQDN_RESOLVER` | If `true`, use DNS lookup instead of memberlist lookup for Raft. Added in `v1.25.15` and removed in `v1.30`. ([Read more](../../concepts/cluster.md#node-discovery)) | `boolean` | `true` | -| `RAFT_FQDN_RESOLVER_TLD` | The top-level domain to use for DNS lookup, in `[node-id].[tld]` format. Added in `v1.25.15` and removed in `v1.30`. ([Read more](../../concepts/cluster.md#node-discovery)) | `string` | `example.com` | +| `COLLECTION_RETRIEVAL_STRATEGY`| Set collection definition retrieval behavior for a data request. <br/><br/> <ul><li>`LeaderOnly` (default): Always requests the definition from the leader node. </li><li>`LocalOnly`: Always use the local definition</li><li>`LeaderOnMismatch`: Requests the definition if outdated.</li></ul> ([Read more](docs/weaviate/concepts/replication-architecture/consistency.md#collection-definition-requests-in-queries)) (Added in `v1.27.10`, `v1.28.4`) | `string` | `LeaderOnly` | +| `RAFT_ENABLE_FQDN_RESOLVER` | If `true`, use DNS lookup instead of memberlist lookup for Raft. Added in `v1.25.15` and removed in `v1.30`. ([Read more](docs/weaviate/concepts/cluster.md#node-discovery)) | `boolean` | `true` | +| `RAFT_FQDN_RESOLVER_TLD` | The top-level domain to use for DNS lookup, in `[node-id].[tld]` format. Added in `v1.25.15` and removed in `v1.30`. ([Read more](docs/weaviate/concepts/cluster.md#node-discovery)) | `string` | `example.com` | | `RAFT_BOOTSTRAP_EXPECT` | The number of voter notes at bootstrapping time | `string - number` | `1` | | `RAFT_BOOTSTRAP_TIMEOUT` | The time in seconds to wait for the cluster to bootstrap | `string - number` | `90` | | `RAFT_GRPC_MESSAGE_MAX_SIZE` | The maximum internal raft gRPC message size in bytes. Defaults to 1073741824 | `string - number` | `1073741824` | diff --git a/docs/deploy/config-guides/env-vars/runtime-config.md b/docs/deploy/config-guides/env-vars/runtime-config.md index 57e3ffcc..de1bb940 100644 --- a/docs/deploy/config-guides/env-vars/runtime-config.md +++ b/docs/deploy/config-guides/env-vars/runtime-config.md @@ -73,7 +73,7 @@ If Weaviate attempts to start with an invalid runtime configuration file (e.g., When modifying the runtime configuration file for a running Weaviate instance, if the new configuration is invalid, Weaviate continues using the last valid configuration that is stored in memory. Error logs and metrics will indicate when configuration loading fails. -Weaviate provides the following [metrics to help you monitor](../../configuration/monitoring.md) runtime configuration status: +Weaviate provides the following [metrics to help you monitor](../monitoring.md) runtime configuration status: | Metric Name | Description | | ------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- | @@ -85,3 +85,9 @@ Weaviate provides the following [metrics to help you monitor](../../configuratio It's important to set up proper alerting based on these metrics and logs to quickly identify configuration issues. If any Weaviate process is failing to load its runtime configuration, it won't be able to start until the configuration is fixed. ::: + +## Questions and feedback + +import DocsFeedback from '/_includes/docs-feedback.mdx'; + +<DocsFeedback/> \ No newline at end of file diff --git a/docs/deploy/config-guides/horizontal-scaling.mdx b/docs/deploy/config-guides/horizontal-scaling.mdx index d7356a9c..9595f7a7 100644 --- a/docs/deploy/config-guides/horizontal-scaling.mdx +++ b/docs/deploy/config-guides/horizontal-scaling.mdx @@ -304,7 +304,7 @@ import RaftRFChangeWarning from '/_includes/1-25-replication-factor.mdx'; <RaftRFChangeWarning/> -Configure replication settings, such as [async replication](/docs/weaviate/configuration/replication#async-replication-settings) and [deletion resolution strategy](../concepts/replication-architecture/consistency.md#deletion-resolution-strategies). +Configure replication settings, such as [async replication](/docs/weaviate/configuration/replication#async-replication-settings) and [deletion resolution strategy](docs/weaviate/concepts/replication-architecture/consistency.md#deletion-resolution-strategies). <Tabs groupId="languages"> <TabItem value="py" label="Python Client v4"> diff --git a/docs/deploy/config-guides/modules.md b/docs/deploy/config-guides/modules.md index 25d48bda..49f737f3 100644 --- a/docs/deploy/config-guides/modules.md +++ b/docs/deploy/config-guides/modules.md @@ -14,7 +14,7 @@ At the instance (i.e. Weaviate cluster) level, you can: - Configure the default vectorizer module - Configure module-specific variables (e.g. API keys), where applicable -This can be done by setting the appropriate [environment variables](/docs/weaviate/config-refs/env-vars.md) as shown below. +This can be done by setting the appropriate [environment variables](docs/deploy/config-guides/env-vars/index.md) as shown below. :::tip What about WCD? Weaviate Cloud (WCD) instances come with modules pre-configured. See [this page](/docs/cloud/manage-clusters/status#enabled-modules) for details. @@ -75,7 +75,7 @@ Note that enabling multiple vectorizer (e.g. `text2vec`, `multi2vec`) modules wi You may need to specify additional environment variables to configure each module where applicable. For example, the `backup-s3` module requires the backup S3 bucket to be set via `BACKUP_S3_BUCKET`, and the `text2vec-contextionary` module requires the inference API location via `TRANSFORMERS_INFERENCE_API`. -Refer to the individual [module documentation](../modules/index.md) for more details. +Refer to the individual [module documentation](docs/weaviate/modules/index.md) for more details. ## Vectorizer modules diff --git a/docs/deploy/config-guides/persistence.md b/docs/deploy/config-guides/persistence.md index 5649bf34..a1e023c3 100644 --- a/docs/deploy/config-guides/persistence.md +++ b/docs/deploy/config-guides/persistence.md @@ -103,7 +103,7 @@ In general, `mmap` may be a preferred option with memory management benefits. Ho ## Related pages -- [Configuration: Backups](docs/weaviate/configuration/backups.md) +- [Configuration: Backups](docs/deploy/config-guides/backups.md) ## Questions and feedback diff --git a/docs/deploy/config-guides/replication.md b/docs/deploy/config-guides/replication.md index 9d09615d..2d6ba1d6 100644 --- a/docs/deploy/config-guides/replication.md +++ b/docs/deploy/config-guides/replication.md @@ -43,12 +43,12 @@ import ReplicationConfigWithAsyncRepair from '/\_includes/code/configuration/rep ### Configure async replication settings {#async-replication-settings} :::info Added in `v1.29` -The [environment variables](/docs/weaviate/config-refs/env-vars#async-replication) for configuring async replication (`ASYNC_*`) have been introduced in `v1.29`. +The [environment variables](/docs/deploy/config-guides/env-vars/index.md#async-replication) for configuring async replication (`ASYNC_*`) have been introduced in `v1.29`. ::: Async replication helps achieve consistency for data replicated across multiple nodes. -Update the following [environment variables](/docs/weaviate/config-refs/env-vars#async-replication) to configure async replication for your particular use case. +Update the following [environment variables](/docs/deploy/config-guides/env-vars/index.md#async-replication) to configure async replication for your particular use case. #### Logging diff --git a/docs/deploy/faqs/troubleshooting.md b/docs/deploy/faqs/troubleshooting.md index 8a725b8d..239a691a 100644 --- a/docs/deploy/faqs/troubleshooting.md +++ b/docs/deploy/faqs/troubleshooting.md @@ -24,7 +24,7 @@ As a first step, you'll want to examine your cluster's logs to identify the prob #### Resolving the issue To solve this mystery, you'll need to increase the available disk space for your nodes. Once the disk space is increased, then you'll need to manually mark the affected shards or collections as writeable again. -You can also set the [`MEMORY_WARNING_PERCENTAGE`](/weaviate/config-refs/env-vars/index.md#MEMORY_WARNING_PERCENTAGE) environment variable to issue warnings when the memory limit is near. +You can also set the [`MEMORY_WARNING_PERCENTAGE`](docs/deploy/config-guides/env-vars/index.md#MEMORY_WARNING_PERCENTAGE) environment variable to issue warnings when the memory limit is near. </details> ### You're receiving inconsistent query results. diff --git a/docs/deploy/installation-guides/docker-installation.md b/docs/deploy/installation-guides/docker-installation.md index 7191ec9f..498b9158 100644 --- a/docs/deploy/installation-guides/docker-installation.md +++ b/docs/deploy/installation-guides/docker-installation.md @@ -120,11 +120,11 @@ volumes: ... ``` -This setup enables API-key based [authentication](/docs/weaviate/configuration/authentication.md) and role-based access control [authorization](/docs/weaviate/configuration/authorization.md). +This setup enables API-key based [authentication](docs/deploy/config-guides/authentication.md) and role-based access control [authorization](docs/deploy/config-guides/authorization.md). It defines the users `user-a` and `user-b` and corresponding keys `user-a-key` and `user-b-key` which serve as authentication credentials for connecting to your Weaviate instance. -The user `user-a` is granted admin access rights using the **Role-based access control (RBAC)** method. A custom role can be assigned to the user `user-b` by following the [authorization and RBAC guide](/docs/weaviate/configuration/authorization.md). +The user `user-a` is granted admin access rights using the **Role-based access control (RBAC)** method. A custom role can be assigned to the user `user-b` by following the [authorization and RBAC guide](docs/deploy/config-guides/authorization.md). </TabItem> </Tabs> @@ -150,7 +150,7 @@ import DocsConfigGen from '@site/src/components/DockerConfigGen'; You can use environment variables to control your Weaviate setup, authentication and authorization, module settings, and data storage settings. :::info List of environment variables -A comprehensive of list environment variables [can be found on this page](/docs/weaviate/config-refs/env-vars.md). +A comprehensive of list environment variables [can be found on this page](/docs/deploy/config-guides/env-vars/index.md). ::: ## Example configurations diff --git a/docs/deploy/installation-guides/k8s-installation.md b/docs/deploy/installation-guides/k8s-installation.md index c9b43685..45ebbca7 100644 --- a/docs/deploy/installation-guides/k8s-installation.md +++ b/docs/deploy/installation-guides/k8s-installation.md @@ -122,8 +122,8 @@ In this example, the key `readonly-key` will authenticate a user as the `readonl OIDC authentication is also enabled, with WCD as the token issuer/identity provider. Thus, users with WCD accounts could be authenticated. This configuration sets `someuser@weaviate.io` as an admin user, so if `someuser@weaviate.io` were to authenticate, they will be given full (read and write) privileges. For further, general documentation on authentication and authorization configuration, see: -- [Authentication](../configuration/authentication.md) -- [Authorization](../configuration/authorization.md) +- [Authentication](../config-guides/authentication.md) +- [Authorization](../config-guides/authorization.md) #### Run as non-root user @@ -165,7 +165,7 @@ The above command (`helm upgrade...`) is idempotent. In other words, you can run To upgrade to `1.25` or higher from a pre-`1.25` version, you must delete the deployed `StatefulSet`, update the helm chart to version `17.0.0` or higher, and re-deploy Weaviate. -See the [1.25 migration guide for Kubernetes](../more-resources/migration/weaviate-1-25.md) for more details. +See the [1.25 migration guide for Kubernetes](../migration/weaviate-1-25.md) for more details. ## Additional Configuration Help diff --git a/docs/deploy/production/Kubernetes/k8s-poc.md b/docs/deploy/production/Kubernetes/k8s-poc.md index fabb9cfd..ebe68cfa 100644 --- a/docs/deploy/production/Kubernetes/k8s-poc.md +++ b/docs/deploy/production/Kubernetes/k8s-poc.md @@ -79,7 +79,7 @@ Check out the Academy course [“Run Weaviate on Kubernetes”](https://weaviate - readonly_user2 - api-key-user-readOnly ``` -[Admin List Configuration](/docs/weaviate/configuration/authorization.md#admin-list-kubernetes) +[Admin List Configuration](docs/deploy/config-guides/authorization.md#admin-list-kubernetes) </details> diff --git a/docs/weaviate/api/grpc.md b/docs/weaviate/api/grpc.md index 9f0d48fb..40f6dc4e 100644 --- a/docs/weaviate/api/grpc.md +++ b/docs/weaviate/api/grpc.md @@ -29,7 +29,7 @@ This directory contains the following files: As an example, the snippet below maps `50051` as the host port so that it can be accessed from outside the container. The `50051` port is mapped to the `50051` port inside the container for gRPC calls, and the `8080` port is mapped to the `8080` port inside the container for REST calls. :::info -We suggest using the default port `50051` for gRPC calls. It can be modified through the `GRPC_PORT` [environment variable](../config-refs/env-vars/index.md). +We suggest using the default port `50051` for gRPC calls. It can be modified through the `GRPC_PORT` [environment variable](docs/deploy/config-guides/env-vars/index.md). Note that [Weaviate Cloud](https://console.weaviate.cloud/) uses port `443` for gRPC. ::: diff --git a/docs/weaviate/concepts/cluster.md b/docs/weaviate/concepts/cluster.md index b10b703b..db2886bc 100644 --- a/docs/weaviate/concepts/cluster.md +++ b/docs/weaviate/concepts/cluster.md @@ -83,7 +83,7 @@ This was an experimental feature. Use with caution. ::: -There can be a situation where IP-address based node discovery is not optimal. In such cases, you can set `RAFT_ENABLE_FQDN_RESOLVER` and `RAFT_FQDN_RESOLVER_TLD` [environment variables](../config-refs/env-vars/index.md#multi-node-instances) to enable fully qualified domain name (FQDN) based node discovery. +There can be a situation where IP-address based node discovery is not optimal. In such cases, you can set `RAFT_ENABLE_FQDN_RESOLVER` and `RAFT_FQDN_RESOLVER_TLD` [environment variables](docs/deploy/config-guides/env-vars/index.md#multi-node-instances) to enable fully qualified domain name (FQDN) based node discovery. If this feature is enabled, Weaviate uses the FQDN resolver to resolve the node name to the node IP address for metadata (e.g., Raft) communication. diff --git a/docs/weaviate/concepts/filtering.md b/docs/weaviate/concepts/filtering.md index 588d74d0..1920dff6 100644 --- a/docs/weaviate/concepts/filtering.md +++ b/docs/weaviate/concepts/filtering.md @@ -82,7 +82,7 @@ A roaring bitmap index for `text` properties is available from `1.19` and up, an If you are using Weaviate version `< 1.18.0`, you can take advantage of roaring bitmaps by migrating to `1.18.0` or higher, and going through a one-time process to create the new index. Once your Weaviate instance creates the Roaring Bitmap index, it will operate in the background to speed up your work. -This behavior is set through the <code>REINDEX<wbr />_SET_TO<wbr />_ROARINGSET<wbr />_AT_STARTUP</code> [environment variable](../config-refs/env-vars/index.md). If you do not wish for reindexing to occur, you can set this to `false` prior to upgrading. +This behavior is set through the <code>REINDEX<wbr />_SET_TO<wbr />_ROARINGSET<wbr />_AT_STARTUP</code> [environment variable](docs/deploy/config-guides/env-vars/index.md). If you do not wish for reindexing to occur, you can set this to `false` prior to upgrading. :::info Read more To learn more about Weaviate's roaring bitmaps implementation, see the [in-line documentation](https://pkg.go.dev/github.com/weaviate/weaviate/adapters/repos/db/lsmkv/roaringset). diff --git a/docs/weaviate/concepts/replication-architecture/cluster-architecture.md b/docs/weaviate/concepts/replication-architecture/cluster-architecture.md index 27f7ed91..cc6c17f7 100644 --- a/docs/weaviate/concepts/replication-architecture/cluster-architecture.md +++ b/docs/weaviate/concepts/replication-architecture/cluster-architecture.md @@ -25,7 +25,7 @@ This was an experimental feature. Use with caution. ::: -There can be a situation where IP-address based node discovery is not optimal. In such cases, you can set `RAFT_ENABLE_FQDN_RESOLVER` and `RAFT_FQDN_RESOLVER_TLD` [environment variables](../../config-refs/env-vars/index.md#multi-node-instances) to enable [fully qualified domain name (FQDN)](https://en.wikipedia.org/wiki/Fully_qualified_domain_name) based node discovery. +There can be a situation where IP-address based node discovery is not optimal. In such cases, you can set `RAFT_ENABLE_FQDN_RESOLVER` and `RAFT_FQDN_RESOLVER_TLD` [environment variables](docs/deploy/config-guides/env-vars/index.md#multi-node-instances) to enable [fully qualified domain name (FQDN)](https://en.wikipedia.org/wiki/Fully_qualified_domain_name) based node discovery. If this feature is enabled, Weaviate uses the FQDN resolver to resolve the node name to the node IP address for metadata (e.g., Raft) communication. diff --git a/docs/weaviate/concepts/replication-architecture/consistency.md b/docs/weaviate/concepts/replication-architecture/consistency.md index 8f20f99c..fe7f4666 100644 --- a/docs/weaviate/concepts/replication-architecture/consistency.md +++ b/docs/weaviate/concepts/replication-architecture/consistency.md @@ -59,7 +59,7 @@ A clean (without fails) execution has two phases: Some queries require the collection definition. Prior to the introduction of this feature, every such query led to the local (requesting) node to fetch the collection definition from the leader node. This meant that the definition was strongly consistent, but it could lead to additional traffic and load. -Where available, the `COLLECTION_RETRIEVAL_STRATEGY` [environment variable](../../config-refs/env-vars/index.md#multi-node-instances) can be set to `LeaderOnly`, `LocalOnly`, or `LeaderOnMismatch`. +Where available, the `COLLECTION_RETRIEVAL_STRATEGY` [environment variable](docs/deploy/config-guides/env-vars/index.md#multi-node-instances) can be set to `LeaderOnly`, `LocalOnly`, or `LeaderOnMismatch`. - `LeaderOnly` (default): Always requests the definition from the leader node. This is the most consistent behavior but can lead to higher intra-cluster traffic. - `LocalOnly`: Always use the local definition; leading to eventually consistent behavior while reducing intra-cluster traffic. diff --git a/docs/weaviate/concepts/resources.md b/docs/weaviate/concepts/resources.md index 0ef5730e..768e0069 100644 --- a/docs/weaviate/concepts/resources.md +++ b/docs/weaviate/concepts/resources.md @@ -10,7 +10,7 @@ Weaviate scales well for large projects. Smaller projects, less than 1M objects, ## Limit available resources -You can set [environment variables](../config-refs/env-vars/index.md) to manage Weaviate's resource usage, as to prevent Weaviate from using all available resources. The following environment variables are available: +You can set [environment variables](docs/deploy/config-guides/env-vars/index.md) to manage Weaviate's resource usage, as to prevent Weaviate from using all available resources. The following environment variables are available: - `LIMIT_RESOURCES`: When set to true, Weaviate automatically limits its resource usage. It sets memory usage to 80% of the total memory and uses all but one CPU core. It overrides any `GOMEMLIMIT` values but respects `GOMAXPROCS` settings. @@ -96,7 +96,7 @@ The memory calculation that includes `maxConnections` describes the system state In rare situations - typically on large machines with very high import speeds - Weaviate can allocate memory faster than the garbage collector can free it. When this happens, the system kernel can trigger an `out of memory kill (OOM-Kill)`. This is a known issue that Weaviate is actively working on. ### Data import -To avoid out-of-memory issues during imports, set `LIMIT_RESOURCES` to `True` or configure the `GOMEMLIMIT` environment variable. For details, see [Environment variables](../config-refs/env-vars/index.md). +To avoid out-of-memory issues during imports, set `LIMIT_RESOURCES` to `True` or configure the `GOMEMLIMIT` environment variable. For details, see [Environment variables](docs/deploy/config-guides/env-vars/index.md). ## Strategies to reduce memory usage @@ -144,7 +144,7 @@ Weaviate is optimized to work with Solid-State Disks (SSDs). However, spinning h ## File system -For optimal performance and reliability, avoid using `NFS` or similar file systems for the Weaviate persistent volume ([`PERSISTENCE_DATA_PATH`](../config-refs/env-vars/index.md)). +For optimal performance and reliability, avoid using `NFS` or similar file systems for the Weaviate persistent volume ([`PERSISTENCE_DATA_PATH`](docs/deploy/config-guides/env-vars/index.md)). Instead, use file systems like `Ext4` or `XFS` in combination with SAN storage (e.g. `EBS`) to ensure the best performance. diff --git a/docs/weaviate/concepts/search/vector-search.md b/docs/weaviate/concepts/search/vector-search.md index 20583b35..61bd542d 100644 --- a/docs/weaviate/concepts/search/vector-search.md +++ b/docs/weaviate/concepts/search/vector-search.md @@ -267,7 +267,7 @@ If you search a vector database containing vectors for colors "Red", "Crimson" a As a result, Weaviate provides multiple ways to limit the search results: - **Limit**: Specify the maximum number of results to return. - - If not provided, defaults to system-defined [`QUERY_DEFAULTS_LIMIT`](../../config-refs/env-vars/index.md#general) of 10. + - If not provided, defaults to system-defined [`QUERY_DEFAULTS_LIMIT`](docs/deploy/config-guides/env-vars/index.md#general) of 10. - **AutoCut**: Limit results based on discontinuities in result metrics such as vector distance or search score. - **Threshold**: Specify a minimum similarity score (e.g. maximum cosine distance) for the results. - **Apply filters**: Use [filters](../filtering.md) to exclude results based on other criteria, such as metadata or properties. diff --git a/docs/weaviate/configuration/authentication.md b/docs/weaviate/configuration/authentication.md index 0777f586..9f8615a4 100644 --- a/docs/weaviate/configuration/authentication.md +++ b/docs/weaviate/configuration/authentication.md @@ -219,7 +219,7 @@ curl https://localhost:8080/v1/objects -H "Authorization: Bearer ${WEAVIATE_API_ ## Further resources - [Configuration: Authorization and RBAC](./authorization.md) -- [References: Environment variables / Authentication and Authorization](../config-refs/env-vars/index.md#authentication-and-authorization) +- [References: Environment variables / Authentication and Authorization](docs/deploy/config-guides/env-vars/index.md#authentication-and-authorization) ## Questions and feedback diff --git a/docs/weaviate/configuration/index.mdx b/docs/weaviate/configuration/index.mdx index 31895ec6..fbb69e07 100644 --- a/docs/weaviate/configuration/index.mdx +++ b/docs/weaviate/configuration/index.mdx @@ -50,7 +50,7 @@ export const configOpsData = [ title: "Authorization", description: "Understand Weaviate's authorization schemes (RBAC, Admin List) to control user permissions.", - link: "/docs/weaviate/configuration/authorization", + link: "/docs/deploy/config-guides/authorization.md", icon: "fas fa-shield-alt", }, { diff --git a/docs/weaviate/configuration/modules.md b/docs/weaviate/configuration/modules.md index 3e4ec23d..f007c1ce 100644 --- a/docs/weaviate/configuration/modules.md +++ b/docs/weaviate/configuration/modules.md @@ -15,7 +15,7 @@ At the instance (i.e. Weaviate cluster) level, you can: - Configure the default vectorizer module - Configure module-specific variables (e.g. API keys), where applicable -This can be done by setting the appropriate [environment variables](../config-refs/env-vars/index.md) as shown below. +This can be done by setting the appropriate [environment variables](docs/deploy/config-guides/env-vars/index.md) as shown below. :::tip What about WCD? Weaviate Cloud (WCD) instances come with modules pre-configured. See [this page](/docs/cloud/manage-clusters/status#enabled-modules) for details. diff --git a/docs/weaviate/configuration/monitoring.md b/docs/weaviate/configuration/monitoring.md index f1cf0229..1c561fb7 100644 --- a/docs/weaviate/configuration/monitoring.md +++ b/docs/weaviate/configuration/monitoring.md @@ -55,7 +55,7 @@ command. In this setup the following components are used: ### Multi-tenancy -When using multi-tenancy, we suggest setting the `PROMETHEUS_MONITORING_GROUP` [environment variable](../config-refs/env-vars/index.md) as `true` so that data across all tenants are grouped together for monitoring. +When using multi-tenancy, we suggest setting the `PROMETHEUS_MONITORING_GROUP` [environment variable](docs/deploy/config-guides/env-vars/index.md) as `true` so that data across all tenants are grouped together for monitoring. ## Obtainable Metrics diff --git a/docs/weaviate/configuration/rbac/index.mdx b/docs/weaviate/configuration/rbac/index.mdx index b953360e..4ee13f1d 100644 --- a/docs/weaviate/configuration/rbac/index.mdx +++ b/docs/weaviate/configuration/rbac/index.mdx @@ -12,7 +12,7 @@ import SkipLink from '/src/components/SkipValidationLink' Role-based access control (RBAC) is generally available in Weaviate from version `v1.29`. ::: -Weaviate provides differentiated access through [authorization](/docs/weaviate/configuration/authorization) levels based on the [authenticated](/docs/weaviate/configuration/authentication) user identity. +Weaviate provides differentiated access through [authorization](docs/deploy/config-guides/authorization.md) levels based on the [authenticated](docs/deploy/config-guides/authentication.md) user identity. If **role-based access control (RBAC)** is enabled, access can be further restricted based on the roles of users. The diagram below illustrates the RBAC model in Weaviate, where access is governed by defining roles and assigning them specific permissions. These permissions determine which actions users can perform on designated resource types. @@ -100,7 +100,7 @@ Weaviate comes with a set of predefined roles. These roles are: - `root`: The root role has **full access** to all resources in Weaviate. - `viewer`: The viewer role has **read-only access** to all resources in Weaviate. -The `root` role can be assigned to a user through the Weaviate configuration file using the [`AUTHORIZATION_RBAC_ROOT_USERS`](/docs/weaviate/config-refs/env-vars#rbac-authorization) environment variable. A predefined role cannot be modified. The user can, however, be assigned additional roles through the Weaviate API. +The `root` role can be assigned to a user through the Weaviate configuration file using the [`AUTHORIZATION_RBAC_ROOT_USERS`](docs/deploy/config-guides/env-vars/index.md#rbac-authorization) environment variable. A predefined role cannot be modified. The user can, however, be assigned additional roles through the Weaviate API. All roles can also be assigned through the Weaviate API, including the predefined role. The predefined roles cannot be modified, but they can be assigned to or revoked from users. @@ -354,7 +354,7 @@ The [user management](./manage-users.mdx) API can be used to create, delete and ## Further resources -- [RBAC: Configuration](./configuration.md) +- [RBAC: Configuration](docs/deploy/config-guides/configuring-rbac.md) - [RBAC: Manage roles](./manage-roles.mdx) - [RBAC: Manage users](./manage-users.mdx) - [RBAC: Tutorial](../../tutorials/rbac.mdx) diff --git a/docs/weaviate/configuration/replication.md b/docs/weaviate/configuration/replication.md index 6e6c514f..ea3d13cc 100644 --- a/docs/weaviate/configuration/replication.md +++ b/docs/weaviate/configuration/replication.md @@ -55,12 +55,12 @@ import ReplicationConfigWithAsyncRepair from '/\_includes/code/configuration/rep ### Configure async replication settings {#async-replication-settings} :::info Added in `v1.29` -The [environment variables](/docs/weaviate/config-refs/env-vars#async-replication) for configuring async replication (`ASYNC_*`) have been introduced in `v1.29`. +The [environment variables](docs/deploy/config-guides/env-vars/index.md#async-replication) for configuring async replication (`ASYNC_*`) have been introduced in `v1.29`. ::: Async replication helps achieve consistency for data replicated across multiple nodes. -Update the following [environment variables](/docs/weaviate/config-refs/env-vars#async-replication) to configure async replication for your particular use case. +Update the following [environment variables](docs/deploy/config-guides/env-vars/index.md#async-replication) to configure async replication for your particular use case. #### Logging diff --git a/docs/weaviate/installation/docker-compose.md b/docs/weaviate/installation/docker-compose.md index f0df6de4..5aeab46e 100644 --- a/docs/weaviate/installation/docker-compose.md +++ b/docs/weaviate/installation/docker-compose.md @@ -121,11 +121,11 @@ volumes: ... ``` -This setup enables API-key based [authentication](../configuration/authentication.md) and role-based access control [authorization](../configuration/authorization.md). +This setup enables API-key based [authentication](docs/deploy/config-guides/authentication.md) and role-based access control [authorization](docs/deploy/config-guides/authorization.md). It defines the users `user-a` and `user-b` and corresponding keys `user-a-key` and `user-b-key` which serve as authentication credentials for connecting to your Weaviate instance. -The user `user-a` is granted admin access rights using the **Role-based access control (RBAC)** method. A custom role can be assigned to the user `user-b` by following the [authorization and RBAC guide](../configuration/authorization.md). +The user `user-a` is granted admin access rights using the **Role-based access control (RBAC)** method. A custom role can be assigned to the user `user-b` by following the [authorization and RBAC guide](docs/deploy/config-guides/authorization.md). </TabItem> </Tabs> @@ -151,7 +151,7 @@ import DocsConfigGen from '@site/src/components/DockerConfigGen'; You can use environment variables to control your Weaviate setup, authentication and authorization, module settings, and data storage settings. :::info List of environment variables -A comprehensive of list environment variables [can be found on this page](../config-refs/env-vars/index.md). +A comprehensive of list environment variables [can be found on this page](docs/deploy/config-guides/env-vars/index.md). ::: ## Example configurations diff --git a/docs/weaviate/installation/kubernetes.md b/docs/weaviate/installation/kubernetes.md index 46269b75..f9d0105a 100644 --- a/docs/weaviate/installation/kubernetes.md +++ b/docs/weaviate/installation/kubernetes.md @@ -125,8 +125,8 @@ In this example, the key `readonly-key` will authenticate a user as the `readonl OIDC authentication is also enabled, with WCD as the token issuer/identity provider. Thus, users with WCD accounts could be authenticated. This configuration sets `someuser@weaviate.io` as an admin user, so if `someuser@weaviate.io` were to authenticate, they will be given full (read and write) privileges. For further, general documentation on authentication and authorization configuration, see: -- [Authentication](../configuration/authentication.md) -- [Authorization](../configuration/authorization.md) +- [Authentication](docs/deploy/config-guides/authentication.md) +- [Authorization](docs/deploy/config-guides/authorization.md) #### Run as non-root user diff --git a/docs/weaviate/manage-collections/vector-config.mdx b/docs/weaviate/manage-collections/vector-config.mdx index 620fb0e0..874aa350 100644 --- a/docs/weaviate/manage-collections/vector-config.mdx +++ b/docs/weaviate/manage-collections/vector-config.mdx @@ -23,7 +23,7 @@ Specify a `vectorizer` for a collection. <details> <summary>Additional information</summary> -Collection level settings override default values and general configuration parameters such as [environment variables](../config-refs/env-vars/index.md). +Collection level settings override default values and general configuration parameters such as [environment variables](docs/deploy/config-guides/env-vars/index.md). - [Available model integrations](../model-providers/index.md) - [Vectorizer configuration references](/docs/weaviate/config-refs/schema#vectorizer) diff --git a/docs/weaviate/manage-objects/delete.mdx b/docs/weaviate/manage-objects/delete.mdx index f70591aa..8d83680e 100644 --- a/docs/weaviate/manage-objects/delete.mdx +++ b/docs/weaviate/manage-objects/delete.mdx @@ -187,7 +187,7 @@ To delete objects that match a set of criteria, specify the collection and a [`w Additional information </summary> -- There is a configurable [maximum limit (QUERY_MAXIMUM_RESULTS)](../config-refs/env-vars/index.md#general) on the number of objects that can be deleted in a single query (default 10,000). To delete more objects than the limit, re-run the query. +- There is a configurable [maximum limit (QUERY_MAXIMUM_RESULTS)](docs/deploy/config-guides/env-vars/index.md#general) on the number of objects that can be deleted in a single query (default 10,000). To delete more objects than the limit, re-run the query. </details> @@ -296,7 +296,7 @@ There is an upper limit (`QUERY_MAXIMUM_RESULTS`) to how many objects can be del Objects are deleted in the same order that they would be fetched, by order of UUID. To delete more objects than the limit, run the same query multiple times until no objects are matched anymore. -The default `QUERY_MAXIMUM_RESULTS` value is 10,000. This may be configurable, e.g. in [the environment variables](../config-refs/env-vars/index.md). +The default `QUERY_MAXIMUM_RESULTS` value is 10,000. This may be configurable, e.g. in [the environment variables](docs/deploy/config-guides/env-vars/index.md). </details> diff --git a/docs/weaviate/model-providers/google/_includes/use_google_auth_instructions.mdx b/docs/weaviate/model-providers/google/_includes/use_google_auth_instructions.mdx index 3826f225..cdca2caf 100644 --- a/docs/weaviate/model-providers/google/_includes/use_google_auth_instructions.mdx +++ b/docs/weaviate/model-providers/google/_includes/use_google_auth_instructions.mdx @@ -10,7 +10,7 @@ You can save your Google Vertex AI credentials and have Weaviate generate the ne To do so: -- Set `USE_GOOGLE_AUTH` [environment variable](/docs/weaviate/config-refs/env-vars#module-specific) to `true`. +- Set `USE_GOOGLE_AUTH` [environment variable](docs/deploy/config-guides/env-vars/index.md#module-specific) to `true`. - Have the credentials available in one of the following locations. Once appropriate credentials are found, Weaviate uses them to generate an access token and authenticates itself against Vertex AI. Upon token expiry, Weaviate generates a replacement access token. diff --git a/docs/weaviate/more-resources/faq.md b/docs/weaviate/more-resources/faq.md index 1009c998..c5d17f75 100644 --- a/docs/weaviate/more-resources/faq.md +++ b/docs/weaviate/more-resources/faq.md @@ -473,7 +473,7 @@ More concretely: If you had to pick between a machine that has 16 GB of RAM and <details> <summary>Answer</summary> -You can do this by sending a `SIGQUIT` signal to the process. This will print a stack trace to the console. The logging level and debugging variables can be set with `LOG_LEVEL` and `DEBUG` [environment variables](../config-refs/env-vars/index.md). +You can do this by sending a `SIGQUIT` signal to the process. This will print a stack trace to the console. The logging level and debugging variables can be set with `LOG_LEVEL` and `DEBUG` [environment variables](docs/deploy/config-guides/env-vars/index.md). Read more on SIGQUIT [here](https://en.wikipedia.org/wiki/Signal_(IPC)#SIGQUIT) and this [StackOverflow answer](https://stackoverflow.com/questions/19094099/how-to-dump-goroutine-stacktraces/35290196#35290196). diff --git a/docs/weaviate/starter-guides/managing-collections/collections-scaling-limits.mdx b/docs/weaviate/starter-guides/managing-collections/collections-scaling-limits.mdx index 1fbd0a87..2f48843c 100644 --- a/docs/weaviate/starter-guides/managing-collections/collections-scaling-limits.mdx +++ b/docs/weaviate/starter-guides/managing-collections/collections-scaling-limits.mdx @@ -11,7 +11,7 @@ image: og/docs/more-resources.jpg :::caution Have you hit the collections count limit? If you see an error that the collection count limit has been reached, it means you **can't create any more collections**. This limit aims to ensure Weaviate remains performant. If your instance already exceeds the limit, Weaviate will not allow the creation of any new collections. Existing collections will not be deleted.<br /><br /> -**Instead of simply raising the limit, consider rethinking your architecture**. If you really need to change the limit, use the [`MAXIMUM_ALLOWED_COLLECTIONS_COUNT`](../../config-refs/env-vars/index.md) environment variable. +**Instead of simply raising the limit, consider rethinking your architecture**. If you really need to change the limit, use the [`MAXIMUM_ALLOWED_COLLECTIONS_COUNT`](docs/deploy/config-guides/env-vars/index.md) environment variable. ::: This guide offers an overview of the available architectural choices of using **multi-tenancy** or defining a **dedicated collection** for each subset of data. @@ -139,7 +139,7 @@ Use multi-tenancy when you need to support a large number of tenants and priorit #### Challenges -- **Access control complexity**: [Fine-grained access control](../../configuration/authorization.md) must be implemented to ensure data isolation between tenants. +- **Access control complexity**: [Fine-grained access control](docs/deploy/config-guides/authorization.md) must be implemented to ensure data isolation between tenants. - **Uniform collection definition**: All tenants must share the same collection schema and configuration. :::tip Reduce storage costs diff --git a/docs/weaviate/tutorials/import.md b/docs/weaviate/tutorials/import.md index 172cd002..5af21041 100644 --- a/docs/weaviate/tutorials/import.md +++ b/docs/weaviate/tutorials/import.md @@ -132,7 +132,7 @@ When importing large datasets, it may be worth planning out an optimized import 1. To use multiple CPUs efficiently, enable sharding when you import data. For the fastest imports, enable sharding even on a single node. 1. Use [parallelization](https://www.computerhope.com/jargon/p/parallelization.htm); if the CPUs are not maxed out, just add another import process. 1. Use `htop` when importing to see if all CPUs are maxed out. -1. To avoid out-of-memory issues during imports, set `LIMIT_RESOURCES` to `True` or configure the `GOMEMLIMIT` environment variable. For details, see [Environment variables](../config-refs/env-vars/index.md). +1. To avoid out-of-memory issues during imports, set `LIMIT_RESOURCES` to `True` or configure the `GOMEMLIMIT` environment variable. For details, see [Environment variables](docs/deploy/config-guides/env-vars/index.md). 1. For Kubernetes, a few large machines are faster than many small machines (due to network latency). Our rules of thumb are: From 16cab0df8e36452077036d7eb1bc8ed69454e391 Mon Sep 17 00:00:00 2001 From: DanielleWashington <dwashington.100292@gmail.com> Date: Thu, 15 May 2025 21:54:28 -0400 Subject: [PATCH 36/39] broken link fixes --- _includes/dynamic-index-async-req.mdx | 2 +- docs/deploy/config-guides/backups.md | 2 +- docs/deploy/config-guides/modules.md | 4 ++-- docs/deploy/config-guides/monitoring.md | 2 +- docs/deploy/config-guides/replication.md | 16 ++++++++-------- .../installation-guides/docker-installation.md | 4 ++-- docs/deploy/migration/index.md | 8 ++++---- docs/deploy/migration/weaviate-1-25.md | 2 +- docs/deploy/tutorials/index.mdx | 2 +- docs/deploy/tutorials/rbac.mdx | 18 +++++++++++------- docs/weaviate/concepts/cluster.md | 2 +- .../concepts/indexing/inverted-index.md | 2 +- .../concepts/replication-architecture/index.md | 2 +- docs/weaviate/config-refs/schema/index.md | 2 +- .../config-refs/schema/vector-index.md | 4 ++-- docs/weaviate/config-refs/telemetry.md | 2 +- docs/weaviate/configuration/authentication.md | 4 ++-- docs/weaviate/configuration/index.md | 4 ++-- docs/weaviate/configuration/monitoring.md | 2 +- docs/weaviate/configuration/persistence.md | 4 ++-- docs/weaviate/configuration/rbac/index.mdx | 6 +++--- .../configuration/rbac/manage-roles.mdx | 4 ++-- .../configuration/rbac/manage-users.mdx | 2 +- docs/weaviate/installation/index.md | 2 +- docs/weaviate/installation/kubernetes.md | 2 +- docs/weaviate/modules/index.md | 8 ++++---- docs/weaviate/more-resources/faq.md | 2 +- docs/weaviate/more-resources/index.md | 2 +- docs/weaviate/release-notes/index.md | 2 +- docs/weaviate/tutorials/index.mdx | 2 +- 30 files changed, 62 insertions(+), 58 deletions(-) diff --git a/_includes/dynamic-index-async-req.mdx b/_includes/dynamic-index-async-req.mdx index 5a230a7d..45eda073 100644 --- a/_includes/dynamic-index-async-req.mdx +++ b/_includes/dynamic-index-async-req.mdx @@ -1,3 +1,3 @@ :::info Dynamic index requires `ASYNC_INDEXING` -Dynamic indexes require asynchronous indexing. To enable asynchronous indexing in a self-hosted Weaviate instance, set the `ASYNC_INDEXING` [environment variable](/docs/deploy/config-guides/env-vars/index.md#general) to `true`. If your instance is hosted in Weaviate Cloud, use the Weaviate Cloud console to enable asynchronous indexing. +Dynamic indexes require asynchronous indexing. To enable asynchronous indexing in a self-hosted Weaviate instance, set the `ASYNC_INDEXING` [environment variable](/docs/deploy/config-guides/env-vars#general) to `true`. If your instance is hosted in Weaviate Cloud, use the Weaviate Cloud console to enable asynchronous indexing. ::: \ No newline at end of file diff --git a/docs/deploy/config-guides/backups.md b/docs/deploy/config-guides/backups.md index 7ee6f17a..b1914eb0 100644 --- a/docs/deploy/config-guides/backups.md +++ b/docs/deploy/config-guides/backups.md @@ -498,7 +498,7 @@ As with backup creation, the `include` and `exclude` options are mutually exclus Note that a restore fails if any of the collections already exist on this instance. :::caution Restoring backups from `v1.23.12` and older -If you are running Weaviate `v1.23.12` or older, first **[update Weaviate](../more-resources/migration/index.md) to version 1.23.13** or higher before restoring a backup. +If you are running Weaviate `v1.23.12` or older, first **[update Weaviate](/docs/deploy/migration/index.md) to version 1.23.13** or higher before restoring a backup. Versions prior to `v1.23.13` had a bug that could lead to data not being stored correctly from a backup of your data. ::: diff --git a/docs/deploy/config-guides/modules.md b/docs/deploy/config-guides/modules.md index 49f737f3..5a6e9950 100644 --- a/docs/deploy/config-guides/modules.md +++ b/docs/deploy/config-guides/modules.md @@ -79,7 +79,7 @@ Refer to the individual [module documentation](docs/weaviate/modules/index.md) f ## Vectorizer modules -The [vectorization integration](../model-providers/index.md) enable Weaviate to vectorize data at import, and to perform [`near<Media>`](/docs/weaviate/search/similarity.md) searches such as `nearText` or `nearImage`. +The [vectorization integration](docs/weaviate/model-providers/index.md) enable Weaviate to vectorize data at import, and to perform [`near<Media>`](/docs/weaviate/search/similarity.md) searches such as `nearText` or `nearImage`. :::info List of available vectorizer integrations Can be found [in this section](/docs/weaviate/model-providers/index.md). @@ -134,7 +134,7 @@ Your choice of the `text2vec` module does not restrict your choice of `generativ Tenants can be offloaded to cold storage to reduce memory and disk usage, and onloaded back when needed. -See the [dedicated page on tenant offloading](/docs/weaviate/configuration/tenant-offloading.md) for more information on how to configure Weaviate for tenant offloading. For information on how to offload and onload tenants, see [How-to: manage tenant states](/docs/weaviate/manage-data/tenant-states.mdx). +See the [dedicated page on tenant offloading](/docs/weaviate/configuration/tenant-offloading.md) for more information on how to configure Weaviate for tenant offloading. For information on how to offload and onload tenants, see [How-to: manage tenant states](docs/weaviate/manage-collections/tenant-states.mdx). ## Custom modules diff --git a/docs/deploy/config-guides/monitoring.md b/docs/deploy/config-guides/monitoring.md index 6525945b..ae9d185b 100644 --- a/docs/deploy/config-guides/monitoring.md +++ b/docs/deploy/config-guides/monitoring.md @@ -127,7 +127,7 @@ your uses perfectly: ## `nodes` API Endpoint -To get collection details programmatically, use the [`nodes`](../config-refs/nodes.md) REST endpoint. +To get collection details programmatically, use the [`nodes`](docs/deploy/config-guides/nodes.md) REST endpoint. import APIOutputs from '/_includes/rest/node-endpoint-info.mdx'; diff --git a/docs/deploy/config-guides/replication.md b/docs/deploy/config-guides/replication.md index 2d6ba1d6..8aeeb901 100644 --- a/docs/deploy/config-guides/replication.md +++ b/docs/deploy/config-guides/replication.md @@ -6,7 +6,7 @@ image: og/docs/configuration.jpg Weaviate instances can be replicated. Replication can improve read throughput, improve availability, and enable zero-downtime upgrades. -For more details on how replication is designed and built in Weaviate, see [Replication Architecture](../concepts/replication-architecture/index.md). +For more details on how replication is designed and built in Weaviate, see [Replication Architecture](docs/weaviate/concepts/replication-architecture/index.md). ## How to configure @@ -14,7 +14,7 @@ import RaftRFChangeWarning from '/\_includes/1-25-replication-factor.mdx'; <RaftRFChangeWarning/> -Replication is disabled by default. It can be enabled per collection in the [collection configuration](../manage-collections/multi-node-setup.mdx#replication-settings). This means you can set different replication factors per class in your dataset. +Replication is disabled by default. It can be enabled per collection in the [collection configuration](docs/weaviate/manage-collections/multi-node-setup.mdx#replication-settings). This means you can set different replication factors per class in your dataset. To enable replication, you can set one or both of the following: @@ -25,14 +25,14 @@ To enable replication, you can set one or both of the following: The `REPLICATION_MINIMUM_FACTOR` environment variable sets the minimum replication factor for all collections in the Weaviate instance. -If you set the [replication factor for a collection](#replication-factor-for-a-collection), the collection's replication factor overrides the minimum replication factor. +If you set the [replication factor for a collection](/docs/weaviate/configuration/replication.md#replication-factor-for-a-collection), the collection's replication factor overrides the minimum replication factor. ## Data consistency When Weaviate detects inconsistent data across nodes, it attempts to repair the out of sync data. -Starting in v1.26, Weaviate adds [async replication](../concepts/replication-architecture/consistency.md#async-replication) to proactively detect inconsistencies. In earlier versions, Weaviate uses a [repair-on-read](../concepts/replication-architecture/consistency.md#repair-on-read) strategy to repair inconsistencies at read time. +Starting in v1.26, Weaviate adds [async replication](docs/weaviate/concepts/replication-architecture/consistency.md#async-replication) to proactively detect inconsistencies. In earlier versions, Weaviate uses a [repair-on-read](docs/weaviate/concepts/replication-architecture/consistency.md#repair-on-read) strategy to repair inconsistencies at read time. Repair-on-read is automatic. To activate async replication, set `asyncEnabled` to true in the `replicationConfig` section of your collection definition. @@ -64,7 +64,7 @@ Update the following [environment variables](/docs/deploy/config-guides/env-vars - **Monitor node availability:** `ASYNC_REPLICATION_ALIVE_NODES_CHECKING_FREQUENCY` Trigger comparisons whenever there’s a change in node availability. - **Configure hash tree height:** `ASYNC_REPLICATION_HASHTREE_HEIGHT` - Specify the size of the hash tree, which helps narrow down data differences by comparing hash digests at multiple levels instead of scanning entire datasets. See [this page](../concepts/replication-architecture/consistency.md#memory-and-performance-considerations-for-async-replication) for more information on the memory and performance considerations for async replication. + Specify the size of the hash tree, which helps narrow down data differences by comparing hash digests at multiple levels instead of scanning entire datasets. See [this page](docs/weaviate/concepts/replication-architecture/consistency.md#memory-and-performance-considerations-for-async-replication) for more information on the memory and performance considerations for async replication. - **Batch size for digest comparison:** `ASYNC_REPLICATION_DIFF_BATCH_SIZE` Define the number of objects whose digest (e.g., last update time) is compared between nodes before propagating actual objects. @@ -91,7 +91,7 @@ Tweak these settings based on your cluster size and network latency to achieve o ## How to use: Queries -When you add (write) or query (read) data, one or more replica nodes in the cluster will respond to the request. How many nodes need to send a successful response and acknowledgment to the coordinator node depends on the `consistency_level`. Available [consistency levels](../concepts/replication-architecture/consistency.md) are `ONE`, `QUORUM` (replication_factor / 2 + 1) and `ALL`. +When you add (write) or query (read) data, one or more replica nodes in the cluster will respond to the request. How many nodes need to send a successful response and acknowledgment to the coordinator node depends on the `consistency_level`. Available [consistency levels](docs/weaviate/concepts/replication-architecture/consistency.md) are `ONE`, `QUORUM` (replication_factor / 2 + 1) and `ALL`. The `consistency_level` can be specified at query time: @@ -101,7 +101,7 @@ curl "http://localhost:8080/v1/objects/{ClassName}/{id}?consistency_level=ONE" ``` :::note -In v1.17, only [read queries that get data by ID](../manage-objects/read.mdx#get-an-object-by-id) had a tunable consistency level. All other object-specific REST endpoints (read or write) used the consistency level `ALL`. Starting with v1.18, all write and read queries are tunable to either `ONE`, `QUORUM` (default) or `ALL`. GraphQL endpoints use the consistency level `ONE` (in both versions). +In v1.17, only [read queries that get data by ID](docs/weaviate/manage-objects/read.mdx#get-an-object-by-id) had a tunable consistency level. All other object-specific REST endpoints (read or write) used the consistency level `ALL`. Starting with v1.18, all write and read queries are tunable to either `ONE`, `QUORUM` (default) or `ALL`. GraphQL endpoints use the consistency level `ONE` (in both versions). ::: import QueryReplication from '/\_includes/code/replication.get.object.by.id.mdx'; @@ -110,7 +110,7 @@ import QueryReplication from '/\_includes/code/replication.get.object.by.id.mdx' ## Related pages -- [Concepts: Replication Architecture](../concepts/replication-architecture/index.md) +- [Concepts: Replication Architecture](docs/weaviate/concepts/replication-architecture/index.md) - [Configurinfg Async Replication](./async-rep.md) ## Questions and feedback diff --git a/docs/deploy/installation-guides/docker-installation.md b/docs/deploy/installation-guides/docker-installation.md index 498b9158..ebadaffa 100644 --- a/docs/deploy/installation-guides/docker-installation.md +++ b/docs/deploy/installation-guides/docker-installation.md @@ -36,8 +36,8 @@ You can customize your Weaviate configuration by creating a `docker-compose.yml` ## Sample Docker Compose file This starter Docker Compose file allows: -* Use of any [API-based model provider integrations](../model-providers/index.md) (e.g. `OpenAI`, `Cohere`, `Google`, and `Anthropic`). - * This includes the relevant embedding model, generative, and reranker [integrations](../model-providers/index.md). +* Use of any [API-based model provider integrations](docs/weaviate/model-providers/index.md) (e.g. `OpenAI`, `Cohere`, `Google`, and `Anthropic`). + * This includes the relevant embedding model, generative, and reranker [integrations](/docs/weaviate/model-providers/index.md). * Searching pre-vectorized data (without a vectorizer). * Mounts a persistent volume called `weaviate_data` to `/var/lib/weaviate` in the container to store data. diff --git a/docs/deploy/migration/index.md b/docs/deploy/migration/index.md index dd1c0b3e..2528385a 100644 --- a/docs/deploy/migration/index.md +++ b/docs/deploy/migration/index.md @@ -13,7 +13,7 @@ Weaviate is under active development, with new features and improvements being a When upgrading Weaviate, we recommend that you: -1. Create a complete [backup](../../configuration/backups.md) of your current Weaviate instance before beginning any upgrade process. +1. Create a complete [backup](docs/deploy/config-guides/backups.md) of your current Weaviate instance before beginning any upgrade process. 1. Plan to upgrade one minor version at a time, always using the latest patch version of each minor release. This approach of upgrading one minor version at a time helps to minimize the risk of issues during the upgrade process, by mirroring our testing and release process. Upgrading to the latest patch version of each minor release ensures that you have the latest bugfixes and improvements. @@ -41,11 +41,11 @@ Between `v1.25` and `v1.27`, there are two minor versions, `v1.26` and `v1.27`. ### Raft Migration (v1.25.0+) -Weaviate `v1.25.0` introduced Raft [as the consensus algorithm for cluster metadata](../../concepts/replication-architecture/cluster-architecture.md#metadata-replication-raft). This requires a one-time migration of the cluster metadata. +Weaviate `v1.25.0` introduced Raft [as the consensus algorithm for cluster metadata](/docs/weaviate/concepts/replication-architecture/cluster-architecture.md#metadata-replication-raft.). This requires a one-time migration of the cluster metadata. -In [Docker-based self-hosted instances](../../installation/docker-compose.md), the migration is automatic. +In [Docker-based self-hosted instances](docs/deploy/installation-guides/docker-installation.md), the migration is automatic. -In [Kubernetes-based self-hosted instances](../../installation/kubernetes.md), you must perform a manual migration step. For more information, see the [Weaviate `v1.25.0` migration guide](./weaviate-1-25.md). +In [Kubernetes-based self-hosted instances](docs/deploy/installation-guides/k8s-installation.md), you must perform a manual migration step. For more information, see the [Weaviate `v1.25.0` migration guide](./weaviate-1-25.md). This was a significant change to the Weaviate architecture. Accordingly, we suggest performing another backup after upgrading to `v1.25.latest`, before proceeding with further upgrades to ensure that you have a recent backup. diff --git a/docs/deploy/migration/weaviate-1-25.md b/docs/deploy/migration/weaviate-1-25.md index 2344fbeb..16763013 100644 --- a/docs/deploy/migration/weaviate-1-25.md +++ b/docs/deploy/migration/weaviate-1-25.md @@ -55,7 +55,7 @@ If your deployment is on another namespace, modify the instructions below accord ### (Optional) Backup -Before proceeding with the upgrade, we recommend making a [backup](/docs/weaviate/configuration/backups.md) of your Weaviate Database. If a backup is not possible, you can explore other options, such as manually [exporting your data](/docs/weaviate/manage-collections/migrate.mdx) +Before proceeding with the upgrade, we recommend making a [backup](docs/deploy/config-guides/backups.md) of your Weaviate Database. If a backup is not possible, you can explore other options, such as manually [exporting your data](/docs/weaviate/manage-collections/migrate.mdx) ### 1. Delete StatefulSet diff --git a/docs/deploy/tutorials/index.mdx b/docs/deploy/tutorials/index.mdx index 54266bad..51fe0b3e 100644 --- a/docs/deploy/tutorials/index.mdx +++ b/docs/deploy/tutorials/index.mdx @@ -21,7 +21,7 @@ export const advancedFeaturesData = [ title: "Set up Role-Based Access Control (RBAC)", description: "Configure roles, permissions, and user assignments for secure access control in Weaviate.", - link: "docs/deploy/tutorials/rbac.mdx", + link: "/docs/deploy/tutorials/rbac", icon: "fas fa-user-shield", }, ]; diff --git a/docs/deploy/tutorials/rbac.mdx b/docs/deploy/tutorials/rbac.mdx index 7868eaa2..aeb7c95c 100644 --- a/docs/deploy/tutorials/rbac.mdx +++ b/docs/deploy/tutorials/rbac.mdx @@ -79,7 +79,7 @@ We are going to create the following roles: Before starting this tutorial, ensure you have the following: - Docker for running a Weaviate instance locally. -- Your preferred Weaviate [client library](../client-libraries/index.mdx) installed. +- Your preferred Weaviate [client library](docs/weaviate/client-libraries/index.mdx) installed. ### Local instance - `root` user @@ -132,7 +132,7 @@ We will connect to Weaviate with `root-user`, and once we create a new role, we ### Step 1: Connect to Weaviate -Ensure you are connected to Weaviate with a user possessing sufficient permissions to manage roles. You can achieve this by either using the predefined `root` role during [Weaviate configuration](../configuration/rbac/configuration.md) or by granting a user the [`manage_roles` permission](../configuration/rbac/manage-roles.mdx#role-management-permissions). +Ensure you are connected to Weaviate with a user possessing sufficient permissions to manage roles. You can achieve this by either using the predefined `root` role during [Weaviate configuration](docs/deploy/config-guides/configuring-rbac.md) or by granting a user the [`manage_roles` permission](docs/weaviate/configuration/rbac/manage-roles.mdx#role-management-permissions). <Tabs groupId="languages"> <TabItem value="py" label="Python Client v4"> @@ -279,7 +279,9 @@ Now, you can assign the role `rw_role` to `custom-user`: ### Step 1: Connect to Weaviate -Ensure you are connected to Weaviate with a user possessing sufficient permissions to manage roles. You can achieve this by either using the predefined `root` role during [Weaviate configuration](../configuration/rbac/configuration.md) or by granting a user the [`manage_roles` permission](../configuration/rbac/manage-roles.mdx#role-management-permissions). +Ensure you are connected to Weaviate with a user possessing sufficient permissions to manage roles. +You can achieve this by either using the predefined `root` role during [Weaviate configuration](/docs/deploy/config-guides/configuring-rbac) +or by granting a user the [`manage_roles` permission](/docs/weaviate/configuration/rbac/manage-roles#role-management). <Tabs groupId="languages"> <TabItem value="py" label="Python Client v4"> @@ -426,7 +428,9 @@ Now, you can assign the role `viewer_role` to `custom-user`: ### Step 1: Connect to Weaviate -Ensure you are connected to Weaviate with a user possessing sufficient permissions to manage roles. You can achieve this by either using the predefined `root` role during [Weaviate configuration](../configuration/rbac/configuration.md) or by granting a user the [`manage_roles` permission](../configuration/rbac/manage-roles.mdx#role-management-permissions). +Ensure you are connected to Weaviate with a user possessing sufficient permissions to manage roles. +You can achieve this by either using the predefined `root` role during [Weaviate configuration](docs/deploy/config-guides/configuring-rbac.md) +or by granting a user the [`manage_roles` permission](docs/weaviate/configuration/rbac/manage-roles.mdx#role-management-permissions). <Tabs groupId="languages"> <TabItem value="py" label="Python Client v4"> @@ -579,9 +583,9 @@ It walks you through connecting to Weaviate using a user with role management ca ## Additional resources -- [RBAC: Configuration](../configuration/rbac/configuration.md) -- [RBAC: Manage roles](../configuration/rbac/manage-roles.mdx) -- [RBAC: Manage users](../configuration/rbac/manage-users.mdx) +- [RBAC: Configuration](docs/deploy/config-guides/configuring-rbac.md) +- [RBAC: Manage roles](docs/weaviate/configuration/rbac/manage-roles.mdx) +- [RBAC: Manage users](docs/weaviate/configuration/rbac/manage-users.mdx) ## Questions and feedback diff --git a/docs/weaviate/concepts/cluster.md b/docs/weaviate/concepts/cluster.md index db2886bc..4ec71ce4 100644 --- a/docs/weaviate/concepts/cluster.md +++ b/docs/weaviate/concepts/cluster.md @@ -124,7 +124,7 @@ Shards were assigned to 'live' nodes in a round-robin fashion starting with a ra ## Consistency and current limitations -* Starting with `v1.25.0`, Weaviate adopts the [Raft consensus algorithm](https://raft.github.io/) which is a log-based algorithm coordinated by an elected leader. This brings an additional benefit in that concurrent schema changes are now supported.<br/>If you are a Kubernetes user, see the [`1.25 migration guide`](/docs/weaviate/more-resources/migration/weaviate-1-25.md) before you upgrade. To upgrade, you have to delete your existing StatefulSet. +* Starting with `v1.25.0`, Weaviate adopts the [Raft consensus algorithm](https://raft.github.io/) which is a log-based algorithm coordinated by an elected leader. This brings an additional benefit in that concurrent schema changes are now supported.<br/>If you are a Kubernetes user, see the [`1.25 migration guide`](docs/deploy/migration/weaviate-1-25.md) before you upgrade. To upgrade, you have to delete your existing StatefulSet. * As of `v1.8.0`, the process of broadcasting schema changes across the cluster uses a form of two-phase transaction that as of now cannot tolerate node failures during the lifetime of the transaction. * As of `v1.8.0`, dynamically scaling a cluster is not fully supported yet. New nodes can be added to an existing cluster, however it does not affect the ownership of shards. Existing nodes can not yet be removed if data is present, as shards are not yet being moved to other nodes prior to a removal of a node. diff --git a/docs/weaviate/concepts/indexing/inverted-index.md b/docs/weaviate/concepts/indexing/inverted-index.md index 0fa74ffb..6b9d279d 100644 --- a/docs/weaviate/concepts/indexing/inverted-index.md +++ b/docs/weaviate/concepts/indexing/inverted-index.md @@ -27,7 +27,7 @@ As always, we recommend upgrading to the latest version of Weaviate to benefit f The BlockMax WAND algorithm is a variant of the WAND algorithm that is used to speed up BM25 and hybrid searches. It organizes the inverted index in blocks to enable skipping over blocks that are not relevant to the query. This can significantly reduce the number of documents that need to be scored, improving search performance. -If you are experiencing slow BM25 (or hybrid) searches and use a Weaviate version prior to `v1.30`, try migrating to a newer version that uses the BlockMax WAND algorithm to see if it improves performance. If you need to migrate existing data from a previous version of Weaviate, follow the [v1.30 migration guide](/docs/deploy/other/migration/weaviate-1-30.md). +If you are experiencing slow BM25 (or hybrid) searches and use a Weaviate version prior to `v1.30`, try migrating to a newer version that uses the BlockMax WAND algorithm to see if it improves performance. If you need to migrate existing data from a previous version of Weaviate, follow the [v1.30 migration guide](docs/deploy/migration/weaviate-1-30.md). :::note Scoring changes with BlockMax WAND diff --git a/docs/weaviate/concepts/replication-architecture/index.md b/docs/weaviate/concepts/replication-architecture/index.md index 3c4baac3..0fa4d690 100644 --- a/docs/weaviate/concepts/replication-architecture/index.md +++ b/docs/weaviate/concepts/replication-architecture/index.md @@ -147,7 +147,7 @@ Prior to Weaviate `v1.25`, each cluster metadata change was recorded via a distr This is a synchronous process, which means that the cluster metadata change is only committed when all nodes have acknowledged the change. In this architecture, any node downtime would temporarily prevent metadata operations. Additionally, only one such operation could be processed at a time. -If you are using Weaviate `v1.24` or earlier, you can [upgrade to `v1.25`](/docs/deploy/other/migration/weaviate-1-25.md) to benefit from the Raft consensus algorithm for cluster metadata changes. +If you are using Weaviate `v1.24` or earlier, you can [upgrade to `v1.25`](docs/deploy/migration/weaviate-1-25.md) to benefit from the Raft consensus algorithm for cluster metadata changes. </details> diff --git a/docs/weaviate/config-refs/schema/index.md b/docs/weaviate/config-refs/schema/index.md index 1ceaf4b3..22b102e8 100644 --- a/docs/weaviate/config-refs/schema/index.md +++ b/docs/weaviate/config-refs/schema/index.md @@ -607,7 +607,7 @@ The `kagome_kr` tokenizer is not loaded by default to save resources. To use it, ### Limit the number of `gse` and `Kagome` tokenizers The `gse` and `Kagome` tokenizers can be resource intensive and affect Weaviate's performance. -You can limit the combined number of `gse` and `Kagome` tokenizers running at the same time using the [`TOKENIZER_CONCURRENCY_COUNT` environment variable](../env-vars/index.md). +You can limit the combined number of `gse` and `Kagome` tokenizers running at the same time using the [`TOKENIZER_CONCURRENCY_COUNT` environment variable](docs/deploy/config-guides/env-vars/index.md). ### Inverted index types diff --git a/docs/weaviate/config-refs/schema/vector-index.md b/docs/weaviate/config-refs/schema/vector-index.md index 2dc7f9f7..195e4ffd 100644 --- a/docs/weaviate/config-refs/schema/vector-index.md +++ b/docs/weaviate/config-refs/schema/vector-index.md @@ -54,7 +54,7 @@ Tombstones are records that mark deleted objects. In an HNSW index, tombstones a As the index grows in size, the cleanup process may take longer to complete and require more resources. For very large indexes, this may cause performance issues. -To control the number of tombstones deleted per cleanup cycle and prevent performance issues, set the [`TOMBSTONE_DELETION_MAX_PER_CYCLE` and `TOMBSTONE_DELETION_MIN_PER_CYCLE` environment variables](../env-vars/index.md#general). +To control the number of tombstones deleted per cleanup cycle and prevent performance issues, set the [`TOMBSTONE_DELETION_MAX_PER_CYCLE` and `TOMBSTONE_DELETION_MIN_PER_CYCLE` environment variables](docs/deploy/config-guides/env-vars/index.md#general). - Set `TOMBSTONE_DELETION_MIN_PER_CYCLE` to prevent occurrences of unnecessary cleanup cycles. - Set `TOMBSTONE_DELETION_MAX_PER_CYCLE` to prevent the cleanup process from taking too long and consuming too many resources. @@ -219,7 +219,7 @@ services: </details> -To get the index status, check the [node status](/docs/weaviate/config-refs/nodes) endpoint. +To get the index status, check the [node status](docs/deploy/config-guides/nodes.md) endpoint. <details> <summary><code>Node status</code> example usage</summary> diff --git a/docs/weaviate/config-refs/telemetry.md b/docs/weaviate/config-refs/telemetry.md index 2512a0e7..4bc2b65b 100644 --- a/docs/weaviate/config-refs/telemetry.md +++ b/docs/weaviate/config-refs/telemetry.md @@ -22,7 +22,7 @@ Weaviate does not collect any other telemetry information. ## Disabling Telemetry Data -To disable telemetry data collection, add this line to your [system configuration](./env-vars/index.md) file: +To disable telemetry data collection, add this line to your [system configuration](docs/deploy/config-guides/env-vars/index.md) file: ```bash DISABLE_TELEMETRY=true diff --git a/docs/weaviate/configuration/authentication.md b/docs/weaviate/configuration/authentication.md index 9f8615a4..e47da4bc 100644 --- a/docs/weaviate/configuration/authentication.md +++ b/docs/weaviate/configuration/authentication.md @@ -9,7 +9,7 @@ image: og/docs/configuration.jpg Authentication and authorization are closely related concepts, and sometimes abbreviated as `AuthN` and `AuthZ`. Authentication (`AuthN`) is the process of verifying the identity of a user, while authorization (`AuthZ`) is the process of determining what permissions the user has. ::: -Weaviate controls access through user authentication via API keys or OpenID Connect (OIDC), with an option for anonymous access. Users can then be assigned different [authorization](./authorization.md) levels, as shown in the diagram below. +Weaviate controls access through user authentication via API keys or OpenID Connect (OIDC), with an option for anonymous access. Users can then be assigned different [authorization](docs/deploy/config-guides/authorization.md) levels, as shown in the diagram below. ```mermaid flowchart LR @@ -218,7 +218,7 @@ curl https://localhost:8080/v1/objects -H "Authorization: Bearer ${WEAVIATE_API_ ## Further resources -- [Configuration: Authorization and RBAC](./authorization.md) +- [Configuration: Authorization and RBAC](docs/deploy/config-guides/authorization.md) - [References: Environment variables / Authentication and Authorization](docs/deploy/config-guides/env-vars/index.md#authentication-and-authorization) ## Questions and feedback diff --git a/docs/weaviate/configuration/index.md b/docs/weaviate/configuration/index.md index 942faa08..bdfb4802 100644 --- a/docs/weaviate/configuration/index.md +++ b/docs/weaviate/configuration/index.md @@ -10,7 +10,7 @@ This section shows you how to configure Weaviate. - Extend Weaviate's functionality by adding vectorizers and other [modules](./modules.md) - Configure how Weaviate stores and indexes data - - [schema](../manage-data/collections.mdx) + - [schema](docs/weaviate/manage-collections/index.mdx) - [data types](../config-refs/datatypes.md) - [distance metrics](../config-refs/distances.md) @@ -18,5 +18,5 @@ This section shows you how to configure Weaviate. - [Back up](docs/deploy/config-guides/backups.md) your Weaviate instance - Control access - [authentication](./authentication.md) - - [authorization](./authorization.md) + - [authorization](docs/deploy/config-guides/authorization.md) - [Monitor](./monitoring.md) your Weaviate instance diff --git a/docs/weaviate/configuration/monitoring.md b/docs/weaviate/configuration/monitoring.md index 1c561fb7..c9a7bc0d 100644 --- a/docs/weaviate/configuration/monitoring.md +++ b/docs/weaviate/configuration/monitoring.md @@ -130,7 +130,7 @@ your uses perfectly: ## `nodes` API Endpoint -To get collection details programmatically, use the [`nodes`](../config-refs/nodes.md) REST endpoint. +To get collection details programmatically, use the [`nodes`](docs/deploy/config-guides/nodes.md) REST endpoint. import APIOutputs from '/\_includes/rest/node-endpoint-info.mdx'; diff --git a/docs/weaviate/configuration/persistence.md b/docs/weaviate/configuration/persistence.md index fe93ea2d..2d2b33eb 100644 --- a/docs/weaviate/configuration/persistence.md +++ b/docs/weaviate/configuration/persistence.md @@ -76,7 +76,7 @@ See [Backups](docs/deploy/config-guides/backups.md). ## Kubernetes -For Kubernetes setup, the only thing to bear in mind is that Weaviate needs a `PersistentVolumes` through `PersistentVolumeClaims` ([more info](/docs/weaviate/installation/kubernetes.md#requirements)) but the Helm chart is already configured to store the data on an external volume. +For Kubernetes setup, the only thing to bear in mind is that Weaviate needs a `PersistentVolumes` through `PersistentVolumeClaims` ([more info](/docs/deploy/installation-guides/k8s-installation.md#requirements)) but the Helm chart is already configured to store the data on an external volume. ## Disk Pressure Warnings and Limits @@ -104,7 +104,7 @@ In general, `mmap` may be a preferred option with memory management benefits. Ho ## Related pages -- [Configuration: Backups](./backups.md) +- [Configuration: Backups](docs/deploy/config-guides/backups.md) ## Questions and feedback diff --git a/docs/weaviate/configuration/rbac/index.mdx b/docs/weaviate/configuration/rbac/index.mdx index 4ee13f1d..a09a1d7e 100644 --- a/docs/weaviate/configuration/rbac/index.mdx +++ b/docs/weaviate/configuration/rbac/index.mdx @@ -104,7 +104,7 @@ The `root` role can be assigned to a user through the Weaviate configuration fil All roles can also be assigned through the Weaviate API, including the predefined role. The predefined roles cannot be modified, but they can be assigned to or revoked from users. -Refer to the [RBAC: Configuration](/docs/weaviate/configuration/rbac/configuration) page for more information on how to assign predefined roles to users. +Refer to the [RBAC: Configuration](docs/deploy/config-guides/configuring-rbac.md) page for more information on how to assign predefined roles to users. ### Custom roles @@ -112,7 +112,7 @@ Any authenticated user that is not assigned a predefined role has no roles or pe These users' permissions can be modified through Weaviate by those with the appropriate permissions for **managing roles**. This allows for the creation of custom roles, which can be assigned to users as needed. -Role management can be performed with a [predefined `root` role](/docs/weaviate/configuration/rbac/configuration) or a custom role with [`manage_roles` permissions](/docs/weaviate/configuration/rbac/manage-roles#role-management-permissions). +Role management can be performed with a [predefined `root` role](docs/deploy/config-guides/configuring-rbac.md) or a custom role with [`manage_roles` permissions](/docs/weaviate/configuration/rbac/manage-roles#role-management-permissions). :::caution Role Management Permissions Be careful when assigning permissions to roles that manage roles. These permissions can be used to escalate privileges by assigning additional roles to users. Only assign these permissions to trusted users. @@ -357,7 +357,7 @@ The [user management](./manage-users.mdx) API can be used to create, delete and - [RBAC: Configuration](docs/deploy/config-guides/configuring-rbac.md) - [RBAC: Manage roles](./manage-roles.mdx) - [RBAC: Manage users](./manage-users.mdx) -- [RBAC: Tutorial](../../tutorials/rbac.mdx) +- [RBAC: Tutorial](docs/deploy/tutorials/rbac.mdx) ## Questions and feedback diff --git a/docs/weaviate/configuration/rbac/manage-roles.mdx b/docs/weaviate/configuration/rbac/manage-roles.mdx index fc86285b..027d23e3 100644 --- a/docs/weaviate/configuration/rbac/manage-roles.mdx +++ b/docs/weaviate/configuration/rbac/manage-roles.mdx @@ -31,7 +31,7 @@ import ConfigureRbac from '/_includes/configuration/configure-rbac.mdx'; Role management requires appropriate `role` resource permissions that can be obtained through: -- A predefined `root` role when [configuring RBAC](/docs/weaviate/configuration/rbac/configuration). +- A predefined `root` role when [configuring RBAC](docs/deploy/config-guides/configuring-rbac.md). - A role with [`Role Management`](#role-management-permissions) permissions granted. <Tabs groupId="languages"> @@ -638,7 +638,7 @@ Visit the [Manage users](./manage-users.mdx) page to learn more about assigning ## Further resources - [RBAC: Overview](./index.mdx) -- [RBAC: Configuration](./configuration.md) +- [RBAC: Configuration](docs/deploy/config-guides/configuring-rbac.md) - [RBAC: Manage users](./manage-users.mdx) ## Questions and feedback diff --git a/docs/weaviate/configuration/rbac/manage-users.mdx b/docs/weaviate/configuration/rbac/manage-users.mdx index fe719a9b..82787d07 100644 --- a/docs/weaviate/configuration/rbac/manage-users.mdx +++ b/docs/weaviate/configuration/rbac/manage-users.mdx @@ -480,7 +480,7 @@ viewer ## Further resources - [RBAC: Overview](./index.mdx) -- [RBAC: Configuration](./configuration.md) +- [RBAC: Configuration](docs/deploy/config-guides/configuring-rbac.md) - [RBAC: Manage roles](./manage-roles.mdx) ## Questions and feedback diff --git a/docs/weaviate/installation/index.md b/docs/weaviate/installation/index.md index 8c697cdf..00a88be1 100644 --- a/docs/weaviate/installation/index.md +++ b/docs/weaviate/installation/index.md @@ -7,7 +7,7 @@ image: og/docs/installation.jpg Weaviate is available as a hosted service, [Weaviate Cloud (WCD)](https://console.weaviate.cloud/), or as a self managed instance. If you manage your own instance, you can host it locally or with a cloud provider. Self-managed instances use the same Weaviate Database as WCD. -If you are upgrading from a previous version of Weaviate, see the [Migration Guide](../more-resources/migration/index.md) for any changes that may affect your installation. +If you are upgrading from a previous version of Weaviate, see the [Migration Guide](docs/deploy/migration/index.md) for any changes that may affect your installation. ## Installation methods diff --git a/docs/weaviate/installation/kubernetes.md b/docs/weaviate/installation/kubernetes.md index f9d0105a..a3ed2511 100644 --- a/docs/weaviate/installation/kubernetes.md +++ b/docs/weaviate/installation/kubernetes.md @@ -168,7 +168,7 @@ The above command (`helm upgrade...`) is idempotent. In other words, you can run To upgrade to `1.25` or higher from a pre-`1.25` version, you must delete the deployed `StatefulSet`, update the helm chart to version `17.0.0` or higher, and re-deploy Weaviate. -See the [1.25 migration guide for Kubernetes](../more-resources/migration/weaviate-1-25.md) for more details. +See the [1.25 migration guide for Kubernetes](docs/deploy/migration/weaviate-1-25.md) for more details. ### Using EFS with Weaviate diff --git a/docs/weaviate/modules/index.md b/docs/weaviate/modules/index.md index 61fbf8c0..4dd02383 100644 --- a/docs/weaviate/modules/index.md +++ b/docs/weaviate/modules/index.md @@ -88,9 +88,9 @@ This type of provider is ideal for production environments. This is because stor Additionally, multi-node Weaviate clusters _require_ the use of an external provider. Storing a multi-node backup on internally on a single node presents several issues, like significantly reducing the durability and availability of the backup, and is not supported. The supported external backup providers are: -- [S3](/docs/weaviate/configuration/backups.md#s3-aws-or-s3-compatible) -- [GCS](/docs/weaviate/configuration/backups.md#gcs-google-cloud-storage) -- [Azure](/docs/weaviate/configuration/backups.md#azure-storage) +- [S3](docs/deploy/config-guides/backups.md#s3-aws-or-s3-compatible) +- [GCS](docs/deploy/config-guides/backups.md#gcs-google-cloud-storage) +- [Azure](docs/deploy/config-guides/backups.md#azure-storage) Thanks to the extensibility of the module system, new providers can be readily added. If you are interested in an external provider other than the ones listed above, feel free to reach out via our [forum](https://forum.weaviate.io/), or open an issue on [GitHub](https://github.com/weaviate/weaviate). @@ -98,7 +98,7 @@ Thanks to the extensibility of the module system, new providers can be readily a Internal providers coordinate the storage and retrieval of backed-up Weaviate data within a Weaviate instance. This type of provider is intended for developmental or experimental use, and is not recommended for production. Internal Providers are not compatible for multi-node backups, which require the use of an external provider. -As of Weaviate `v1.16`, the only supported internal backup provider is the [filesystem](/docs/weaviate/configuration/backups.md#filesystem) provider. +As of Weaviate `v1.16`, the only supported internal backup provider is the [filesystem](docs/deploy/config-guides/backups.md#filesystem) provider. ## Offloading Modules diff --git a/docs/weaviate/more-resources/faq.md b/docs/weaviate/more-resources/faq.md index c5d17f75..30fdb4a0 100644 --- a/docs/weaviate/more-resources/faq.md +++ b/docs/weaviate/more-resources/faq.md @@ -73,7 +73,7 @@ image: og/docs/more-resources.jpg <summary>Answer</summary> > Role-based access control (RBAC) can be enabled when configuring Weaviate via the `AUTHORIZATION_RBAC_ENABLED` environment variable. -> For more info visit the [RBAC: Configuration](/docs/weaviate/configuration/rbac/configuration) guide. +> For more info visit the [RBAC: Configuration](docs/deploy/config-guides/configuring-rbac.md) guide. </details> diff --git a/docs/weaviate/more-resources/index.md b/docs/weaviate/more-resources/index.md index fdd50eb6..71905fd1 100644 --- a/docs/weaviate/more-resources/index.md +++ b/docs/weaviate/more-resources/index.md @@ -17,7 +17,7 @@ These pages can help with common questions: - [Example datasets](./example-datasets.md) - [Example use cases](./example-use-cases.md) - [Index types and performance](./performance.md) -- [Migration Guide](./migration/index.md) +- [Migration Guide](docs/deploy/migration/index.md) ## (Even) more resources diff --git a/docs/weaviate/release-notes/index.md b/docs/weaviate/release-notes/index.md index daf948ea..93a2fdd2 100644 --- a/docs/weaviate/release-notes/index.md +++ b/docs/weaviate/release-notes/index.md @@ -42,7 +42,7 @@ export const pythonCardsData = [ This page lists [developer release notes](https://github.com/weaviate/weaviate/releases) for Weaviate Database. - To see the GitHub release notes for a particular version, click on the version number. -- For more information on upgrading Weaviate, see the [Migration Guide](../more-resources/migration/index.md). +- For more information on upgrading Weaviate, see the [Migration Guide](docs/deploy/migration/index.md). ### Weaviate Database and client releases diff --git a/docs/weaviate/tutorials/index.mdx b/docs/weaviate/tutorials/index.mdx index 3d45ec6a..5a2f88a4 100644 --- a/docs/weaviate/tutorials/index.mdx +++ b/docs/weaviate/tutorials/index.mdx @@ -21,7 +21,7 @@ export const advancedFeaturesData = [ title: "Set up Role-Based Access Control (RBAC)", description: "Configure roles, permissions, and user assignments for secure access control in Weaviate.", - link: "/docs/weaviate/tutorials/rbac", + link: "/docs/deploy/tutorials/rbac", icon: "fas fa-user-shield", }, { From 2a8166dd0430fc2775f32e7112c44c1541c05713 Mon Sep 17 00:00:00 2001 From: DanielleWashington <dwashington.100292@gmail.com> Date: Thu, 15 May 2025 22:56:04 -0400 Subject: [PATCH 37/39] final phase 1 edits --- docs/deploy/installation-guides/aws-cli.md | 50 +++++++++++++++++++ docs/deploy/migration/weaviate-1-25.md | 2 + docs/deploy/migration/weaviate-1-30.md | 7 +++ docs/deploy/production/Kubernetes/index.mdx | 6 +++ docs/deploy/production/Kubernetes/k8s-poc.md | 8 ++- .../Kubernetes/production-readiness.md | 5 ++ docs/deploy/production/index.mdx | 8 ++- docs/deploy/tutorials/index.mdx | 5 ++ 8 files changed, 89 insertions(+), 2 deletions(-) diff --git a/docs/deploy/installation-guides/aws-cli.md b/docs/deploy/installation-guides/aws-cli.md index d4932de1..fda3564b 100644 --- a/docs/deploy/installation-guides/aws-cli.md +++ b/docs/deploy/installation-guides/aws-cli.md @@ -13,6 +13,39 @@ Weaviate can be deployed on an EKS cluster using the `eksctl` command-line tool - `eksctl` installed ::: +<details> +<summary> AWS policies needed </summary> + +Ensure that you have adequate permissions to create and interact wth an EKS cluster. The following policies should provide you the adequate permissions to create your cluster: + +- eks:CreateCluster +- eks:DescribeCluster +- eks:ListClusters +- eks:UpdateClusterConfig +- eks:DeleteCluster +- iam:CreateRole +- iam:AttachRolePolicy +- iam:PutRolePolicy +- iam:GetRole +- iam:ListRolePolicies +- iam:ListAttachedRolePolicies +- ec2:DescribeSubnets +- ec2:DescribeVpcs +- ec2:DescribeSecurityGroups +- ec2:CreateSecurityGroup +- ec2:AuthorizeSecurityGroupIngress +- ec2:RevokeSecurityGroupIngress +- cloudformation:CreateStack +- cloudformation:DescribeStacks +- cloudformation:UpdateStack +- cloudformation:DeleteStack +- ec2:CreateTags +- ec2:DescribeInstances +- ec2:DescribeNetworkInterfaces +- ec2:DescribeAvailabilityZones + +</details> + #### Verify your tools Before starting, ensure that your tools are installed: @@ -24,6 +57,8 @@ kubectl version eksctl version ``` + + ### Step 1: Create the Cluster To create your cluster, prepare a `yaml` file that with a name of your choosing (e.g. `eks-cluster.yaml`) @@ -130,6 +165,21 @@ helm repo update After you've added the Weaviate Helm chart, configure the `values.yaml` file before you deploy Weaviate on the cluster. +```bash +helm show values weaviate/weaviate > values.yaml +``` + +Before deploying Weaviate, change the `storgeclass` and ensure that you have replicas specified in your `values.yaml` file. + +```yaml +storage: + size: 32Gi + storageClassName: "<your-storage-class-name>" +``` + +```yaml +replicas: 3 +``` #### Deploy Weaviate on your cluster: diff --git a/docs/deploy/migration/weaviate-1-25.md b/docs/deploy/migration/weaviate-1-25.md index 16763013..c5268d4b 100644 --- a/docs/deploy/migration/weaviate-1-25.md +++ b/docs/deploy/migration/weaviate-1-25.md @@ -193,6 +193,8 @@ helm upgrade weaviate weaviate/weaviate \ This should bring the cluster back to your specified pre-`1.25` version. +## Questions and feedback + import DocsFeedback from '/_includes/docs-feedback.mdx'; <DocsFeedback/> diff --git a/docs/deploy/migration/weaviate-1-30.md b/docs/deploy/migration/weaviate-1-30.md index f26bbb46..56045215 100644 --- a/docs/deploy/migration/weaviate-1-30.md +++ b/docs/deploy/migration/weaviate-1-30.md @@ -323,3 +323,10 @@ BlockMax WAND algorithm is available in `v1.29` as a **technical preview**. **We Enable BlockMax WAND by setting the environment variables `USE_BLOCKMAX_WAND` and `USE_INVERTED_SEARCHABLE` to `true`. Now, all new data added to Weaviate will use BlockMax WAND for BM25 and hybrid searches. However, preexisting data will continue to use the default WAND algorithm. + + +## Questions and feedback + +import DocsFeedback from '/_includes/docs-feedback.mdx'; + +<DocsFeedback/> diff --git a/docs/deploy/production/Kubernetes/index.mdx b/docs/deploy/production/Kubernetes/index.mdx index d9d9bca9..2f09b810 100644 --- a/docs/deploy/production/Kubernetes/index.mdx +++ b/docs/deploy/production/Kubernetes/index.mdx @@ -23,3 +23,9 @@ Weaviate can use Kubernetes in a variety of deployments for your enterprise envi - Amazon EKS (Elastic Kubernetes Service) +## Questions and feedback + +import DocsFeedback from '/_includes/docs-feedback.mdx'; + +<DocsFeedback/> + diff --git a/docs/deploy/production/Kubernetes/k8s-poc.md b/docs/deploy/production/Kubernetes/k8s-poc.md index ebe68cfa..d1215e9c 100644 --- a/docs/deploy/production/Kubernetes/k8s-poc.md +++ b/docs/deploy/production/Kubernetes/k8s-poc.md @@ -151,4 +151,10 @@ updateStrategy: Voila! You now have a deployment that is *somewhat* ready for production. Your next step will be to complete the self-assessment and identify any gaps. -### Next Steps: [Production Readiness Self-Assessment](./production-readiness.md) \ No newline at end of file +### Next Steps: [Production Readiness Self-Assessment](./production-readiness.md) + +## Questions and feedback + +import DocsFeedback from '/_includes/docs-feedback.mdx'; + +<DocsFeedback/> diff --git a/docs/deploy/production/Kubernetes/production-readiness.md b/docs/deploy/production/Kubernetes/production-readiness.md index 751338e1..7a7f828f 100644 --- a/docs/deploy/production/Kubernetes/production-readiness.md +++ b/docs/deploy/production/Kubernetes/production-readiness.md @@ -86,3 +86,8 @@ If you *do* identify gaps within your deployment, be sure to reach out to your S Evaluate these key areas to build a highly available, resilient, and efficient deployment that will scale to meet your business needs. By ensuring that these self-assessment questions have been addressed, you can proactively identify potential risks and maximize the reliability of your deployment. +## Questions and feedback + +import DocsFeedback from '/_includes/docs-feedback.mdx'; + +<DocsFeedback/> diff --git a/docs/deploy/production/index.mdx b/docs/deploy/production/index.mdx index 4f2c75c0..73dce29a 100644 --- a/docs/deploy/production/index.mdx +++ b/docs/deploy/production/index.mdx @@ -35,4 +35,10 @@ Weaviate has different options for deploying in a production environment using: - **Serverless Cloud**: A Serverless Cloud instance is a robust cluster designed for production use. - **Enterprise Cloud**: Enterprise Cloud is a fully-managed deployment of dedicated resources within a secure, highly available environment. -- **Bring Your Own Cloud (BYOC)**: Using your own cloud environment, you are able to have a fully managed deployed. \ No newline at end of file +- **Bring Your Own Cloud (BYOC)**: Using your own cloud environment, you are able to have a fully managed deployed. + +## Questions and feedback + +import DocsFeedback from '/_includes/docs-feedback.mdx'; + +<DocsFeedback/> diff --git a/docs/deploy/tutorials/index.mdx b/docs/deploy/tutorials/index.mdx index 51fe0b3e..d0468b8a 100644 --- a/docs/deploy/tutorials/index.mdx +++ b/docs/deploy/tutorials/index.mdx @@ -29,3 +29,8 @@ export const advancedFeaturesData = [ <br /> <CardsSection items={advancedFeaturesData} /> <br /> +## Questions and feedback + +import DocsFeedback from '/_includes/docs-feedback.mdx'; + +<DocsFeedback/> From 30f33ad53c7e0203ab857d88276fa096062d21b5 Mon Sep 17 00:00:00 2001 From: DanielleWashington <dwashington.100292@gmail.com> Date: Thu, 15 May 2025 23:00:46 -0400 Subject: [PATCH 38/39] updating metrics in the monitoring doc --- docs/deploy/config-guides/monitoring.md | 76 +++++++++++++++++-------- 1 file changed, 52 insertions(+), 24 deletions(-) diff --git a/docs/deploy/config-guides/monitoring.md b/docs/deploy/config-guides/monitoring.md index ae9d185b..0d11fe89 100644 --- a/docs/deploy/config-guides/monitoring.md +++ b/docs/deploy/config-guides/monitoring.md @@ -69,37 +69,65 @@ metrics of the same "class" to obtain a class metrics, or aggregate all metrics to obtain the metric for the entire Weaviate instance. | Metric | Description | Labels | Type | -| --- | --- | --- | --- | -| `batch_durations_ms` | Duration of a single batch operation in ms. The `operation` label further defines what operation as part of the batch (e.g. object, inverted, vector) is being used. Granularity is a shard of a class. | `operation`, `class_name`, `shard_name` | Histogram | -| `batch_delete_durations_ms` | Duration of a batch delete in ms. The `operation` label further defines what operation as part of the batch delete is being measured. Granularity is a shard of a class | `class_name`, `shard_name` | Histogram | -| `objects_durations_ms` | Duration of an individual object operation, such as `put`, `delete`, etc. as indicated by the `operation` label, also as part of a batch. The `step` label adds additional precisions to each `operation`. Granularity is a shard of a class. | `class_name`, `shard_name` | Histogram | -| `object_count` | Numbers of objects present. Granularity is a shard of a class | `class_name`, `shard_name` | Gauge | -| `async_operations_running` | Number of currently running async operations. The operation itself is defined through the `operation` label. | `operation`, `class_name`, `shard_name`, `path` | Gauge | -| `lsm_active_segments` | Number of currently present segments per shard. Granularity is shard of a class. Grouped by `strategy`.| `strategy`, `class_name`, `shard_name`, `path` | Gauge | -| `lsm_bloom_filter_duration_ms` | Duration of a bloom filter operation per shard in ms. Granularity is shard of a class. Grouped by `strategy`. | `operation`, `strategy`, `class_name`, `shard_name` | Histogram | -| `lsm_segment_objects` | Number of entries per LSM segment by level. Granularity is shard of a class. Grouped by `strategy` and `level`. | `operation`, `strategy`, `class_name`, `shard_name`, `path`, `level` | Gauge | -| `lsm_segment_size` | Size of LSM segment by level and unit. | `strategy`, `class_name`, `shard_name`, `path`, `level`, `unit` | Gauge | -| `lsm_segment_count` | Number of segments by level | `strategy`, `class_name`, `shard_name`, `path`, `level` | Gauge | -| `vector_index_tombstones` | Number of currently active tombstones in the vector index. Will go up on each incoming delete and go down after a completed repair operation. | `class_name`, `shard_name` | Gauge | -| `vector_index_tombstone_cleanup_threads` | Number of currently active threads for repairing/cleaning up the vector index after deletes have occurred. | `class_name`, `shard_name` | Gauge | -| `vector_index_tombstone_cleaned` | Total number of deleted and removed vectors after repair operations. | `class_name`, `shard_name` | Counter | -| `vector_index_operations` | Total number of mutating operations on the vector index. The operation itself is defined by the `operation` label. | `operation`, `class_name`, `shard_name` | Gauge | -| `vector_index_size` | The total capacity of the vector index. Typically larger than the number of vectors imported as it grows proactively. | `class_name`, `shard_name` | Gauge | -| `vector_index_maintenance_durations_ms` | Duration of a sync or async vector index maintenance operation. The operation itself is defined through the `operation` label. | `opeartion`, `class_name`, `shard_name` | Histogram | -| `vector_index_durations_ms` | Duration of regular vector index operation, such as insert or delete. The operation itself is defined through the `operation` label. The `step` label adds more granularity to each operation. | `operation`, `step`, `class_name`, `shard_name` | Histogram | -| `startup_durations_ms` | Duration of individual startup operations in ms. The operation itself is defined through the `operation` label. | `operation`, `class_name`, `shard_name` | Histogram | -| `startup_diskio_throughput` | Disk I/O throughput in bytes/s at startup operations, such as reading back the HNSW index or recovering LSM segments. The operation itself is defined by the `operation` label. | `operation`, `step`, `class_name`, `shard_name` | Histogram | -| `requests_total` | Metric that tracks all user requests to determine if it was successful or failed. | `api`, `query_type`, `class_name` | `GaugeVec` | -| `index_queue_push_duration_ms` | Duration of pushing one or more vectors to the index queue. | `class_name`, `shard_name`, `target_vector` | `Summary` | +|---|---|---|---| +| `async_operations_running` | Number of currently running async operations. The operation itself is defined through the `operation` label. | `operation`, `class_name`, `shard_name`, `path` | `Gauge` | +| `batch_delete_durations_ms` | Duration of a batch delete in ms. The `operation` label further defines what operation as part of the batch delete is being measured. Granularity is a shard of a class | `class_name`, `shard_name` | `Histogram` | +| `batch_durations_ms` | Duration of a single batch operation in ms. The `operation` label further defines what operation as part of the batch (e.g. object, inverted, vector) is being used. Granularity is a shard of a class. | `operation`, `class_name`, `shard_name` | `Histogram` | | `index_queue_delete_duration_ms` | Duration of deleting one or more vectors from the index queue and the underlying index. | `class_name`, `shard_name`, `target_vector` | `Summary` | -| `index_queue_preload_duration_ms` | Duration of preloading un-indexed vectors to the index queue. | `class_name`, `shard_name`, `target_vector` | `Summary` | +| `index_queue_paused` | Whether the index queue is paused. | `class_name`, `shard_name`, `target_vector` | `Gauge` | | `index_queue_preload_count` | Number of vectors preloaded to the index queue. | `class_name`, `shard_name`, `target_vector` | `Gauge` | +| `index_queue_preload_duration_ms` | Duration of preloading un-indexed vectors to the index queue. | `class_name`, `shard_name`, `target_vector` | `Summary` | +| `index_queue_push_duration_ms` | Duration of pushing one or more vectors to the index queue. | `class_name`, `shard_name`, `target_vector` | `Summary` | | `index_queue_search_duration_ms` | Duration of searching for vectors in the index queue and the underlying index. | `class_name`, `shard_name`, `target_vector` | `Summary` | -| `index_queue_paused` | Whether the index queue is paused. | `class_name`, `shard_name`, `target_vector` | `Gauge` | | `index_queue_size` | Number of vectors in the index queue. | `class_name`, `shard_name`, `target_vector` | `Gauge` | | `index_queue_stale_count` | Number of times the index queue has been marked as stale. | `class_name`, `shard_name`, `target_vector` | `Counter` | | `index_queue_vectors_dequeued` | Number of vectors sent to the workers per tick. | `class_name`, `shard_name`, `target_vector` | `Gauge` | | `index_queue_wait_duration_ms` | Duration of waiting for the workers to finish. | `class_name`, `shard_name`, `target_vector` | `Summary` | +| `lsm_active_segments` | Number of currently present segments per shard. Granularity is shard of a class. Grouped by `strategy`. | `strategy`, `class_name`, `shard_name`, `path` | `Gauge` | +| `lsm_bloom_filter_duration_ms` | Duration of a bloom filter operation per shard in ms. Granularity is shard of a class. Grouped by `strategy`. | `operation`, `strategy`, `class_name`, `shard_name` | `Histogram` | +| `lsm_segment_count` | Number of segments by level | `strategy`, `class_name`, `shard_name`, `path`, `level` | `Gauge` | +| `lsm_segment_objects` | Number of entries per LSM segment by level. Granularity is shard of a class. Grouped by `strategy` and `level`. | `operation`, `strategy`, `class_name`, `shard_name`, `path`, `level` | `Gauge` | +| `lsm_segment_size` | Size of LSM segment by level and unit. | `strategy`, `class_name`, `shard_name`, `path`, `level`, `unit` | `Gauge` | +| `object_count` | Numbers of objects present. Granularity is a shard of a class | `class_name`, `shard_name` | `Gauge` | +| `objects_durations_ms` | Duration of an individual object operation, such as `put`, `delete`, etc. as indicated by the `operation` label, also as part of a batch. The `step` label adds additional precisions to each `operation`. Granularity is a shard of a class. | `class_name`, `shard_name` | `Histogram` | +| `requests_total` | Metric that tracks all user requests to determine if it was successful or failed. | `api`, `query_type`, `class_name` | `GaugeVec` | +| `startup_diskio_throughput` | Disk I/O throughput in bytes/s at startup operations, such as reading back the HNSW index or recovering LSM segments. The operation itself is defined by the `operation` label. | `operation`, `step`, `class_name`, `shard_name` | `Histogram` | +| `startup_durations_ms` | Duration of individual startup operations in ms. The operation itself is defined through the `operation` label. | `operation`, `class_name`, `shard_name` | `Histogram` | +| `vector_index_durations_ms` | Duration of regular vector index operation, such as insert or delete. The operation itself is defined through the `operation` label. The `step` label adds more granularity to each operation. | `operation`, `step`, `class_name`, `shard_name` | `Histogram` | +| `vector_index_maintenance_durations_ms` | Duration of a sync or async vector index maintenance operation. The operation itself is defined through the `operation` label. | `opeartion`, `class_name`, `shard_name` | `Histogram` | +| `vector_index_operations` | Total number of mutating operations on the vector index. The operation itself is defined by the `operation` label. | `operation`, `class_name`, `shard_name` | `Gauge` | +| `vector_index_size` | The total capacity of the vector index. Typically larger than the number of vectors imported as it grows proactively. | `class_name`, `shard_name` | `Gauge` | +| `vector_index_tombstone_cleaned` | Total number of deleted and removed vectors after repair operations. | `class_name`, `shard_name` | `Counter` | +| `vector_index_tombstone_cleanup_threads` | Number of currently active threads for repairing/cleaning up the vector index after deletes have occurred. | `class_name`, `shard_name` | `Gauge` | +| `vector_index_tombstones` | Number of currently active tombstones in the vector index. Will go up on each incoming delete and go down after a completed repair operation. | `class_name`, `shard_name` | `Gauge` | +| `weaviate_build_info` | Provides general information about the build (What version is currently running? How long has this version been running, etc) | `version`, `revision`, `branch`, `goVersion` | | +| `weaviate_runtime_config_hash` | Hash value of the currently active runtime configuration, useful for tracking when new configurations take effect. | `sha256` | `GaugeVec` | +| `weaviate_runtime_config_last_load_success` | Indicates whether the last loading attempt was successful (`1` for success, `0` for failure). | | `Gauge` | +| `weaviate_schema_collections` | Shows the total number of collections at any given point. | | | +| `weaviate_schema_shards` | Shows the total number of shards at any given point. | `status(HOT, COLD, WARM, FROZEN)` | | +| `weaviate_internal_sample_memberlist_queue_broadcasts` | Shows the number of messages in the broadcast queue of Memberlist. | `quantile=0.5, 0.9, 0.99` | `Summary` | +| `weaviate_internal_timer_memberlist_gossip` | Shows the latency distribution of the each gossip made in Memberlist. | `quantile=0.5, 0.9, 0.99` | `Summary` | +| `weaviate_internal_counter_raft_apply` | Number of transactions in the configured interval. | | `counter` | +| `weaviate_internal_counter_raft_state_candidate` | Number of times the raft server initiated an election. | | `counter` | +| `weaviate_internal_counter_raft_state_follower` | Number of times in the configured interval that the raft server became a follower. | | `summary` | +| `weaviate_internal_counter_raft_state_leader` | Number of times the raft server became a leader. | | `counter` | +| `weaviate_internal_counter_raft_transition_heartbeat_timeout` | Number of times that the node transitioned to `candidate` state after not receiving a heartbeat message from the last known leader. | | `summary` | +| `weaviate_internal_gauge_raft_commitNumLogs` | Number of logs processed for application to the finite state machine in a single batch. | | `gauge` | +| `weaviate_internal_gauge_raft_leader_dispatchNumLogs` | Number of logs committed to disk in the most recent batch. | | `gauge` | +| `weaviate_internal_gauge_raft_leader_oldestLogAge` | | | `gauge` | +| `weaviate_internal_gauge_raft_peers` | The number of peers in the raft cluster configuration. | | `gauge` | +| `weaviate_internal_sample_raft_boltdb_logBatchSize` | | | | +| `weaviate_internal_sample_raft_boltdb_logSize` | | | | +| `weaviate_internal_sample_raft_boltdb_logsPerBatch` | | | | +| `weaviate_internal_sample_raft_boltdb_writeCapacity` | | | | +| `weaviate_internal_sample_raft_thread_fsm_saturation` | | | | +| `weaviate_internal_sample_raft_thread_main_saturation` | | | | +| `weaviate_internal_timer_raft_boltdb_getLog` | | | | +| `weaviate_internal_timer_raft_boltdb_storeLogs` | Time required to record any outstanding logs since the last request to append entries for the given node. | | `timer` | +| `weaviate_internal_timer_raft_commitTime` | Time required to commit a new entry to the raft log on the leader node. | | `summary` | +| `weaviate_internal_timer_raft_fsm_apply` | Number of logs committed by the finite state machine since the last interval. | | `summary` | +| `weaviate_internal_timer_raft_fsm_enqueue` | Time required to queue up a batch of logs for the finite state machine to apply. | | `summary` | +| `weaviate_internal_timer_raft_leader_dispatchLog` | Time required for the leader node to write a log entry to disk. | | `timer` | Extending Weaviate with new metrics is very easy. To suggest a new metric, see the [contributor guide](/docs/contributor-guide). From 02cf4e7fc11974d9717b5efd6d87139ce8e1832a Mon Sep 17 00:00:00 2001 From: DanielleWashington <dwashington.100292@gmail.com> Date: Fri, 16 May 2025 14:22:14 -0400 Subject: [PATCH 39/39] final phase 1 changes --- docs/academy/deployment/k8s/90_next_steps.mdx | 4 +- .../academy/js/_snippets/intro_next_steps.mdx | 2 +- .../js/_snippets/intro_next_steps_js.mdx | 2 +- .../academy/py/_snippets/intro_next_steps.mdx | 2 +- docs/academy/py/multitenancy/200_setup.mdx | 2 +- .../101_hello_weaviate/40_set_up.mdx | 2 +- .../103_schema_and_imports/20_schema.mdx | 2 +- .../101_hello_weaviate/90_next_steps.mdx | 2 +- docs/cloud/manage-clusters/create.mdx | 2 +- docs/contributor-guide/weaviate-core/setup.md | 2 +- docs/deploy/config-guides/async-rep.md | 2 +- docs/deploy/config-guides/env-vars/index.md | 8 +- .../config-guides/horizontal-scaling.mdx | 2 +- docs/deploy/config-guides/index.mdx | 84 +++- .../config-guides}/meta.md | 0 docs/deploy/config-guides/modules.md | 152 ------ .../config-guides}/oidc.md | 0 docs/deploy/config-guides/replication.md | 2 +- .../config-guides}/status.md | 0 .../config-guides}/telemetry.md | 0 .../docker-installation.md | 2 +- docs/weaviate/concepts/cluster.md | 2 +- .../concepts/indexing/vector-index.md | 2 +- .../cluster-architecture.md | 2 +- .../replication-architecture/consistency.md | 2 +- .../replication-architecture/index.md | 4 +- docs/weaviate/config-refs/index.mdx | 47 -- docs/weaviate/config-refs/schema/index.md | 2 +- .../_enterprise-usage-collector.md | 2 +- docs/weaviate/configuration/index.md | 2 +- docs/weaviate/configuration/index.mdx | 2 +- docs/weaviate/configuration/monitoring.md | 143 ------ docs/weaviate/configuration/persistence.md | 113 ----- .../configuration/rbac/manage-users.mdx | 2 +- docs/weaviate/configuration/replication.md | 131 ------ docs/weaviate/index.mdx | 4 +- docs/weaviate/installation/docker-compose.md | 439 ------------------ docs/weaviate/installation/index.md | 6 +- docs/weaviate/installation/kubernetes.md | 265 ----------- .../manage-collections/multi-node-setup.mdx | 4 +- .../model-providers/anthropic/generative.md | 2 +- .../model-providers/anyscale/generative.md | 2 +- .../model-providers/aws/embeddings.md | 2 +- .../model-providers/aws/generative.md | 2 +- .../cohere/embeddings-multimodal.md | 2 +- .../model-providers/cohere/embeddings.md | 2 +- .../model-providers/cohere/generative.md | 2 +- .../model-providers/cohere/reranker.md | 2 +- .../model-providers/databricks/embeddings.md | 2 +- .../model-providers/databricks/generative.md | 2 +- .../model-providers/friendliai/generative.md | 2 +- .../google/embeddings-multimodal.md | 2 +- .../model-providers/google/embeddings.md | 2 +- .../model-providers/google/generative.md | 2 +- .../model-providers/gpt4all/embeddings.md | 4 +- .../model-providers/huggingface/embeddings.md | 2 +- .../imagebind/embeddings-multimodal.md | 4 +- .../jinaai/embeddings-colbert.md | 2 +- .../jinaai/embeddings-multimodal.md | 2 +- .../model-providers/jinaai/embeddings.md | 2 +- .../model-providers/jinaai/reranker.md | 2 +- .../model-providers/kubeai/embeddings.md | 2 +- .../model-providers/kubeai/generative.md | 2 +- .../model-providers/mistral/embeddings.md | 2 +- .../model-providers/mistral/generative.md | 2 +- .../nvidia/embeddings-multimodal.md | 2 +- .../model-providers/nvidia/embeddings.md | 2 +- .../model-providers/nvidia/generative.md | 2 +- .../model-providers/nvidia/reranker.md | 2 +- .../model-providers/octoai/embeddings.md | 2 +- .../model-providers/octoai/generative.md | 2 +- .../model-providers/ollama/embeddings.md | 2 +- .../model-providers/ollama/generative.md | 2 +- .../openai-azure/embeddings.md | 2 +- .../openai-azure/generative.md | 2 +- .../model-providers/openai/embeddings.md | 2 +- .../model-providers/openai/generative.md | 2 +- .../transformers/embeddings-multimodal.md | 4 +- .../transformers/embeddings.md | 4 +- .../model-providers/transformers/reranker.md | 4 +- .../voyageai/embeddings-multimodal.md | 2 +- .../model-providers/voyageai/embeddings.md | 2 +- .../model-providers/voyageai/reranker.md | 2 +- .../model-providers/xai/generative.md | 2 +- docs/weaviate/modules/custom-modules.md | 2 +- docs/weaviate/modules/img2vec-neural.md | 2 +- docs/weaviate/modules/index.md | 2 +- .../modules/text2vec-contextionary.md | 2 +- .../recipes/generative_search_nvidia.md | 2 +- .../weaviate/recipes/hybrid_search_mistral.md | 2 +- docs/weaviate/starter-guides/generative.md | 2 +- .../weaviate/starter-guides/which-weaviate.md | 8 +- secondaryNavbar.js | 2 +- sidebars.js | 150 ++++-- 94 files changed, 283 insertions(+), 1437 deletions(-) rename docs/{weaviate/config-refs => deploy/config-guides}/meta.md (100%) delete mode 100644 docs/deploy/config-guides/modules.md rename docs/{weaviate/config-refs => deploy/config-guides}/oidc.md (100%) rename docs/{weaviate/config-refs => deploy/config-guides}/status.md (100%) rename docs/{weaviate/config-refs => deploy/config-guides}/telemetry.md (100%) delete mode 100644 docs/weaviate/configuration/monitoring.md delete mode 100644 docs/weaviate/configuration/persistence.md delete mode 100644 docs/weaviate/configuration/replication.md delete mode 100644 docs/weaviate/installation/docker-compose.md delete mode 100644 docs/weaviate/installation/kubernetes.md diff --git a/docs/academy/deployment/k8s/90_next_steps.mdx b/docs/academy/deployment/k8s/90_next_steps.mdx index beded78a..43847199 100644 --- a/docs/academy/deployment/k8s/90_next_steps.mdx +++ b/docs/academy/deployment/k8s/90_next_steps.mdx @@ -24,14 +24,14 @@ If you are interested in the architecture behind replication and sharding, pleas Then, check out the section on [resource planning](/docs/weaviate/concepts/resources.md) to estimate how much resources each node of a particular size might be able to handle, and how to plan your cluster accordingly. -If you have replication configured, you can apply [tunable consistency](/docs/weaviate/configuration/replication.md) concepts to read/write operations as well as queries. +If you have replication configured, you can apply [tunable consistency](docs/deploy/config-guides/replication.md) concepts to read/write operations as well as queries. ### Further reading - How-to guides - - The [How-to: Manage collections](/docs/weaviate/manage-collections/index.mdx) and [How-to: Manage objects](/docs/weaviate/manage-objects/index.mdx) guides show how to perform data operations (i.e. create, read, update, delete collections and objects within them).. - [How-to: search](/docs/weaviate/search/index.mdx): Code examples for all types of search operations. - - [How-to: configure Weaviate](/docs/weaviate/configuration/index.mdx): Guides for configuring Weaviate, such as [PQ](/docs/weaviate/configuration/compression/pq-compression.md) and [BQ](/docs/weaviate/configuration/compression/bq-compression.md) compression, [backups](docs/deploy/config-guides/backups.md) and [replication](/docs/weaviate/configuration/replication.md). + - [How-to: configure Weaviate](/docs/weaviate/configuration/index.mdx): Guides for configuring Weaviate, such as [PQ](/docs/weaviate/configuration/compression/pq-compression.md) and [BQ](/docs/weaviate/configuration/compression/bq-compression.md) compression, [backups](docs/deploy/config-guides/backups.md) and [replication](docs/deploy/config-guides/replication.md). - [Concepts guides](/docs/weaviate/concepts/index.md): Guides for understanding Weaviate's architecture and concepts. - [API reference](/docs/weaviate/api/index.mdx): Detailed information about Weaviate's APIs. diff --git a/docs/academy/js/_snippets/intro_next_steps.mdx b/docs/academy/js/_snippets/intro_next_steps.mdx index 0fb1baad..38652e4e 100644 --- a/docs/academy/js/_snippets/intro_next_steps.mdx +++ b/docs/academy/js/_snippets/intro_next_steps.mdx @@ -9,7 +9,7 @@ Some of our more popular resources include: - How-to guides - The [How-to: Manage collections](/docs/weaviate/manage-collections/index.mdx) and [How-to: Manage objects](/docs/weaviate/manage-objects/index.mdx) guides show how to perform data operations (i.e. create, read, update, delete collections and objects within them).. - [How-to: search](/docs/weaviate/search/index.mdx): Code examples for all types of search operations. - - [How-to: configure Weaviate](/docs/weaviate/configuration/index.mdx): Guides for configuring Weaviate, such as [PQ](/docs/weaviate/configuration/compression/pq-compression.md) and [BQ](/docs/weaviate/configuration/compression/bq-compression.md) compression, [backups](docs/deploy/config-guides/backups.md) and [replication](/docs/weaviate/configuration/replication.md). + - [How-to: configure Weaviate](/docs/weaviate/configuration/index.mdx): Guides for configuring Weaviate, such as [PQ](/docs/weaviate/configuration/compression/pq-compression.md) and [BQ](/docs/weaviate/configuration/compression/bq-compression.md) compression, [backups](docs/deploy/config-guides/backups.md) and [replication](docs/deploy/config-guides/replication.md). - [Concepts guides](/docs/weaviate/concepts/index.md): Guides for understanding Weaviate's architecture and concepts. - [API reference](/docs/weaviate/api/index.mdx): Detailed information about Weaviate's APIs. diff --git a/docs/academy/js/_snippets/intro_next_steps_js.mdx b/docs/academy/js/_snippets/intro_next_steps_js.mdx index aed9bb8e..88969c59 100644 --- a/docs/academy/js/_snippets/intro_next_steps_js.mdx +++ b/docs/academy/js/_snippets/intro_next_steps_js.mdx @@ -9,7 +9,7 @@ Some of our more popular resources include: - How-to guides - The [How-to: Manage collections](/docs/weaviate/manage-collections/index.mdx) and [How-to: Manage objects](/docs/weaviate/manage-objects/index.mdx) guides show how to perform data operations (i.e. create, read, update, delete collections and objects within them).. - [How-to: search](/docs/weaviate/search/index.mdx): Code examples for all types of search operations. - - [How-to: configure Weaviate](/docs/weaviate/configuration/index.mdx): Guides for configuring Weaviate, such as [PQ](/docs/weaviate/configuration/compression/pq-compression.md) and [BQ](/docs/weaviate/configuration/compression/bq-compression.md) compression, [backups](docs/deploy/config-guides/backups.md) and [replication](/docs/weaviate/configuration/replication.md). + - [How-to: configure Weaviate](/docs/weaviate/configuration/index.mdx): Guides for configuring Weaviate, such as [PQ](/docs/weaviate/configuration/compression/pq-compression.md) and [BQ](/docs/weaviate/configuration/compression/bq-compression.md) compression, [backups](docs/deploy/config-guides/backups.md) and [replication](docs/deploy/config-guides/replication.md). - [Concepts guides](/docs/weaviate/concepts/index.md): Guides for understanding Weaviate's architecture and concepts. - [API reference](/docs/weaviate/api/index.mdx): Detailed information about Weaviate's APIs. diff --git a/docs/academy/py/_snippets/intro_next_steps.mdx b/docs/academy/py/_snippets/intro_next_steps.mdx index 4c52713b..6e6ad0b9 100644 --- a/docs/academy/py/_snippets/intro_next_steps.mdx +++ b/docs/academy/py/_snippets/intro_next_steps.mdx @@ -9,7 +9,7 @@ Some of our more popular resources include: - How-to guides - The [How-to: Manage collections](/docs/weaviate/manage-collections/index.mdx) and [How-to: Manage objects](/docs/weaviate/manage-objects/index.mdx) guides show how to perform data operations (i.e. create, read, update, delete collections and objects within them).. - [How-to: search](/docs/weaviate/search/index.mdx): Code examples for all types of search operations. - - [How-to: configure Weaviate](/docs/weaviate/configuration/index.mdx): Guides for configuring Weaviate, such as [PQ](/docs/weaviate/configuration/compression/pq-compression.md) and [BQ](/docs/weaviate/configuration/compression/bq-compression.md) compression, [backups](docs/deploy/config-guides/backups.md) and [replication](/docs/weaviate/configuration/replication.md). + - [How-to: configure Weaviate](/docs/weaviate/configuration/index.mdx): Guides for configuring Weaviate, such as [PQ](/docs/weaviate/configuration/compression/pq-compression.md) and [BQ](/docs/weaviate/configuration/compression/bq-compression.md) compression, [backups](docs/deploy/config-guides/backups.md) and [replication](docs/deploy/config-guides/replication.md). - [Concepts guides](/docs/weaviate/concepts/index.md): Guides for understanding Weaviate's architecture and concepts. - [API reference](/docs/weaviate/api/index.mdx): Detailed information about Weaviate's APIs. diff --git a/docs/academy/py/multitenancy/200_setup.mdx b/docs/academy/py/multitenancy/200_setup.mdx index e4350e1f..1e447969 100644 --- a/docs/academy/py/multitenancy/200_setup.mdx +++ b/docs/academy/py/multitenancy/200_setup.mdx @@ -178,7 +178,7 @@ services: ### <i class="fa-solid fa-chalkboard"></i> Configuration highlights -You may have seen Docker configurations elsewhere ([e.g. Docs](../../../weaviate/installation/docker-compose.md), [Academy](../starter_text_data/101_setup_weaviate/20_create_instance/20_create_docker.mdx)). But these highlighted configurations may be new to you: +You may have seen Docker configurations elsewhere ([e.g. Docs](docs/deploy/installation-guides/docker-installation.md), [Academy](../starter_text_data/101_setup_weaviate/20_create_instance/20_create_docker.mdx)). But these highlighted configurations may be new to you: - `ASYNC_INDEXING`: This will enable asynchronous indexing. This is useful for high-volume data insertion, and enables us to use the `dynamic` index type, which you will learn about later on. - `ENABLE_MODULES`: We enable `offload-s3` to demonstrate tenant offloading later on. Offloading helps us to manage inactive users' data efficiently. diff --git a/docs/academy/py/zero_to_mvp/101_hello_weaviate/40_set_up.mdx b/docs/academy/py/zero_to_mvp/101_hello_weaviate/40_set_up.mdx index 528c751d..d7d25daf 100644 --- a/docs/academy/py/zero_to_mvp/101_hello_weaviate/40_set_up.mdx +++ b/docs/academy/py/zero_to_mvp/101_hello_weaviate/40_set_up.mdx @@ -39,7 +39,7 @@ Running your own instance provides you with the same Weaviate code base as a WCD This course doesn't cover self-managed instances. We will cover Docker and Kubernetes in separate course units in the future. -If you are familiar with either solution and want to use them to install Weaviate now, see the documentation for [Docker-Compose](/docs/weaviate/installation/docker-compose.md) or [Kubernetes](/docs/weaviate/installation/kubernetes.md). +If you are familiar with either solution and want to use them to install Weaviate now, see the documentation for [Docker-Compose](docs/deploy/installation-guides/docker-installation.md) or [Kubernetes](docs/deploy/installation-guides/k8s-installation.md). ### <i class="fa-solid fa-chalkboard"></i> Embedded Weaviate diff --git a/docs/academy/py/zero_to_mvp/103_schema_and_imports/20_schema.mdx b/docs/academy/py/zero_to_mvp/103_schema_and_imports/20_schema.mdx index bc295f92..b847bb8e 100644 --- a/docs/academy/py/zero_to_mvp/103_schema_and_imports/20_schema.mdx +++ b/docs/academy/py/zero_to_mvp/103_schema_and_imports/20_schema.mdx @@ -122,7 +122,7 @@ Modules are enabled at the instance level through its configuration. You can see :::info What is a `module`, exactly? By now, you've probably seen mentions of Weaviate `modules` here and there. Modules are optional Weaviate components used to enhance and customize its capabilities.<p><br/></p> -Weaviate Academy units will generally assume WCD usage, which is pre-configured with a set of modules. We will cover how to enable modules for local instances in another unit, or you can see our [Docker installation page](/docs/weaviate/installation/docker-compose.md). +Weaviate Academy units will generally assume WCD usage, which is pre-configured with a set of modules. We will cover how to enable modules for local instances in another unit, or you can see our [Docker installation page](docs/deploy/installation-guides/docker-installation.md). ::: WCD instances come pre-configured with a number of modules. For example, the response below shows that the `text2vec-openai` module is available, so we can use it in our schema. diff --git a/docs/academy/theory/101_hello_weaviate/90_next_steps.mdx b/docs/academy/theory/101_hello_weaviate/90_next_steps.mdx index 6ddc7d52..af611ca1 100644 --- a/docs/academy/theory/101_hello_weaviate/90_next_steps.mdx +++ b/docs/academy/theory/101_hello_weaviate/90_next_steps.mdx @@ -23,7 +23,7 @@ And for TypeScript/JavaScript: - How-to guides - The [How-to: Manage collections](/docs/weaviate/manage-collections/index.mdx) and [How-to: Manage objects](/docs/weaviate/manage-objects/index.mdx) guides show how to perform data operations (i.e. create, read, update, delete collections and objects within them).. - [How-to: search](/docs/weaviate/search/index.mdx): Code examples for all types of search operations. - - [How-to: configure Weaviate](/docs/weaviate/configuration/index.mdx): Guides for configuring Weaviate, such as [PQ](/docs/weaviate/configuration/compression/pq-compression.md) and [BQ](/docs/weaviate/configuration/compression/bq-compression.md) compression, [backups](docs/deploy/config-guides/backups.md) and [replication](/docs/weaviate/configuration/replication.md). + - [How-to: configure Weaviate](/docs/weaviate/configuration/index.mdx): Guides for configuring Weaviate, such as [PQ](/docs/weaviate/configuration/compression/pq-compression.md) and [BQ](/docs/weaviate/configuration/compression/bq-compression.md) compression, [backups](docs/deploy/config-guides/backups.md) and [replication](docs/deploy/config-guides/replication.md). - [Concepts guides](/docs/weaviate/concepts/index.md): Guides for understanding Weaviate's architecture and concepts. - [API reference](/docs/weaviate/api/index.mdx): Detailed information about Weaviate's APIs. diff --git a/docs/cloud/manage-clusters/create.mdx b/docs/cloud/manage-clusters/create.mdx index e66eb4d7..3af981a1 100644 --- a/docs/cloud/manage-clusters/create.mdx +++ b/docs/cloud/manage-clusters/create.mdx @@ -130,7 +130,7 @@ The following advanced configuration settings are available: <code><Link to="/docs/weaviate/concepts/vector-index#asynchronous-indexing">Enable async indexing</Link></code> </li> <li> - <code><Link to="/docs/weaviate/configuration/replication#async-replication-settings">Enable async replication</Link></code> + <code><Link to="/docs/deploy/config-guides/replication#async-replication-settings">Enable async replication</Link></code> </li> <li> <code>Allow all CORS origins</code> diff --git a/docs/contributor-guide/weaviate-core/setup.md b/docs/contributor-guide/weaviate-core/setup.md index fe625c50..db171ea2 100644 --- a/docs/contributor-guide/weaviate-core/setup.md +++ b/docs/contributor-guide/weaviate-core/setup.md @@ -53,7 +53,7 @@ tools/dev/restart_dev_environment.sh --prometheus && tools/dev/run_dev_server.sh ``` :::info -This setup is for contributors to the Weaviate code base. If you are an end-user of Weaviate looking for a Prometheus-enabled example, please see [this documentation page](/docs/weaviate/configuration/monitoring.md) or this [example](https://github.com/weaviate/weaviate-examples/tree/main/monitoring-prometheus-grafana). +This setup is for contributors to the Weaviate code base. If you are an end-user of Weaviate looking for a Prometheus-enabled example, please see [this documentation page](/docs/deploy/config-guides/monitoring.md) or this [example](https://github.com/weaviate/weaviate-examples/tree/main/monitoring-prometheus-grafana). ::: Below are more examples of running Weaviate with Docker. diff --git a/docs/deploy/config-guides/async-rep.md b/docs/deploy/config-guides/async-rep.md index 34ac5ffb..2743c863 100644 --- a/docs/deploy/config-guides/async-rep.md +++ b/docs/deploy/config-guides/async-rep.md @@ -168,7 +168,7 @@ Sets the maximum time allowed for a single propagation request (sending actual o - [Concepts: Replication](https://weaviate.io/developers/weaviate/concepts/replication-architecture/consistency) -- [Replication How-To](https://weaviate.io/developers/weaviate/configuration/replication#async-replication-settings) +- [Replication How-To](docs/deploy/config-guides/replication.md#async-replication-settings) - [Environment Variables](docs/deploy/config-guides/env-vars/index.md#async-replication) diff --git a/docs/deploy/config-guides/env-vars/index.md b/docs/deploy/config-guides/env-vars/index.md index 0b31a99c..8a02ae3c 100644 --- a/docs/deploy/config-guides/env-vars/index.md +++ b/docs/deploy/config-guides/env-vars/index.md @@ -35,9 +35,9 @@ import APITable from '@site/src/components/APITable'; | `RAFT_ENABLE_ONE_NODE_RECOVERY` | Enable running the single node recovery routine on restart. This is useful if the default hostname has changed and a single node cluster believes there are supposed to be two nodes. | `boolean` | `false` | | `DEFAULT_VECTORIZER_MODULE` | Default vectorizer module - will be overridden by any class-level value defined in the schema | `string` | `text2vec-contextionary` | | `DISABLE_LAZY_LOAD_SHARDS` | New in v1.23. When `false`, enable lazy shard loading to improve mean time to recovery in multi-tenant deployments. | `string` | `false` | -| `DISABLE_TELEMETRY` | Disable [telemetry](docs/weaviate/config-refs/telemetry.md) data collection | boolean | `false` | -| `DISK_USE_READONLY_PERCENTAGE` | If disk usage is higher than the given percentage all shards on the affected node will be marked as `READONLY`, meaning all future write requests will fail. See [Disk Pressure Warnings and Limits for details](/docs/weaviate/configuration/persistence.md#disk-pressure-warnings-and-limits). | `string - number` | `90` | -| `DISK_USE_WARNING_PERCENTAGE` | If disk usage is higher than the given percentage a warning will be logged by all shards on the affected node's disk. See [Disk Pressure Warnings and Limits for details](/docs/weaviate/configuration/persistence.md#disk-pressure-warnings-and-limits). | `string - number` | `80` | +| `DISABLE_TELEMETRY` | Disable [telemetry](docs/deploy/config-guides/telemetry.md) data collection | boolean | `false` | +| `DISK_USE_READONLY_PERCENTAGE` | If disk usage is higher than the given percentage all shards on the affected node will be marked as `READONLY`, meaning all future write requests will fail. See [Disk Pressure Warnings and Limits for details](docs/deploy/config-guides/persistence.md#disk-pressure-warnings-and-limits). | `string - number` | `90` | +| `DISK_USE_WARNING_PERCENTAGE` | If disk usage is higher than the given percentage a warning will be logged by all shards on the affected node's disk. See [Disk Pressure Warnings and Limits for details](docs/deploy/config-guides/persistence.md#disk-pressure-warnings-and-limits). | `string - number` | `80` | | `ENABLE_API_BASED_MODULES` | Enable all API-based modules. (Experimental as of `v1.26.0`) | `boolean` | `true` | | `ENABLE_MODULES` | Specify Weaviate modules to enable | `string - comma separated names` | `text2vec-openai,generative-openai` | | `ENABLE_TOKENIZER_GSE` | Enable the [`GSE` tokenizer](/docs/weaviate/config-refs/schema/index.md#gse-and-trigram-tokenization-methods) for use | `boolean` | `true` | @@ -192,7 +192,7 @@ For more information on authentication and authorization, see the [Authenticatio :::info Added in `v1.29` The environment variables for configuring async replication have been introduced in `v1.29`. -To learn more about their usage, visit the **[replication how-to guide](/docs/weaviate/configuration/replication#async-replication-settings)**. +To learn more about their usage, visit the **[replication how-to guide](docs/deploy/config-guides/replication.md#async-replication-settings)**. ::: ```mdx-code-block diff --git a/docs/deploy/config-guides/horizontal-scaling.mdx b/docs/deploy/config-guides/horizontal-scaling.mdx index 9595f7a7..09173050 100644 --- a/docs/deploy/config-guides/horizontal-scaling.mdx +++ b/docs/deploy/config-guides/horizontal-scaling.mdx @@ -304,7 +304,7 @@ import RaftRFChangeWarning from '/_includes/1-25-replication-factor.mdx'; <RaftRFChangeWarning/> -Configure replication settings, such as [async replication](/docs/weaviate/configuration/replication#async-replication-settings) and [deletion resolution strategy](docs/weaviate/concepts/replication-architecture/consistency.md#deletion-resolution-strategies). +Configure replication settings, such as [async replication](docs/deploy/config-guides/replication.md#async-replication-settings) and [deletion resolution strategy](docs/weaviate/concepts/replication-architecture/consistency.md#deletion-resolution-strategies). <Tabs groupId="languages"> <TabItem value="py" label="Python Client v4"> diff --git a/docs/deploy/config-guides/index.mdx b/docs/deploy/config-guides/index.mdx index 8d9ba052..38e16444 100644 --- a/docs/deploy/config-guides/index.mdx +++ b/docs/deploy/config-guides/index.mdx @@ -9,26 +9,82 @@ Whether you are setting up a new environment or optimizing an existing one, conf ### Configuring your deployment -#### Environment Variables and Secrets Management -- Configure environment variables for connection strings, ports, and security credentials. +import CardsSection from "/src/components/CardsSection"; -#### Resource Limits and Autoscaling -- Set CPU and memory requests and limits for each service. +export const mainReferencesData = [ -#### Persistence and Storage Configuration -- Define volumes for persistent data. -- Enable backups and configure retention policies. + { + title: "Environment variables", + description: "Configure your environment variables for connection strings, ports, and security credentials", + link: "/docs/deploy/config-guides/env-vars", + icon: "fas fa-cog", + }, + { + title: "Scaling", + description: "Scale your deployment for high availability.", + link: "/docs/deploy/config-guides/horizontal-scaling", + icon: "fas fa-arrow-up-right-dots", + }, + { + title: "Persistence", + description: "Enable backups and configure retention policies.", + link: "/docs/deploy/config-guides/persistence", + icon: "fas fa-floppy-disk", + }, + { + title: "Monitoring, metrics, and logging", + description: "Monitor the status and health of your Weaviate instance.", + link: "/docs/deploy/config-guides/monitoring", + icon: "fas fa-chart-bar", + }, + { + title: "Access Management", + description: "Configure access management of your deployment.", + link: "/docs/deploy/config-guides/authentication", + icon: "fas fa-shield-halved", + }, + { + title: "Status", + description: "Monitor the status and health of your Weaviate instance.", + link: "/docs/deploy/config-guides/status", + icon: "fas fa-heartbeat", + }, + { + title: "Telemetry", + description: + "Understand how Weaviate telemetry works and how to configure it.", + link: "/docs/deploy/config-guides/telemetry", + icon: "fas fa-chart-line", + }, + { + title: "Cluster metadata", + description: "Access and manage metadata about your Weaviate cluster.", + link: "/docs/deploy/config-guides/meta", + icon: "fas fa-info-circle", + }, + { + title: "Cluster node data", + description: "View and manage data about individual nodes in your cluster.", + link: "/docs/deploy/config-guides/nodes", + icon: "fas fa-server", + }, + { + title: "OIDC Configuration", + description: + "Configure OpenID Connect for secure authentication with Weaviate.", + link: "/docs/deploy/config-guides/oidc", + icon: "fas fa-lock", + }, +] -#### Security Hardening -- Configure TLS/SSL certificates for encrypted communication. -- Use RBAC to restrict access to configuration endpoints and dashboards. - -#### Monitoring, Metrics, and Logging -- Set up metrics exporters and logging targets. -- Define alert thresholds based on config misalignment or performance drops. +<br /> +<CardsSection items={mainReferencesData} /> +<br /> ## Questions and feedback import DocsFeedback from '/_includes/docs-feedback.mdx'; <DocsFeedback/> + + diff --git a/docs/weaviate/config-refs/meta.md b/docs/deploy/config-guides/meta.md similarity index 100% rename from docs/weaviate/config-refs/meta.md rename to docs/deploy/config-guides/meta.md diff --git a/docs/deploy/config-guides/modules.md b/docs/deploy/config-guides/modules.md deleted file mode 100644 index 5a6e9950..00000000 --- a/docs/deploy/config-guides/modules.md +++ /dev/null @@ -1,152 +0,0 @@ ---- -title: Modules -image: og/docs/configuration.jpg -# tags: ['configuration', 'modules'] ---- - -Weaviate's functionality can be customized by using [modules](/docs/weaviate/modules/index.md). This page explains how to enable and configure modules. - -## Instance-level configuration - -At the instance (i.e. Weaviate cluster) level, you can: - -- Enable modules -- Configure the default vectorizer module -- Configure module-specific variables (e.g. API keys), where applicable - -This can be done by setting the appropriate [environment variables](docs/deploy/config-guides/env-vars/index.md) as shown below. - -:::tip What about WCD? -Weaviate Cloud (WCD) instances come with modules pre-configured. See [this page](/docs/cloud/manage-clusters/status#enabled-modules) for details. -::: - -### Enable individual modules - -You can enable modules by specifying the list of modules in the `ENABLE_MODULES` variable. For example, this code enables the `text2vec-transformers` module. - -```yaml -services: - weaviate: - environment: - ENABLE_MODULES: 'text2vec-transformers' -``` - -To enable multiple modules, add them in a comma-separated list. - -This example code enables the `'text2vec-huggingface`, `generative-cohere`, and `qna-openai` modules. - -```yaml -services: - weaviate: - environment: - ENABLE_MODULES: 'text2vec-huggingface,generative-cohere,qna-openai' -``` - -### Enable all API-based modules - -:::caution Experimental feature -Available starting in `v1.26.0`. This is an experimental feature. Use with caution. -::: - -You can enable all API-based modules by setting the `ENABLE_API_BASED_MODULES` variable to `true`. This will enable all API-based [model integrations](/docs/weaviate/model-providers/index.md), such as those for Anthropic, Cohere, OpenAI and so on by enabling the relevant modules. These modules are lightweight, so enabling them all will not significantly increase resource usage. - -```yaml -services: - weaviate: - environment: - ENABLE_API_BASED_MODULES: 'true' -``` - -The list of API-based modules can be found on the [model provider integrations page](/docs/weaviate/model-providers/index.md#api-based). You can also inspect the [source code](https://github.com/weaviate/weaviate/blob/main/adapters/handlers/rest/configure_api.go) where the list is defined. - -This can be combined with enabling individual modules. For example, the example below enables all API-based modules, Ollama modules and the `backup-s3` module. - -```yaml -services: - weaviate: - environment: - ENABLE_API_BASED_MODULES: 'true' - ENABLE_MODULES: 'text2vec-ollama,generative-ollama,backup-s3' -``` - -Note that enabling multiple vectorizer (e.g. `text2vec`, `multi2vec`) modules will disable the [`Explore` functionality](/docs/weaviate/api/graphql/explore.md). If you need to use `Explore`, you should only enable one vectorizer module. - -### Module-specific variables - -You may need to specify additional environment variables to configure each module where applicable. For example, the `backup-s3` module requires the backup S3 bucket to be set via `BACKUP_S3_BUCKET`, and the `text2vec-contextionary` module requires the inference API location via `TRANSFORMERS_INFERENCE_API`. - -Refer to the individual [module documentation](docs/weaviate/modules/index.md) for more details. - -## Vectorizer modules - -The [vectorization integration](docs/weaviate/model-providers/index.md) enable Weaviate to vectorize data at import, and to perform [`near<Media>`](/docs/weaviate/search/similarity.md) searches such as `nearText` or `nearImage`. - -:::info List of available vectorizer integrations -Can be found [in this section](/docs/weaviate/model-providers/index.md). -::: - -### Enable vectorizer modules - -You can enable vectorizer modules by adding them to the `ENABLE_MODULES` environment variable. For example, this code enables the `text2vec-cohere`, `text2vec-huggingface`, and `text2vec-openai` vectorizer modules. - -```yaml -services: - weaviate: - environment: - ENABLE_MODULES: 'text2vec-cohere,text2vec-huggingface,text2vec-openai' -``` - -### Default vectorizer module - -You can specify a default vectorization module with the `DEFAULT_VECTORIZER_MODULE` variable as below. - -If a default vectorizer module is not set, you must set a vectorizer in the schema before you can use `near<Media>` or vectorization at import time. - -This code sets `text2vec-huggingface` as the default vectorizer. Thus, `text2vec-huggingface` module will be used unless another vectorizer is specified for that class. - -``` yaml -services: - weaviate: - environment: - DEFAULT_VECTORIZER_MODULE: text2vec-huggingface -``` - -## Generative model integrations - -The [generative model integrations](/docs/weaviate/model-providers/index.md) enable [retrieval augmented generation](/docs/weaviate/search/generative.md) functions. - -### Enable a generative module - -You can enable generative modules by adding the desired module to the `ENABLE_MODULES` environment variable. For example, this code enables the `generative-cohere` module and the `text2vec-huggingface` vectorizer module. - -```yaml -services: - weaviate: - environment: - ENABLE_MODULES: 'text2vec-huggingface,generative-cohere' -``` - -:::tip `generative` module selection unrelated to `text2vec` module selection -Your choice of the `text2vec` module does not restrict your choice of `generative` module, or vice versa. -::: - -## Tenant offload modules - -Tenants can be offloaded to cold storage to reduce memory and disk usage, and onloaded back when needed. - -See the [dedicated page on tenant offloading](/docs/weaviate/configuration/tenant-offloading.md) for more information on how to configure Weaviate for tenant offloading. For information on how to offload and onload tenants, see [How-to: manage tenant states](docs/weaviate/manage-collections/tenant-states.mdx). - -## Custom modules - -See [here](/docs/weaviate/concepts/modules.md) how you can create and use your own modules. - -## Related pages - -- [Concepts: Modules](/docs/weaviate/concepts/modules.md) -- [References: Modules](/docs/weaviate/modules/index.md) - -## Questions and feedback - -import DocsFeedback from '/_includes/docs-feedback.mdx'; - -<DocsFeedback/> diff --git a/docs/weaviate/config-refs/oidc.md b/docs/deploy/config-guides/oidc.md similarity index 100% rename from docs/weaviate/config-refs/oidc.md rename to docs/deploy/config-guides/oidc.md diff --git a/docs/deploy/config-guides/replication.md b/docs/deploy/config-guides/replication.md index 8aeeb901..a3091817 100644 --- a/docs/deploy/config-guides/replication.md +++ b/docs/deploy/config-guides/replication.md @@ -25,7 +25,7 @@ To enable replication, you can set one or both of the following: The `REPLICATION_MINIMUM_FACTOR` environment variable sets the minimum replication factor for all collections in the Weaviate instance. -If you set the [replication factor for a collection](/docs/weaviate/configuration/replication.md#replication-factor-for-a-collection), the collection's replication factor overrides the minimum replication factor. +If you set the [replication factor for a collection](docs/deploy/config-guides/persistence.md#replication-factor-for-a-collection), the collection's replication factor overrides the minimum replication factor. ## Data consistency diff --git a/docs/weaviate/config-refs/status.md b/docs/deploy/config-guides/status.md similarity index 100% rename from docs/weaviate/config-refs/status.md rename to docs/deploy/config-guides/status.md diff --git a/docs/weaviate/config-refs/telemetry.md b/docs/deploy/config-guides/telemetry.md similarity index 100% rename from docs/weaviate/config-refs/telemetry.md rename to docs/deploy/config-guides/telemetry.md diff --git a/docs/deploy/installation-guides/docker-installation.md b/docs/deploy/installation-guides/docker-installation.md index ebadaffa..1577bb51 100644 --- a/docs/deploy/installation-guides/docker-installation.md +++ b/docs/deploy/installation-guides/docker-installation.md @@ -289,7 +289,7 @@ And the other members' configurations may look like this: RAFT_BOOTSTRAP_EXPECT: 3 ``` -Below is an example configuration for a 3-node setup. You may be able to test [replication](/docs/weaviate/configuration/replication.md) examples locally using this configuration. +Below is an example configuration for a 3-node setup. You may be able to test [replication](docs/deploy/config-guides/replication.md) examples locally using this configuration. <details> diff --git a/docs/weaviate/concepts/cluster.md b/docs/weaviate/concepts/cluster.md index 4ec71ce4..17837042 100644 --- a/docs/weaviate/concepts/cluster.md +++ b/docs/weaviate/concepts/cluster.md @@ -72,7 +72,7 @@ Example - assume the following scenario: A class is comprised of 4 shards and ta By default, Weaviate nodes in a cluster use a gossip-like protocol through [Hashicorp's Memberlist](https://github.com/hashicorp/memberlist) to communicate node state and failure scenarios. -Weaviate - especially when running as a cluster - is optimized to run on Kubernetes. The [Weaviate Helm chart](/docs/weaviate/installation/kubernetes.md#weaviate-helm-chart) makes use of a `StatefulSet` and a headless `Service` that automatically configures node discovery. All you have to do is specify the desired node count. +Weaviate - especially when running as a cluster - is optimized to run on Kubernetes. The [Weaviate Helm chart](docs/deploy/installation-guides/k8s-installation.md#weaviate-helm-chart) makes use of a `StatefulSet` and a headless `Service` that automatically configures node discovery. All you have to do is specify the desired node count. <details> <summary>FQDN for node discovery</summary> diff --git a/docs/weaviate/concepts/indexing/vector-index.md b/docs/weaviate/concepts/indexing/vector-index.md index 5299115d..d1a68c02 100644 --- a/docs/weaviate/concepts/indexing/vector-index.md +++ b/docs/weaviate/concepts/indexing/vector-index.md @@ -136,7 +136,7 @@ The resulting search list has these characteristics. - A maximum length of 25 objects ("dynamicEfMax": 25). - An actual size of 5 to 25 objects. -If you use the [`docker-compose.yml` file from Weaviate](../../installation/docker-compose.md) to run your local instance, the `QUERY_DEFAULTS_LIMIT` environment variable sets a reasonable default query limit. To prevent out of memory errors,`QUERY_DEFAULTS_LIMIT` is significantly lower than `QUERY_MAXIMUM_RESULTS`. +If you use the [`docker-compose.yml` file from Weaviate](docs/deploy/installation-guides/docker-installation.md) to run your local instance, the `QUERY_DEFAULTS_LIMIT` environment variable sets a reasonable default query limit. To prevent out of memory errors,`QUERY_DEFAULTS_LIMIT` is significantly lower than `QUERY_MAXIMUM_RESULTS`. To change the default limit, edit the value for `QUERY_DEFAULTS_LIMIT` when you configure your Weaviate instance. diff --git a/docs/weaviate/concepts/replication-architecture/cluster-architecture.md b/docs/weaviate/concepts/replication-architecture/cluster-architecture.md index cc6c17f7..21e8e972 100644 --- a/docs/weaviate/concepts/replication-architecture/cluster-architecture.md +++ b/docs/weaviate/concepts/replication-architecture/cluster-architecture.md @@ -14,7 +14,7 @@ In Weaviate, metadata replication and data replication are separate. For the met By default, Weaviate nodes in a cluster use a gossip-like protocol through [Hashicorp's Memberlist](https://github.com/hashicorp/memberlist) to communicate node state and failure scenarios. -Weaviate is optimized to run on Kubernetes, especially when operating as a cluster. The [Weaviate Helm chart](/docs/weaviate/installation/kubernetes.md#weaviate-helm-chart) makes use of a `StatefulSet` and a headless `Service` that automatically configures node discovery. +Weaviate is optimized to run on Kubernetes, especially when operating as a cluster. The [Weaviate Helm chart](docs/deploy/installation-guides/k8s-installation.md#weaviate-helm-chart) makes use of a `StatefulSet` and a headless `Service` that automatically configures node discovery. <details> <summary>FQDN for node discovery</summary> diff --git a/docs/weaviate/concepts/replication-architecture/consistency.md b/docs/weaviate/concepts/replication-architecture/consistency.md index fe7f4666..b7f4d633 100644 --- a/docs/weaviate/concepts/replication-architecture/consistency.md +++ b/docs/weaviate/concepts/replication-architecture/consistency.md @@ -195,7 +195,7 @@ Repair-on-read works well with one or two isolated repairs. Async replication is Async replication supplements the repair-on-read mechanism. If a node becomes inconsistent between sync checks, the repair-on-read mechanism catches the problem at read time. -To activate async replication, set `asyncEnabled` to true in the [`replicationConfig` section of your collection definition](../../manage-collections/multi-node-setup.mdx#replication-settings). Visit the [How-to: Replication](/docs/weaviate/configuration/replication#async-replication-settings) page to learn more about the available async replication settings. +To activate async replication, set `asyncEnabled` to true in the [`replicationConfig` section of your collection definition](../../manage-collections/multi-node-setup.mdx#replication-settings). Visit the [How-to: Replication](docs/deploy/config-guides/replication.md#async-replication-settings) page to learn more about the available async replication settings. #### Memory and performance considerations for async replication diff --git a/docs/weaviate/concepts/replication-architecture/index.md b/docs/weaviate/concepts/replication-architecture/index.md index 0fa4d690..e7a03745 100644 --- a/docs/weaviate/concepts/replication-architecture/index.md +++ b/docs/weaviate/concepts/replication-architecture/index.md @@ -163,7 +163,7 @@ Read more about how replication works in Weaviate in [Philosophy](./philosophy.m ## How do I use replication in Weaviate? -See [how to configure replication](../../configuration/replication.md). You can enable replication in the collection definition. In queries, you can [specify the desired consistency level](../../search/basics.md#replication). +See [how to configure replication](docs/deploy/config-guides/replication.md). You can enable replication in the collection definition. In queries, you can [specify the desired consistency level](../../search/basics.md#replication). ## Roadmap @@ -172,7 +172,7 @@ See [how to configure replication](../../configuration/replication.md). You can ## Related pages -- [Configuration: Replication](../../configuration/replication.md) +- [Configuration: Replication](docs/deploy/config-guides/replication.md) ## Questions and feedback diff --git a/docs/weaviate/config-refs/index.mdx b/docs/weaviate/config-refs/index.mdx index 870cbac0..7d33ec77 100644 --- a/docs/weaviate/config-refs/index.mdx +++ b/docs/weaviate/config-refs/index.mdx @@ -44,56 +44,9 @@ export const mainReferencesData = [ link: "/docs/weaviate/config-refs/distances", icon: "fas fa-ruler", }, - { - title: "Environment variables", - description: - "Configure Weaviate through environment variables and runtime settings.", - link: "/docs/deploy/config-guides/env-vars", - icon: "fas fa-cogs", - }, -]; -export const otherReferencesData = [ - { - title: "Status", - description: "Monitor the status and health of your Weaviate instance.", - link: "/docs/weaviate/config-refs/status", - icon: "fas fa-heartbeat", - }, - { - title: "Telemetry", - description: - "Understand how Weaviate telemetry works and how to configure it.", - link: "/docs/weaviate/config-refs/telemetry", - icon: "fas fa-chart-line", - }, - { - title: "Cluster metadata", - description: "Access and manage metadata about your Weaviate cluster.", - link: "/docs/weaviate/config-refs/meta", - icon: "fas fa-info-circle", - }, - { - title: "Cluster node data", - description: "View and manage data about individual nodes in your cluster.", - link: "/docs/deploy/config-guides/nodes", - icon: "fas fa-server", - }, - { - title: "OIDC Configuration", - description: - "Configure OpenID Connect for secure authentication with Weaviate.", - link: "/docs/weaviate/config-refs/oidc", - icon: "fas fa-lock", - }, ]; <br /> <CardsSection items={mainReferencesData} /> <br /> - -## Other references - -<br /> -<CardsSection items={otherReferencesData} /> -<br /> diff --git a/docs/weaviate/config-refs/schema/index.md b/docs/weaviate/config-refs/schema/index.md index 22b102e8..f9408f57 100644 --- a/docs/weaviate/config-refs/schema/index.md +++ b/docs/weaviate/config-refs/schema/index.md @@ -385,7 +385,7 @@ These parameters are explained below: <RaftRFChangeWarning/> -[Replication](../../configuration/replication.md) configurations can be set using the definition, through the `replicationConfig` parameter. +[Replication](docs/deploy/config-guides/replication.md) configurations can be set using the definition, through the `replicationConfig` parameter. The `factor` parameter sets the number of copies of to be stored for objects in this collection. diff --git a/docs/weaviate/configuration/_enterprise-usage-collector.md b/docs/weaviate/configuration/_enterprise-usage-collector.md index fd407ed3..deb3b143 100644 --- a/docs/weaviate/configuration/_enterprise-usage-collector.md +++ b/docs/weaviate/configuration/_enterprise-usage-collector.md @@ -51,7 +51,7 @@ services: ## Using the Docker Compose configurator -You can also use the Docker compose [configurator](/docs/weaviate/installation/docker-compose.md#configurator). Make sure to select `Enabled` for the Enterprise Usage Collector option. +You can also use the Docker compose [configurator](docs/deploy/installation-guides/docker-installation.md#configurator). Make sure to select `Enabled` for the Enterprise Usage Collector option. ## Collector proxy on Kubernetes using Helm diff --git a/docs/weaviate/configuration/index.md b/docs/weaviate/configuration/index.md index bdfb4802..13ec6e8b 100644 --- a/docs/weaviate/configuration/index.md +++ b/docs/weaviate/configuration/index.md @@ -19,4 +19,4 @@ This section shows you how to configure Weaviate. - Control access - [authentication](./authentication.md) - [authorization](docs/deploy/config-guides/authorization.md) -- [Monitor](./monitoring.md) your Weaviate instance +- [Monitor](docs/deploy/config-guides/monitoring.md) your Weaviate instance diff --git a/docs/weaviate/configuration/index.mdx b/docs/weaviate/configuration/index.mdx index fbb69e07..55ab4ebd 100644 --- a/docs/weaviate/configuration/index.mdx +++ b/docs/weaviate/configuration/index.mdx @@ -71,7 +71,7 @@ export const configOpsData = [ title: "Monitoring", description: "Enable and configure Prometheus-compatible metrics for observing instance health.", - link: "/docs/weaviate/configuration/monitoring", + link: "/docs/deploy/config-guides/monitoring", icon: "fas fa-chart-line", }, { diff --git a/docs/weaviate/configuration/monitoring.md b/docs/weaviate/configuration/monitoring.md deleted file mode 100644 index c9a7bc0d..00000000 --- a/docs/weaviate/configuration/monitoring.md +++ /dev/null @@ -1,143 +0,0 @@ ---- -title: Monitoring -sidebar_position: 50 -image: og/docs/configuration.jpg -# tags: ['configuration', 'operations', 'monitoring', 'observability'] ---- - -Weaviate can expose Prometheus-compatible metrics for monitoring. A standard -Prometheus/Grafana setup can be used to visualize metrics on various -dashboards. - -Metrics can be used to measure request latencies, import -speed, time spent on vector vs object storage, memory usage, application usage, -and more. - -## Configure Monitoring - -### Enable within Weaviate - -To tell Weaviate to collect metrics and expose them in a Prometheus-compatible -format, all that's required is to set the following environment variable: - -```sh -PROMETHEUS_MONITORING_ENABLED=true -``` - -By default, Weaviate will expose the metrics at `<hostname>:2112/metrics`. You -can optionally change the port to a custom port using the following environment -variable: - -```sh -PROMETHEUS_MONITORING_PORT=3456 -``` - -### Scrape metrics from Weaviate - -Metrics are typically scraped into a time-series database, such as Prometheus. -How you consume metrics depends on your setup and environment. - -The [Weaviate examples repo contains a fully pre-configured setup using -Prometheus, Grafana and some example -dashboards](https://github.com/weaviate/weaviate-examples/tree/main/monitoring-prometheus-grafana). -You can start up a full-setup including monitoring and dashboards with a single -command. In this setup the following components are used: - -- Docker Compose is used to provide a fully-configured setup that can be - started with a single command. -- Weaviate is configured to expose Prometheus metrics as outlined in the - section above. -- A Prometheus instance is started with the setup and configured to scrape - metrics from Weaviate every 15s. -- A Grafana instance is started with the setup and configured to use the - Prometheus instance as a metrics provider. Additionally, it runs a dashboard - provider that contains a few sample dashboards. - -### Multi-tenancy - -When using multi-tenancy, we suggest setting the `PROMETHEUS_MONITORING_GROUP` [environment variable](docs/deploy/config-guides/env-vars/index.md) as `true` so that data across all tenants are grouped together for monitoring. - -## Obtainable Metrics - -The list of metrics that are obtainable through Weaviate's metric system is -constantly being expanded. The complete list is in the [`prometheus.go`](https://github.com/weaviate/weaviate/blob/main/usecases/monitoring/prometheus.go) source code file. - -This page describes some noteworthy metrics and their uses. - -Typically metrics are quite granular, as they can always be aggregated later -on. For example if the granularity is "shard", you could aggregate all "shard" -metrics of the same "class" to obtain a class metrics, or aggregate all metrics -to obtain the metric for the entire Weaviate instance. - -| Metric | Description | Labels | Type | -| ------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------- | ----------- | -| `async_operations_running` | Number of currently running async operations. The operation itself is defined through the `operation` label. | `operation`, `class_name`, `shard_name`, `path` | `Gauge` | -| `batch_delete_durations_ms` | Duration of a batch delete in ms. The `operation` label further defines what operation as part of the batch delete is being measured. Granularity is a shard of a class | `class_name`, `shard_name` | `Histogram` | -| `batch_durations_ms` | Duration of a single batch operation in ms. The `operation` label further defines what operation as part of the batch (e.g. object, inverted, vector) is being used. Granularity is a shard of a class. | `operation`, `class_name`, `shard_name` | `Histogram` | -| `index_queue_delete_duration_ms` | Duration of deleting one or more vectors from the index queue and the underlying index. | `class_name`, `shard_name`, `target_vector` | `Summary` | -| `index_queue_paused` | Whether the index queue is paused. | `class_name`, `shard_name`, `target_vector` | `Gauge` | -| `index_queue_preload_count` | Number of vectors preloaded to the index queue. | `class_name`, `shard_name`, `target_vector` | `Gauge` | -| `index_queue_preload_duration_ms` | Duration of preloading un-indexed vectors to the index queue. | `class_name`, `shard_name`, `target_vector` | `Summary` | -| `index_queue_push_duration_ms` | Duration of pushing one or more vectors to the index queue. | `class_name`, `shard_name`, `target_vector` | `Summary` | -| `index_queue_search_duration_ms` | Duration of searching for vectors in the index queue and the underlying index. | `class_name`, `shard_name`, `target_vector` | `Summary` | -| `index_queue_size` | Number of vectors in the index queue. | `class_name`, `shard_name`, `target_vector` | `Gauge` | -| `index_queue_stale_count` | Number of times the index queue has been marked as stale. | `class_name`, `shard_name`, `target_vector` | `Counter` | -| `index_queue_vectors_dequeued` | Number of vectors sent to the workers per tick. | `class_name`, `shard_name`, `target_vector` | `Gauge` | -| `index_queue_wait_duration_ms` | Duration of waiting for the workers to finish. | `class_name`, `shard_name`, `target_vector` | `Summary` | -| `lsm_active_segments` | Number of currently present segments per shard. Granularity is shard of a class. Grouped by `strategy`. | `strategy`, `class_name`, `shard_name`, `path` | `Gauge` | -| `lsm_bloom_filter_duration_ms` | Duration of a bloom filter operation per shard in ms. Granularity is shard of a class. Grouped by `strategy`. | `operation`, `strategy`, `class_name`, `shard_name` | `Histogram` | -| `lsm_segment_count` | Number of segments by level | `strategy`, `class_name`, `shard_name`, `path`, `level` | `Gauge` | -| `lsm_segment_objects` | Number of entries per LSM segment by level. Granularity is shard of a class. Grouped by `strategy` and `level`. | `operation`, `strategy`, `class_name`, `shard_name`, `path`, `level` | `Gauge` | -| `lsm_segment_size` | Size of LSM segment by level and unit. | `strategy`, `class_name`, `shard_name`, `path`, `level`, `unit` | `Gauge` | -| `object_count` | Numbers of objects present. Granularity is a shard of a class | `class_name`, `shard_name` | `Gauge` | -| `objects_durations_ms` | Duration of an individual object operation, such as `put`, `delete`, etc. as indicated by the `operation` label, also as part of a batch. The `step` label adds additional precisions to each `operation`. Granularity is a shard of a class. | `class_name`, `shard_name` | `Histogram` | -| `requests_total` | Metric that tracks all user requests to determine if it was successful or failed. | `api`, `query_type`, `class_name` | `GaugeVec` | -| `startup_diskio_throughput` | Disk I/O throughput in bytes/s at startup operations, such as reading back the HNSW index or recovering LSM segments. The operation itself is defined by the `operation` label. | `operation`, `step`, `class_name`, `shard_name` | `Histogram` | -| `startup_durations_ms` | Duration of individual startup operations in ms. The operation itself is defined through the `operation` label. | `operation`, `class_name`, `shard_name` | `Histogram` | -| `vector_index_durations_ms` | Duration of regular vector index operation, such as insert or delete. The operation itself is defined through the `operation` label. The `step` label adds more granularity to each operation. | `operation`, `step`, `class_name`, `shard_name` | `Histogram` | -| `vector_index_maintenance_durations_ms` | Duration of a sync or async vector index maintenance operation. The operation itself is defined through the `operation` label. | `opeartion`, `class_name`, `shard_name` | `Histogram` | -| `vector_index_operations` | Total number of mutating operations on the vector index. The operation itself is defined by the `operation` label. | `operation`, `class_name`, `shard_name` | `Gauge` | -| `vector_index_size` | The total capacity of the vector index. Typically larger than the number of vectors imported as it grows proactively. | `class_name`, `shard_name` | `Gauge` | -| `vector_index_tombstone_cleaned` | Total number of deleted and removed vectors after repair operations. | `class_name`, `shard_name` | `Counter` | -| `vector_index_tombstone_cleanup_threads` | Number of currently active threads for repairing/cleaning up the vector index after deletes have occurred. | `class_name`, `shard_name` | `Gauge` | -| `vector_index_tombstones` | Number of currently active tombstones in the vector index. Will go up on each incoming delete and go down after a completed repair operation. | `class_name`, `shard_name` | `Gauge` | -| `weaviate_runtime_config_hash` | Hash value of the currently active runtime configuration, useful for tracking when new configurations take effect. | `sha256` | `GaugeVec` | -| `weaviate_runtime_config_last_load_success` | Indicates whether the last loading attempt was successful (`1` for success, `0` for failure). | | `Gauge` | - -Extending Weaviate with new metrics is very easy. To suggest a new metric, see the [contributor guide](/docs/contributor-guide). - -### Versioning - -Be aware that metrics do not follow the semantic versioning guidelines of other Weaviate features. Weaviate's main APIs are stable and breaking changes are extremely rare. Metrics, however, have shorter feature lifecycles. It can sometimes be necessary to introduce an incompatible change or entirely remove a metric, for example, because the cost of observing a specific metric in production has grown too high. As a result, it is possible that a Weaviate minor release contains a breaking change for the Monitoring system. If so, it will be clearly highlighted in the release notes. - -## Sample Dashboards - -Weaviate does not ship with any dashboards by default, but here is a list of -dashboards being used by the various Weaviate teams, both during development, -and when helping users. These do not come with any support, but may still be -helpful. Treat them as inspiration to design your own dashboards which fit -your uses perfectly: - -| Dashboard | Purpose | Preview | -| ---------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------- | -| [Importing Data Into Weaviate](https://github.com/weaviate/weaviate/blob/master/tools/dev/grafana/dashboards/importing.json) | Visualize speed of import operations (including its components, such as object store, inverted index, and vector index). |  | -| [Object Operations](https://github.com/weaviate/weaviate/blob/master/tools/dev/grafana/dashboards/objects.json) | Visualize speed of whole object operations, such as GET, PUT, etc. |  | -| [Vector Index](https://github.com/weaviate/weaviate/blob/master/tools/dev/grafana/dashboards/vectorindex.json) | Visualize the current state, as well as operations on the HNSW vector index |  | -| [LSM Stores](https://github.com/weaviate/weaviate/blob/master/tools/dev/grafana/dashboards/lsm.json) | Get insights into the internals (including segments) of the various LSM stores within Weaviate. |  | -| [Startup](https://github.com/weaviate/weaviate/blob/master/tools/dev/grafana/dashboards/startup.json) | Visualize the startup process, including recovery operations |  | -| [Usage](https://github.com/weaviate/weaviate/blob/master/tools/dev/grafana/dashboards/usage.json) | Obtain usage metrics, such as number of objects imported, etc. |  | -| [Aysnc index queue](https://github.com/weaviate/weaviate/blob/main/tools/dev/grafana/dashboards/index_queue.json) | Observe index queue activity |  | - -## `nodes` API Endpoint - -To get collection details programmatically, use the [`nodes`](docs/deploy/config-guides/nodes.md) REST endpoint. - -import APIOutputs from '/\_includes/rest/node-endpoint-info.mdx'; - -<APIOutputs /> - -## Questions and feedback - -import DocsFeedback from '/\_includes/docs-feedback.mdx'; - -<DocsFeedback/> diff --git a/docs/weaviate/configuration/persistence.md b/docs/weaviate/configuration/persistence.md deleted file mode 100644 index 2d2b33eb..00000000 --- a/docs/weaviate/configuration/persistence.md +++ /dev/null @@ -1,113 +0,0 @@ ---- -title: Persistence -sidebar_position: 45 -image: og/docs/configuration.jpg ---- - -import SkipLink from '/src/components/SkipValidationLink' - -When running Weaviate with Docker or Kubernetes, you can persist its data by mounting a volume to store the data outside of the containers. Doing so will cause the Weaviate instance to also load the data from the mounted volume when it is restarted. - -Note that Weaviate now offers native backup modules starting with `v1.15` for single-node instances, and `v1.16` for multi-node instances. For older versions of Weaviate, persisting data as described here will allow you to back up Weaviate. - -## Docker Compose - -### Persistence - -When running Weaviate with Docker Compose, you can set the `volumes` variable under the `weaviate` service and a unique cluster hostname as an environment variable. - -```yaml -services: - weaviate: - volumes: - - /var/weaviate:/var/lib/weaviate - environment: - CLUSTER_HOSTNAME: 'node1' - PERSISTENCE_DATA_PATH: '/var/lib/weaviate' -``` - -* About the volumes - * `/var/weaviate` is the location where you want to store the data on the local machine - * `/var/lib/weaviate` The value after the colon (:) is the storage location inside the container. This value must match the PERSISTENCE_DATA_PATH variable. -* About the hostname - * `CLUSTER_HOSTNAME` can be any name - -In the case you want a more verbose output, you can change the environment variable for the `LOG_LEVEL` - -```yaml -services: - weaviate: - environment: - LOG_LEVEL: 'debug' -``` - -A complete example of a Weaviate without modules but with an externally mounted volume and more verbose output: - -```yaml ---- -services: - weaviate: - command: - - --host - - 0.0.0.0 - - --port - - '8080' - - --scheme - - http - image: cr.weaviate.io/semitechnologies/weaviate:||site.weaviate_version|| - ports: - - 8080:8080 - - 50051:50051 - restart: on-failure:0 - volumes: - - /var/weaviate:/var/lib/weaviate # <== set a volume here - environment: - QUERY_DEFAULTS_LIMIT: 25 - AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED: 'true' - PERSISTENCE_DATA_PATH: '/var/lib/weaviate' - ENABLE_API_BASED_MODULES: 'true' - CLUSTER_HOSTNAME: 'node1' # <== this can be set to an arbitrary name -... -``` - -### Backups - -See [Backups](docs/deploy/config-guides/backups.md). - -## Kubernetes - -For Kubernetes setup, the only thing to bear in mind is that Weaviate needs a `PersistentVolumes` through `PersistentVolumeClaims` ([more info](/docs/deploy/installation-guides/k8s-installation.md#requirements)) but the Helm chart is already configured to store the data on an external volume. - -## Disk Pressure Warnings and Limits - -Starting with `v1.12.0` there are two levels of disk usage notifications and actions configured through environment variables. Both variables are optional. If not set they default to the values outlined below: - -| Variable | Default Value | Description | -| --- | --- | --- | -| `DISK_USE_WARNING_PERCENTAGE` | `80` | If disk usage is higher than the given percentage a warning will be logged by all shards on the affected node's disk | -| `DISK_USE_READONLY_PERCENTAGE` | `90` | If disk usage is higher than the given percentage all shards on the affected node will be marked as `READONLY`, meaning all future write requests will fail. | - -If a shard was marked `READONLY` due to disk pressure and you want to mark the -shard as ready again (either because you have made more space available or -changed the thresholds) you can use the <SkipLink href="/docs/weaviate/api/rest#tag/schema/get/schema/%7BclassName%7D/shards">Shards API</SkipLink> to do so. - -## Disk access method - -:::info Added in `v1.21` -::: - -Weaviate maps data on disk to memory. To configure how Weaviate uses virtual memory, set the `PERSISTENCE_LSM_ACCESS_STRATEGY` environment variable. The default value is `mmap`. Use `pread` to as an alternative. - -The two functions reflect different under-the-hood memory management behaviors. `mmap` uses a memory-mapped file, which means that the file is mapped into the virtual memory of the process. `pread` is a function that reads data from a file descriptor at a given offset. - -In general, `mmap` may be a preferred option with memory management benefits. However, if you experience stalling situations under heavy memory load, we suggest trying `pread` instead. - - -## Related pages -- [Configuration: Backups](docs/deploy/config-guides/backups.md) - -## Questions and feedback - -import DocsFeedback from '/_includes/docs-feedback.mdx'; - -<DocsFeedback/> diff --git a/docs/weaviate/configuration/rbac/manage-users.mdx b/docs/weaviate/configuration/rbac/manage-users.mdx index 82787d07..7bc5597e 100644 --- a/docs/weaviate/configuration/rbac/manage-users.mdx +++ b/docs/weaviate/configuration/rbac/manage-users.mdx @@ -350,7 +350,7 @@ viewer ## OIDC users: Permissions management <i class="fas fa-user-lock"></i> {#oidc-user-permissions-management} -When using [OIDC](../../config-refs/oidc.md), an identity provider authenticates the user and issues tokens, which are then validated by Weaviate. These users can be assigned roles with custom permissions using RBAC. +When using [OIDC](docs/deploy/config-guides/oidc.md), an identity provider authenticates the user and issues tokens, which are then validated by Weaviate. These users can be assigned roles with custom permissions using RBAC. ### Assign a role to an OIDC user diff --git a/docs/weaviate/configuration/replication.md b/docs/weaviate/configuration/replication.md deleted file mode 100644 index ea3d13cc..00000000 --- a/docs/weaviate/configuration/replication.md +++ /dev/null @@ -1,131 +0,0 @@ ---- -title: Replication -sidebar_position: 60 -image: og/docs/configuration.jpg -# tags: ['configuration', 'operations', 'monitoring', 'observability'] ---- - -Weaviate instances can be replicated. Replication can improve read throughput, improve availability, and enable zero-downtime upgrades. - -For more details on how replication is designed and built in Weaviate, see [Replication Architecture](../concepts/replication-architecture/index.md). - -## How to configure - -import RaftRFChangeWarning from '/\_includes/1-25-replication-factor.mdx'; - -<RaftRFChangeWarning/> - -Replication is disabled by default. It can be enabled per collection in the [collection configuration](../manage-collections/multi-node-setup.mdx#replication-settings). This means you can set different replication factors per class in your dataset. - -To enable replication, you can set one or both of the following: - -- `REPLICATION_MINIMUM_FACTOR` environment variable for the entire Weaviate instance, or -- `replicationFactor` parameter for a collection. - -### Weaviate-wide minimum replication factor - -The `REPLICATION_MINIMUM_FACTOR` environment variable sets the minimum replication factor for all collections in the Weaviate instance. - -If you set the [replication factor for a collection](#replication-factor-for-a-collection), the collection's replication factor overrides the minimum replication factor. - -### Replication factor for a collection - -import SchemaReplication from '/\_includes/code/schema.things.create.replication.mdx'; - -<SchemaReplication/> - -In this example, there are three replicas. If you set the replication factor before you import data, all of the data is replicated three times. - -The replication factor can be modified after you add data to a collection. If you modify the replication factor afterwards, new data is copied across the new and pre-existing replica nodes. - -The example data schema has a [write consistency](../concepts/replication-architecture/consistency.md#tunable-write-consistency) level of `ALL`. When you upload or update a schema, the changes are sent to `ALL` nodes (via a coordinator node). The coordinator node waits for a successful acknowledgment from `ALL` nodes before sending a success message back to the client. This ensures a highly consistent schema in your distributed Weaviate setup. - -## Data consistency - -When Weaviate detects inconsistent data across nodes, it attempts to repair the out of sync data. - -Starting in v1.26, Weaviate adds [async replication](../concepts/replication-architecture/consistency.md#async-replication) to proactively detect inconsistencies. In earlier versions, Weaviate uses a [repair-on-read](../concepts/replication-architecture/consistency.md#repair-on-read) strategy to repair inconsistencies at read time. - -Repair-on-read is automatic. To activate async replication, set `asyncEnabled` to true in the `replicationConfig` section of your collection definition. - -import ReplicationConfigWithAsyncRepair from '/\_includes/code/configuration/replication-consistency.mdx'; - -<ReplicationConfigWithAsyncRepair /> - -### Configure async replication settings {#async-replication-settings} - -:::info Added in `v1.29` -The [environment variables](docs/deploy/config-guides/env-vars/index.md#async-replication) for configuring async replication (`ASYNC_*`) have been introduced in `v1.29`. -::: - -Async replication helps achieve consistency for data replicated across multiple nodes. - -Update the following [environment variables](docs/deploy/config-guides/env-vars/index.md#async-replication) to configure async replication for your particular use case. - -#### Logging - -- **Set the frequency of the logger:** `ASYNC_REPLICATION_LOGGING_FREQUENCY` - Define how often the async replication background process will log events. - -#### Data comparison - -- **Set the frequency of comparisons:** `ASYNC_REPLICATION_FREQUENCY` - Define how often each node compares its local data with other nodes. -- **Set comparison timeout:** `ASYNC_REPLICATION_DIFF_PER_NODE_TIMEOUT` - Optionally configure a timeout for how long to wait during comparison when a node is unresponsive. -- **Monitor node availability:** `ASYNC_REPLICATION_ALIVE_NODES_CHECKING_FREQUENCY` - Trigger comparisons whenever there’s a change in node availability. -- **Configure hash tree height:** `ASYNC_REPLICATION_HASHTREE_HEIGHT` - Specify the size of the hash tree, which helps narrow down data differences by comparing hash digests at multiple levels instead of scanning entire datasets. See [this page](../concepts/replication-architecture/consistency.md#memory-and-performance-considerations-for-async-replication) for more information on the memory and performance considerations for async replication. -- **Batch size for digest comparison:** `ASYNC_REPLICATION_DIFF_BATCH_SIZE` - Define the number of objects whose digest (e.g., last update time) is compared between nodes before propagating actual objects. - -#### Data synchronization - -Once differences between nodes are detected, Weaviate propagates outdated or missing data. Configure synchronization as follows: - -- **Set the frequency of propagation:** `ASYNC_REPLICATION_FREQUENCY_WHILE_PROPAGATING` - After synchronization is completed on a node, temporarily adjust the data comparison frequency to the set value. -- **Set propagation timeout:** `ASYNC_REPLICATION_PROPAGATION_TIMEOUT` - Optionally configure a timeout for how long to wait during propagation when a node is unresponsive. -- **Set propagation delay:** `ASYNC_REPLICATION_PROPAGATION_DELAY` - Define a delay period to allow asynchronous write operations to reach all nodes before propagating new or updated objects. -- **Batch size for data propagation:** `ASYNC_REPLICATION_PROPAGATION_BATCH_SIZE` - Define the number of objects that are sent in each synchronization batch during the propagation phase. -- **Set propagation limits:** `ASYNC_REPLICATION_PROPAGATION_LIMIT` - Enforce a limit on the number of out-of-sync objects to be propagated per replication iteration. -- **Set propagation concurrency:** `ASYNC_REPLICATION_PROPAGATION_CONCURRENCY` - Specify the number of concurrent workers that can send batches of objects to other nodes, allowing multiple propagation batches to be sent simultaneously. - -:::tip -Tweak these settings based on your cluster size and network latency to achieve optimal performance. Smaller batch sizes and shorter timeouts may be beneficial for high-traffic clusters, while larger clusters might require more conservative settings. -::: - -## How to use: Queries - -When you add (write) or query (read) data, one or more replica nodes in the cluster will respond to the request. How many nodes need to send a successful response and acknowledgment to the coordinator node depends on the `consistency_level`. Available [consistency levels](../concepts/replication-architecture/consistency.md) are `ONE`, `QUORUM` (replication_factor / 2 + 1) and `ALL`. - -The `consistency_level` can be specified at query time: - -```bash -# Get an object by ID, with consistency level ONE -curl "http://localhost:8080/v1/objects/{ClassName}/{id}?consistency_level=ONE" -``` - -:::note -In v1.17, only [read queries that get data by ID](../manage-objects/read.mdx#get-an-object-by-id) had a tunable consistency level. All other object-specific REST endpoints (read or write) used the consistency level `ALL`. Starting with v1.18, all write and read queries are tunable to either `ONE`, `QUORUM` (default) or `ALL`. GraphQL endpoints use the consistency level `ONE` (in both versions). -::: - -import QueryReplication from '/\_includes/code/replication.get.object.by.id.mdx'; - -<QueryReplication/> - -## Related pages - -- [Concepts: Replication Architecture](../concepts/replication-architecture/index.md) - -## Questions and feedback - -import DocsFeedback from '/\_includes/docs-feedback.mdx'; - -<DocsFeedback/> diff --git a/docs/weaviate/index.mdx b/docs/weaviate/index.mdx index a066ee67..e916c738 100644 --- a/docs/weaviate/index.mdx +++ b/docs/weaviate/index.mdx @@ -124,7 +124,7 @@ export const deploymentCardsData = [ ], button: { text: "Run Weaviate with Docker", - link: "/docs/weaviate/installation/docker-compose", + link: "/docs/deploy/installation-guides/docker-installation", }, }, { @@ -146,7 +146,7 @@ export const deploymentCardsData = [ ], button: { text: "Run Weaviate with Kubernetes", - link: "/docs/weaviate/installation/kubernetes", + link: "/docs/deploy/installation-guides/k8s-installation", }, }, { diff --git a/docs/weaviate/installation/docker-compose.md b/docs/weaviate/installation/docker-compose.md deleted file mode 100644 index 5aeab46e..00000000 --- a/docs/weaviate/installation/docker-compose.md +++ /dev/null @@ -1,439 +0,0 @@ ---- -title: Docker -sidebar_position: 2 -image: og/docs/installation.jpg -# tags: ['installation', 'Docker'] ---- - -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - -Weaviate supports deployment with Docker. - -You can [run Weaviate with default settings from a command line](#run-weaviate-with-default-settings), or [customize your configuration](#customize-your-weaviate-configuration) by creating your own `docker-compose.yml` file. - -## Run Weaviate with default settings - -:::info Added in v1.24.1 - -::: - -To run Weaviate with Docker using default settings, run this command from from your shell: - -```bash -docker run -p 8080:8080 -p 50051:50051 cr.weaviate.io/semitechnologies/weaviate:||site.weaviate_version|| -``` - -The command sets the following default [environment variables](#environment-variables) in the container: - -- `PERSISTENCE_DATA_PATH` defaults to `./data` -- `AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED` defaults to `true`. -- `QUERY_DEFAULTS_LIMIT` defaults to `10`. - -## Customize your Weaviate configuration - -You can customize your Weaviate configuration by creating a `docker-compose.yml` file. Start from our [sample Docker Compose file](#sample-docker-compose-file), or use the interactive [Configurator](#configurator) to generate a `docker-compose.yml` file. - -## Sample Docker Compose file - -This starter Docker Compose file allows: -* Use of any [API-based model provider integrations](../model-providers/index.md) (e.g. `OpenAI`, `Cohere`, `Google`, and `Anthropic`). - * This includes the relevant embedding model, generative, and reranker [integrations](../model-providers/index.md). -* Searching pre-vectorized data (without a vectorizer). -* Mounts a persistent volume called `weaviate_data` to `/var/lib/weaviate` in the container to store data. - -### Download and run - -<Tabs queryString="docker-compose"> - <TabItem value="anonymous" label="Anonymous access" default> - -Save the code below as `docker-compose.yml` to download and run Weaviate with anonymous access enabled: - -```yaml ---- -services: - weaviate: - command: - - --host - - 0.0.0.0 - - --port - - '8080' - - --scheme - - http - image: cr.weaviate.io/semitechnologies/weaviate:||site.weaviate_version|| - ports: - - 8080:8080 - - 50051:50051 - volumes: - - weaviate_data:/var/lib/weaviate - restart: on-failure:0 - environment: - QUERY_DEFAULTS_LIMIT: 25 - AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED: 'true' - PERSISTENCE_DATA_PATH: '/var/lib/weaviate' - ENABLE_API_BASED_MODULES: 'true' - CLUSTER_HOSTNAME: 'node1' -volumes: - weaviate_data: -... -``` - -:::caution -Anonymous access is strongly discouraged except for development or evaluation purposes. -::: - - </TabItem> - <TabItem value="auth" label="With authentication and authorization enabled"> - -Save the code below as `docker-compose.yml` to download and run Weaviate with authentication (non-anonymous access) and authorization enabled: - -```yaml ---- -services: - weaviate: - command: - - --host - - 0.0.0.0 - - --port - - '8080' - - --scheme - - http - image: cr.weaviate.io/semitechnologies/weaviate:||site.weaviate_version|| - ports: - - 8080:8080 - - 50051:50051 - volumes: - - weaviate_data:/var/lib/weaviate - restart: on-failure:0 - environment: - QUERY_DEFAULTS_LIMIT: 25 - PERSISTENCE_DATA_PATH: '/var/lib/weaviate' - ENABLE_API_BASED_MODULES: 'true' - CLUSTER_HOSTNAME: 'node1' - AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED: 'false' - AUTHENTICATION_APIKEY_ENABLED: 'true' - AUTHENTICATION_APIKEY_ALLOWED_KEYS: 'user-a-key,user-b-key' - AUTHENTICATION_APIKEY_USERS: 'user-a,user-b' - AUTHORIZATION_ENABLE_RBAC: 'true' - AUTHORIZATION_RBAC_ROOT_USERS: 'user-a' -volumes: - weaviate_data: -... -``` - -This setup enables API-key based [authentication](docs/deploy/config-guides/authentication.md) and role-based access control [authorization](docs/deploy/config-guides/authorization.md). - -It defines the users `user-a` and `user-b` and corresponding keys `user-a-key` and `user-b-key` which serve as authentication credentials for connecting to your Weaviate instance. - -The user `user-a` is granted admin access rights using the **Role-based access control (RBAC)** method. A custom role can be assigned to the user `user-b` by following the [authorization and RBAC guide](docs/deploy/config-guides/authorization.md). - - </TabItem> -</Tabs> - -Edit the `docker-compose.yml` file to suit your needs. You can add or remove [environment variables](#environment-variables), change the port mappings, or add additional [model provider integrations](../model-providers/index.md), such as [Ollama](../model-providers/ollama/index.md), or [Hugging Face Transformers](../model-providers/transformers/index.md). - -To start your Weaviate instance, run this command from your shell: - -```bash -docker compose up -d -``` - -## Configurator - -The Configurator can generate a `docker-compose.yml` file for you. Use the Configurator to select specific Weaviate modules, including vectorizers that run locally (i.e. `text2vec-transformers`, or `multi2vec-clip`) - -import DocsConfigGen from '@site/src/components/DockerConfigGen'; - -<DocsConfigGen /> - -## Environment variables - -You can use environment variables to control your Weaviate setup, authentication and authorization, module settings, and data storage settings. - -:::info List of environment variables -A comprehensive of list environment variables [can be found on this page](docs/deploy/config-guides/env-vars/index.md). -::: - -## Example configurations - -Here are some examples of how to configure `docker-compose.yml`. - -### Persistent volume - -We recommended setting a persistent volume to avoid data loss as well as to improve reading and writing speeds. - -Make sure to run `docker compose down` when shutting down. This writes all the files from memory to disk. - -**With named volume** -```yaml -services: - weaviate: - volumes: - - weaviate_data:/var/lib/weaviate - # etc - -volumes: - weaviate_data: -``` - -After running a `docker compose up -d`, Docker will create a named volume `weaviate_data` and mount it to the `PERSISTENCE_DATA_PATH` inside the container. - -**With host binding** -```yaml -services: - weaviate: - volumes: - - /var/weaviate:/var/lib/weaviate - # etc -``` - -After running a `docker compose up -d`, Docker will mount `/var/weaviate` on the host to the `PERSISTENCE_DATA_PATH` inside the container. - -### Weaviate without any modules - -An example Docker Compose setup for Weaviate without any modules can be found below. In this case, no model inference is performed at either import or search time. You will need to provide your own vectors (e.g. from an outside ML model) at import and search time: - -```yaml -services: - weaviate: - image: cr.weaviate.io/semitechnologies/weaviate:||site.weaviate_version|| - ports: - - 8080:8080 - - 50051:50051 - restart: on-failure:0 - environment: - QUERY_DEFAULTS_LIMIT: 25 - AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED: 'true' - PERSISTENCE_DATA_PATH: '/var/lib/weaviate' - CLUSTER_HOSTNAME: 'node1' -``` - -### Weaviate with the `text2vec-transformers` module - -An example Docker Compose file with the transformers model [`sentence-transformers/multi-qa-MiniLM-L6-cos-v1`](https://huggingface.co/sentence-transformers/multi-qa-MiniLM-L6-cos-v1) is: - -```yaml -services: - weaviate: - image: cr.weaviate.io/semitechnologies/weaviate:||site.weaviate_version|| - restart: on-failure:0 - ports: - - 8080:8080 - - 50051:50051 - environment: - QUERY_DEFAULTS_LIMIT: 20 - AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED: 'true' - PERSISTENCE_DATA_PATH: "./data" - DEFAULT_VECTORIZER_MODULE: text2vec-transformers - ENABLE_MODULES: text2vec-transformers - TRANSFORMERS_INFERENCE_API: http://t2v-transformers:8080 - CLUSTER_HOSTNAME: 'node1' - t2v-transformers: - image: cr.weaviate.io/semitechnologies/transformers-inference:sentence-transformers-multi-qa-MiniLM-L6-cos-v1 - environment: - ENABLE_CUDA: 0 # set to 1 to enable - # NVIDIA_VISIBLE_DEVICES: all # enable if running with CUDA -``` - -Note that transformer models are neural networks built to run on GPUs. Running Weaviate with the `text2vec-transformers` module and without GPU is possible, but it will be slower. Enable CUDA with `ENABLE_CUDA=1` if you have a GPU available. - -For more information on how to set up the environment with the -`text2vec-transformers` integration, see [this -page](/docs/weaviate/model-providers/transformers/embeddings.md). - -The `text2vec-transformers` module requires at least Weaviate version `v1.2.0`. - -### Unreleased versions - -import RunUnreleasedImages from '/_includes/configuration/run-unreleased.mdx' - -<RunUnreleasedImages /> - -## Multi-node configuration - -To configure Weaviate to use multiple host nodes, follow these steps: - -- Configure one node as a "founding" member -- Set the `CLUSTER_JOIN` variable for the other nodes in the cluster. -- Set the `CLUSTER_GOSSIP_BIND_PORT` for each node. -- Set the `CLUSTER_DATA_BIND_PORT` for each node. -- Set the `RAFT_JOIN` each node. -- Set the `RAFT_BOOTSTRAP_EXPECT` for each node with the number of voters. -- Optionally, set the hostname for each node using `CLUSTER_HOSTNAME`. - -(Read more about [horizontal replication in Weaviate](../concepts/cluster.md).) - -So, the Docker Compose file includes environment variables for the "founding" member that look like this: - -```yaml - weaviate-node-1: # Founding member service name - ... # truncated for brevity - environment: - CLUSTER_HOSTNAME: 'node1' - CLUSTER_GOSSIP_BIND_PORT: '7100' - CLUSTER_DATA_BIND_PORT: '7101' - RAFT_JOIN: 'node1,node2,node3' - RAFT_BOOTSTRAP_EXPECT: 3 -``` - -And the other members' configurations may look like this: - -```yaml - weaviate-node-2: - ... # truncated for brevity - environment: - CLUSTER_HOSTNAME: 'node2' - CLUSTER_GOSSIP_BIND_PORT: '7102' - CLUSTER_DATA_BIND_PORT: '7103' - CLUSTER_JOIN: 'weaviate-node-1:7100' # This must be the service name of the "founding" member node. - RAFT_JOIN: 'node1,node2,node3' - RAFT_BOOTSTRAP_EXPECT: 3 -``` - -Below is an example configuration for a 3-node setup. You may be able to test [replication](../configuration/replication.md) examples locally using this configuration. - - -<details> - <summary>Docker Compose file for a replication setup with 3 nodes</summary> - -```yaml -services: - weaviate-node-1: - init: true - command: - - --host - - 0.0.0.0 - - --port - - '8080' - - --scheme - - http - image: cr.weaviate.io/semitechnologies/weaviate:||site.weaviate_version|| - ports: - - 8080:8080 - - 6060:6060 - - 50051:50051 - restart: on-failure:0 - volumes: - - ./data-node-1:/var/lib/weaviate - environment: - LOG_LEVEL: 'debug' - QUERY_DEFAULTS_LIMIT: 25 - AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED: 'true' - PERSISTENCE_DATA_PATH: '/var/lib/weaviate' - ENABLE_API_BASED_MODULES: 'true' - CLUSTER_HOSTNAME: 'node1' - CLUSTER_GOSSIP_BIND_PORT: '7100' - CLUSTER_DATA_BIND_PORT: '7101' - RAFT_JOIN: 'node1,node2,node3' - RAFT_BOOTSTRAP_EXPECT: 3 - - weaviate-node-2: - init: true - command: - - --host - - 0.0.0.0 - - --port - - '8080' - - --scheme - - http - image: cr.weaviate.io/semitechnologies/weaviate:||site.weaviate_version|| - ports: - - 8081:8080 - - 6061:6060 - - 50052:50051 - restart: on-failure:0 - volumes: - - ./data-node-2:/var/lib/weaviate - environment: - LOG_LEVEL: 'debug' - QUERY_DEFAULTS_LIMIT: 25 - AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED: 'true' - PERSISTENCE_DATA_PATH: '/var/lib/weaviate' - ENABLE_API_BASED_MODULES: 'true' - CLUSTER_HOSTNAME: 'node2' - CLUSTER_GOSSIP_BIND_PORT: '7102' - CLUSTER_DATA_BIND_PORT: '7103' - CLUSTER_JOIN: 'weaviate-node-1:7100' - RAFT_JOIN: 'node1,node2,node3' - RAFT_BOOTSTRAP_EXPECT: 3 - - weaviate-node-3: - init: true - command: - - --host - - 0.0.0.0 - - --port - - '8080' - - --scheme - - http - image: cr.weaviate.io/semitechnologies/weaviate:||site.weaviate_version|| - ports: - - 8082:8080 - - 6062:6060 - - 50053:50051 - restart: on-failure:0 - volumes: - - ./data-node-3:/var/lib/weaviate - environment: - LOG_LEVEL: 'debug' - QUERY_DEFAULTS_LIMIT: 25 - AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED: 'true' - PERSISTENCE_DATA_PATH: '/var/lib/weaviate' - ENABLE_API_BASED_MODULES: 'true' - CLUSTER_HOSTNAME: 'node3' - CLUSTER_GOSSIP_BIND_PORT: '7104' - CLUSTER_DATA_BIND_PORT: '7105' - CLUSTER_JOIN: 'weaviate-node-1:7100' - RAFT_JOIN: 'node1,node2,node3' - RAFT_BOOTSTRAP_EXPECT: 3 -``` - -</details> - -:::note Port number conventions -It is a Weaviate convention to set the `CLUSTER_DATA_BIND_PORT` to 1 higher than `CLUSTER_GOSSIP_BIND_PORT`. -::: - - -## Shell attachment options - -The output of `docker compose up` is quite verbose as it attaches to the logs of all containers. - -You can attach the logs only to Weaviate itself, for example, by running the following command instead of `docker compose up`: - -```bash -# Run Docker Compose -docker compose up -d && docker compose logs -f weaviate -``` - -Alternatively you can run docker compose entirely detached with `docker compose up -d` _and_ then poll `{bindaddress}:{port}/v1/meta` until you receive a status `200 OK`. - -<!-- TODO: -1. Check that all environment variables are also applicable for the kubernetes setup and associated values.yaml config file. -2. Take this section out and into References; potentially consolidate with others as they are strewn around the docs. (E.g. backup env variables are not included here.) --> - -## Troubleshooting - -### Set `CLUSTER_HOSTNAME` if it may change over time - -In some systems, the cluster hostname may change over time. This is known to create issues with a single-node Weaviate deployment. To avoid this, set the `CLUSTER_HOSTNAME` environment variable in the `values.yaml` file to the cluster hostname. - -```yaml ---- -services: - weaviate: - # ... - environment: - CLUSTER_HOSTNAME: 'node1' -... -``` - -## Related pages - -- If you are new to Docker, see [Docker Introduction for Weaviate Users](https://weaviate.io/blog/docker-and-containers-with-weaviate). - -## Questions and feedback - -import DocsFeedback from '/_includes/docs-feedback.mdx'; - -<DocsFeedback/> diff --git a/docs/weaviate/installation/index.md b/docs/weaviate/installation/index.md index 00a88be1..ad5815ab 100644 --- a/docs/weaviate/installation/index.md +++ b/docs/weaviate/installation/index.md @@ -14,14 +14,14 @@ If you are upgrading from a previous version of Weaviate, see the [Migration Gui To install and configure Weaviate, see the following: - **[Weaviate Cloud](../../cloud/quickstart.mdx)**: Managed services for development and production environments. -- **[Docker Compose](./docker-compose.md)**: Docker containers are well suited for development and testing. -- **[Kubernetes](./kubernetes.md)**: Kubernetes is ideal for scalable, production deployments. +- **[Docker Compose](docs/deploy/installation-guides/docker-installation.md)**: Docker containers are well suited for development and testing. +- **[Kubernetes](docs/deploy/installation-guides/k8s-installation.md)**: Kubernetes is ideal for scalable, production deployments. - **[Snowpark Container Services](./spcs-integration.mdx)** Deploy Weaviate in Snowflake's Snowpark environment. - **[Embedded Weaviate](./embedded.md)**: Experimental. Embedded Weaviate is a client based tool. ## Configuration files -Docker Compose and Kubernetes use yaml files to configure Weaviate instances. Docker uses the [`docker-compose.yml`](./docker-compose.md) file. Kubernetes relies on [Helm charts](./kubernetes.md#weaviate-helm-chart) and the `values.yaml` file. The Weaviate documentation also calls these files `configuration yaml files`. +Docker Compose and Kubernetes use yaml files to configure Weaviate instances. Docker uses the [`docker-compose.yml`](docs/deploy/installation-guides/docker-installation.md) file. Kubernetes relies on [Helm charts](docs/deploy/installation-guides/k8s-installation.md#weaviate-helm-chart) and the `values.yaml` file. The Weaviate documentation also calls these files `configuration yaml files`. If you are self-hosting, consider experimenting on a small scale with Docker and then transferring your configuration to Kubernetes Helm charts when you are more familiar with Weaviate. diff --git a/docs/weaviate/installation/kubernetes.md b/docs/weaviate/installation/kubernetes.md deleted file mode 100644 index a3ed2511..00000000 --- a/docs/weaviate/installation/kubernetes.md +++ /dev/null @@ -1,265 +0,0 @@ ---- -title: Installing Kubernetes -sidebar_position: 3 -image: og/docs/installation.jpg -# tags: ['installation', 'Kubernetes'] ---- - -:::tip End-to-end guide -For a tutorial on how to use [minikube](https://minikube.sigs.k8s.io/docs/) to deploy Weaviate on Kubernetes, see the Weaviate Academy course, [Weaviate on Kubernetes](../../academy/deployment/k8s/index.md). -::: - -:::info Deploying to Production -If looking for details and best practices for deploying Weaviate in production, see [Weaviate in Production](docs/deploy/production/Kubernetes/k8s-poc.md) -::: - -## Prerequisites - -* A recent Kubernetes Cluster (at least version 1.23). If you are in a development environment, consider using the kubernetes cluster that is built into Docker desktop. For more information, see the [Docker documentation](https://docs.docker.com/desktop/kubernetes/). -* The cluster needs to be able to provision `PersistentVolumes` using Kubernetes' `PersistentVolumeClaims`. -* A file system that can be mounted read-write by a single node to allow Kubernetes' `ReadWriteOnce` access mode. -* Helm version v3 or higher. The current Helm chart is version `||site.helm_version||`. - -## Weaviate Helm chart - -:::note Important: Set the correct Weaviate version -As a best practice, explicitly set the Weaviate version in the Helm chart.<br/><br/> - -Set the version in your `values.yaml` file or [overwrite the default value](#deploy-install-the-helm-chart) during deployment. -::: - -To install the Weaviate chart on your Kubernetes cluster, follow these steps: - -### Verify tool setup and cluster access - -```bash -# Check if helm is installed -helm version -# Make sure `kubectl` is configured correctly and you can access the cluster. -# For example, try listing the pods in the currently configured namespace. -kubectl get pods -``` - -### Get the Helm Chart - -Add the Weaviate helm repo that contains the Weaviate helm chart. - -```bash -helm repo add weaviate https://weaviate.github.io/weaviate-helm -helm repo update -``` - -Get the default `values.yaml` configuration file from the Weaviate helm chart: -```bash -helm show values weaviate/weaviate > values.yaml -``` - -### Modify values.yaml - -To customize the Helm chart for your environment, edit the [`values.yaml`](https://github.com/weaviate/weaviate-helm/blob/master/weaviate/values.yaml) -file. The default `yaml` file is extensively documented to help you configure your system. - -#### Replication - -The default configuration defines one Weaviate replica cluster. - -#### Local models - -Local models, such as `text2vec-transformers`, `qna-transformers`, and `img2vec-neural` are disabled by default. To enable a model, set the model's -`enabled` flag to `true`. - -#### Resource limits - -In an effort to improve performance, constraints on module resources are commented out. To constrain resources for specific modules, add the constraints in your `values.yaml` file. - -#### gRPC service configuration - -gRPC service is enabled by default. If using an older Helm chart, edit your `values.yaml` file to enable gRPC. -Check that the `enabled` field is set to `true` and the `type` field to `LoadBalancer`. These settings allow you to access the [gRPC API](https://weaviate.io/blog/grpc-performance-improvements) from outside the Kubernetes cluster. - -```yaml -grpcService: - enabled: true # ⬅️ Make sure this is set to true - name: weaviate-grpc - ports: - - name: grpc - protocol: TCP - port: 50051 - type: LoadBalancer # ⬅️ Set this to LoadBalancer (from NodePort) -``` - -#### Authentication and authorization - -An example configuration for authentication is shown below: - -```yaml -authentication: - apikey: - enabled: true - allowed_keys: - - readonly-key - - secr3tk3y - users: - - readonly@example.com - - admin@example.com - anonymous_access: - enabled: false - oidc: - enabled: true - issuer: https://auth.wcs.api.weaviate.io/auth/realms/SeMI - username_claim: email - groups_claim: groups - client_id: wcs -authorization: - admin_list: - enabled: true - users: - - someuser@weaviate.io - - admin@example.com - readonly_users: - - readonly@example.com -``` - -In this example, the key `readonly-key` will authenticate a user as the `readonly@example.com` identity, and `secr3tk3y` will authenticate a user as `admin@example.com`. - -OIDC authentication is also enabled, with WCD as the token issuer/identity provider. Thus, users with WCD accounts could be authenticated. This configuration sets `someuser@weaviate.io` as an admin user, so if `someuser@weaviate.io` were to authenticate, they will be given full (read and write) privileges. - -For further, general documentation on authentication and authorization configuration, see: -- [Authentication](docs/deploy/config-guides/authentication.md) -- [Authorization](docs/deploy/config-guides/authorization.md) - -#### Run as non-root user - -By default, weaviate runs as the root user. To run as a non-privileged user, edit the settings in the `containerSecurityContext` section. - -The `init` container always runs as root to configure the node. Once the system is started, it run a non-privileged user if you have one configured. - -### Deploy (install the Helm chart) - -You can deploy the helm charts as follows: - -```bash -# Create a Weaviate namespace -kubectl create namespace weaviate - -# Deploy -helm upgrade --install \ - "weaviate" \ - weaviate/weaviate \ - --namespace "weaviate" \ - --values ./values.yaml -``` - -The above assumes that you have permissions to create a new namespace. If you -have only namespace-level permissions, you can skip creating a new -namespace and adjust the namespace argument on `helm upgrade` according to the -name of your pre-configured namespace. - -Optionally, you can provide the `--create-namespace` parameter which will create the namespace if not present. - -### Updating the installation after the initial deployment - -The above command (`helm upgrade...`) is idempotent. In other words, you can run it multiple times after adjusting your desired configuration without causing any unintended changes or side effects. - -### Upgrading to `1.25` or higher from pre-`1.25` - -:::caution Important -::: - -To upgrade to `1.25` or higher from a pre-`1.25` version, you must delete the deployed `StatefulSet`, update the helm chart to version `17.0.0` or higher, and re-deploy Weaviate. - -See the [1.25 migration guide for Kubernetes](docs/deploy/migration/weaviate-1-25.md) for more details. - -### Using EFS with Weaviate - -In some circumstances, you may wish, or need, to use EFS (Amazon Elastic File System) with Weaviate. And we note in the case of AWS Fargate, you must create the [PV (persistent volume)](https://kubernetes.io/docs/concepts/storage/persistent-volumes/) manually, as the PVC will NOT create a PV for you. - -To use EFS with Weaviate, you need to: - -1. Create an EFS file system. -1. Create an EFS access point for every Weaviate replica. - 1. All of the Access Points must have a different root-directory so that Pods do not share the data, otherwise it will fail. -1. Create EFS mount targets for each subnet of the VPC where Weaviate is deployed. -1. Create StorageClass in Kubernetes using EFS. -1. Create Weaviate Volumes, where each volume has a different AccessPoint for VolumeHandle(as mentioned above). -1. Deploy Weaviate. - -This code is an example of a PV for `weaviate-0` Pod: - -```yaml -apiVersion: v1 -kind: PersistentVolume -metadata: - name: weaviate-0 -spec: - capacity: - storage: 8Gi - volumeMode: Filesystem - accessModes: - - ReadWriteOnce - persistentVolumeReclaimPolicy: Delete - storageClassName: "efs-sc" - csi: - driver: efs.csi.aws.com - volumeHandle: <FileSystemId>::<AccessPointId-for-weaviate-0-Pod> - claimRef: - namespace: <namespace where Weaviate is/going to be deployed> - name: weaviate-data-weaviate-0 -``` - -For more, general information on running EFS with Fargate, we recommend reading [this AWS blog](https://aws.amazon.com/blogs/containers/running-stateful-workloads-with-amazon-eks-on-aws-fargate-using-amazon-efs/). - -### Using Azure file CSI with Weaviate - -:::danger Important - -The provisioner `file.csi.azure.com` is **not supported** and will lead to file corruptions. - -::: - -Instead, make sure the storage class defined in values.yaml is from provisioner `disk.csi.azure.com`, for example: - -```yaml -storage: - size: 32Gi - storageClassName: managed -``` - -you can get the list of available storage classes in your cluster with: - -``` -kubectl get storageclasses -``` - -## Troubleshooting - -- If you see `No private IP address found, and explicit IP not provided`, set the pod subnet to be in an valid ip address range of the following: - - ``` - 10.0.0.0/8 - 100.64.0.0/10 - 172.16.0.0/12 - 192.168.0.0/16 - 198.19.0.0/16 - ``` - -### Set `CLUSTER_HOSTNAME` if it may change over time - -In some systems, the cluster hostname may change over time. This is known to create issues with a single-node Weaviate deployment. To avoid this, set the `CLUSTER_HOSTNAME` environment variable in the `values.yaml` file to the cluster hostname. - -```yaml -env: - - CLUSTER_HOSTNAME: "node-1" -``` - -## Additional Configuration Help - -- [Cannot list resource "configmaps" in API group when deploying Weaviate k8s setup on GCP](https://stackoverflow.com/questions/58501558/cannot-list-resource-configmaps-in-api-group-when-deploying-weaviate-k8s-setup) - -- [Error: UPGRADE FAILED: configmaps is forbidden](https://stackoverflow.com/questions/58501558/cannot-list-resource-configmaps-in-api-group-when-deploying-weaviate-k8s-setup) - -## Questions and feedback - -import DocsFeedback from '/_includes/docs-feedback.mdx'; - -<DocsFeedback/> diff --git a/docs/weaviate/manage-collections/multi-node-setup.mdx b/docs/weaviate/manage-collections/multi-node-setup.mdx index 6321be86..08226252 100644 --- a/docs/weaviate/manage-collections/multi-node-setup.mdx +++ b/docs/weaviate/manage-collections/multi-node-setup.mdx @@ -21,7 +21,7 @@ import RaftRFChangeWarning from "/_includes/1-25-replication-factor.mdx"; <RaftRFChangeWarning /> -Configure replication settings, such as [async replication](/docs/weaviate/configuration/replication#async-replication-settings) and [deletion resolution strategy](../concepts/replication-architecture/consistency.md#deletion-resolution-strategies). +Configure replication settings, such as [async replication](docs/deploy/config-guides/replication.md#async-replication-settings) and [deletion resolution strategy](../concepts/replication-architecture/consistency.md#deletion-resolution-strategies). <Tabs groupId="languages"> <TabItem value="py" label="Python Client v4"> @@ -96,7 +96,7 @@ http://localhost:8080/v1/schema Additional information </summary> -To use replication factors greater than one, use a [multi-node deployment](../installation/docker-compose.md#multi-node-configuration). +To use replication factors greater than one, use a [multi-node deployment](docs/deploy/installation-guides/docker-installation.md#multi-node-configuration). For details on the configuration parameters, see the following: diff --git a/docs/weaviate/model-providers/anthropic/generative.md b/docs/weaviate/model-providers/anthropic/generative.md index 32a63464..889a407f 100644 --- a/docs/weaviate/model-providers/anthropic/generative.md +++ b/docs/weaviate/model-providers/anthropic/generative.md @@ -40,7 +40,7 @@ This integration is enabled by default on Weaviate Cloud (WCD) serverless instan <details> <summary>For self-hosted users</summary> -- Check the [cluster metadata](../../config-refs/meta.md) to verify if the module is enabled. +- Check the [cluster metadata](docs/deploy/config-guides/meta.md) to verify if the module is enabled. - Follow the [how-to configure modules](../../configuration/modules.md) guide to enable the module in Weaviate. </details> diff --git a/docs/weaviate/model-providers/anyscale/generative.md b/docs/weaviate/model-providers/anyscale/generative.md index 709932e9..09cc2579 100644 --- a/docs/weaviate/model-providers/anyscale/generative.md +++ b/docs/weaviate/model-providers/anyscale/generative.md @@ -40,7 +40,7 @@ This integration is enabled by default on Weaviate Cloud (WCD) serverless instan <details> <summary>For self-hosted users</summary> -- Check the [cluster metadata](../../config-refs/meta.md) to verify if the module is enabled. +- Check the [cluster metadata](docs/deploy/config-guides/meta.md) to verify if the module is enabled. - Follow the [how-to configure modules](../../configuration/modules.md) guide to enable the module in Weaviate. </details> diff --git a/docs/weaviate/model-providers/aws/embeddings.md b/docs/weaviate/model-providers/aws/embeddings.md index 47bf89b0..d075021e 100644 --- a/docs/weaviate/model-providers/aws/embeddings.md +++ b/docs/weaviate/model-providers/aws/embeddings.md @@ -43,7 +43,7 @@ This integration is enabled by default on Weaviate Cloud (WCD) serverless instan <details> <summary>For self-hosted users</summary> -- Check the [cluster metadata](../../config-refs/meta.md) to verify if the module is enabled. +- Check the [cluster metadata](docs/deploy/config-guides/meta.md) to verify if the module is enabled. - Follow the [how-to configure modules](../../configuration/modules.md) guide to enable the module in Weaviate. </details> diff --git a/docs/weaviate/model-providers/aws/generative.md b/docs/weaviate/model-providers/aws/generative.md index 621cad52..fb889450 100644 --- a/docs/weaviate/model-providers/aws/generative.md +++ b/docs/weaviate/model-providers/aws/generative.md @@ -41,7 +41,7 @@ This integration is enabled by default on Weaviate Cloud (WCD) serverless instan <details> <summary>For self-hosted users</summary> -- Check the [cluster metadata](../../config-refs/meta.md) to verify if the module is enabled. +- Check the [cluster metadata](docs/deploy/config-guides/meta.md) to verify if the module is enabled. - Follow the [how-to configure modules](../../configuration/modules.md) guide to enable the module in Weaviate. </details> diff --git a/docs/weaviate/model-providers/cohere/embeddings-multimodal.md b/docs/weaviate/model-providers/cohere/embeddings-multimodal.md index 16037165..b2119dce 100644 --- a/docs/weaviate/model-providers/cohere/embeddings-multimodal.md +++ b/docs/weaviate/model-providers/cohere/embeddings-multimodal.md @@ -43,7 +43,7 @@ This integration is enabled by default on Weaviate Cloud (WCD) serverless instan <details> <summary>For self-hosted users</summary> -- Check the [cluster metadata](../../config-refs/meta.md) to verify if the module is enabled. +- Check the [cluster metadata](docs/deploy/config-guides/meta.md) to verify if the module is enabled. - Follow the [how-to configure modules](../../configuration/modules.md) guide to enable the module in Weaviate. </details> diff --git a/docs/weaviate/model-providers/cohere/embeddings.md b/docs/weaviate/model-providers/cohere/embeddings.md index 230c250d..0b9f6f0e 100644 --- a/docs/weaviate/model-providers/cohere/embeddings.md +++ b/docs/weaviate/model-providers/cohere/embeddings.md @@ -46,7 +46,7 @@ This integration is enabled by default on Weaviate Cloud (WCD) serverless instan <details> <summary>For self-hosted users</summary> -- Check the [cluster metadata](../../config-refs/meta.md) to verify if the module is enabled. +- Check the [cluster metadata](docs/deploy/config-guides/meta.md) to verify if the module is enabled. - Follow the [how-to configure modules](../../configuration/modules.md) guide to enable the module in Weaviate. </details> diff --git a/docs/weaviate/model-providers/cohere/generative.md b/docs/weaviate/model-providers/cohere/generative.md index c69b6f06..d0b182ab 100644 --- a/docs/weaviate/model-providers/cohere/generative.md +++ b/docs/weaviate/model-providers/cohere/generative.md @@ -41,7 +41,7 @@ This integration is enabled by default on Weaviate Cloud (WCD) serverless instan <details> <summary>For self-hosted users</summary> -- Check the [cluster metadata](../../config-refs/meta.md) to verify if the module is enabled. +- Check the [cluster metadata](docs/deploy/config-guides/meta.md) to verify if the module is enabled. - Follow the [how-to configure modules](../../configuration/modules.md) guide to enable the module in Weaviate. </details> diff --git a/docs/weaviate/model-providers/cohere/reranker.md b/docs/weaviate/model-providers/cohere/reranker.md index f214b14a..732825cd 100644 --- a/docs/weaviate/model-providers/cohere/reranker.md +++ b/docs/weaviate/model-providers/cohere/reranker.md @@ -41,7 +41,7 @@ This integration is enabled by default on Weaviate Cloud (WCD) serverless instan <details> <summary>For self-hosted users</summary> -- Check the [cluster metadata](../../config-refs/meta.md) to verify if the module is enabled. +- Check the [cluster metadata](docs/deploy/config-guides/meta.md) to verify if the module is enabled. - Follow the [how-to configure modules](../../configuration/modules.md) guide to enable the module in Weaviate. </details> diff --git a/docs/weaviate/model-providers/databricks/embeddings.md b/docs/weaviate/model-providers/databricks/embeddings.md index e03f6213..cfcd5f3a 100644 --- a/docs/weaviate/model-providers/databricks/embeddings.md +++ b/docs/weaviate/model-providers/databricks/embeddings.md @@ -44,7 +44,7 @@ This integration is enabled by default on Weaviate Cloud (WCD) serverless instan <details> <summary>For self-hosted users</summary> -- Check the [cluster metadata](../../config-refs/meta.md) to verify if the module is enabled. +- Check the [cluster metadata](docs/deploy/config-guides/meta.md) to verify if the module is enabled. - Follow the [how-to configure modules](../../configuration/modules.md) guide to enable the module in Weaviate. </details> diff --git a/docs/weaviate/model-providers/databricks/generative.md b/docs/weaviate/model-providers/databricks/generative.md index a6d17923..4988b639 100644 --- a/docs/weaviate/model-providers/databricks/generative.md +++ b/docs/weaviate/model-providers/databricks/generative.md @@ -42,7 +42,7 @@ This integration is enabled by default on Weaviate Cloud (WCD) serverless instan <details> <summary>For self-hosted users</summary> -- Check the [cluster metadata](../../config-refs/meta.md) to verify if the module is enabled. +- Check the [cluster metadata](docs/deploy/config-guides/meta.md) to verify if the module is enabled. - Follow the [how-to configure modules](../../configuration/modules.md) guide to enable the module in Weaviate. </details> diff --git a/docs/weaviate/model-providers/friendliai/generative.md b/docs/weaviate/model-providers/friendliai/generative.md index 70e14460..87590981 100644 --- a/docs/weaviate/model-providers/friendliai/generative.md +++ b/docs/weaviate/model-providers/friendliai/generative.md @@ -43,7 +43,7 @@ This integration is enabled by default on Weaviate Cloud (WCD) serverless instan <details> <summary>For self-hosted users</summary> -- Check the [cluster metadata](../../config-refs/meta.md) to verify if the module is enabled. +- Check the [cluster metadata](docs/deploy/config-guides/meta.md) to verify if the module is enabled. - Follow the [how-to configure modules](../../configuration/modules.md) guide to enable the module in Weaviate. </details> diff --git a/docs/weaviate/model-providers/google/embeddings-multimodal.md b/docs/weaviate/model-providers/google/embeddings-multimodal.md index 9760e39b..6a635d55 100644 --- a/docs/weaviate/model-providers/google/embeddings-multimodal.md +++ b/docs/weaviate/model-providers/google/embeddings-multimodal.md @@ -48,7 +48,7 @@ This integration is enabled by default on Weaviate Cloud (WCD) serverless instan <details> <summary>For self-hosted users</summary> -- Check the [cluster metadata](../../config-refs/meta.md) to verify if the module is enabled. +- Check the [cluster metadata](docs/deploy/config-guides/meta.md) to verify if the module is enabled. - Follow the [how-to configure modules](../../configuration/modules.md) guide to enable the module in Weaviate. </details> diff --git a/docs/weaviate/model-providers/google/embeddings.md b/docs/weaviate/model-providers/google/embeddings.md index a93c1607..9fa2e66a 100644 --- a/docs/weaviate/model-providers/google/embeddings.md +++ b/docs/weaviate/model-providers/google/embeddings.md @@ -51,7 +51,7 @@ This integration is enabled by default on Weaviate Cloud (WCD) serverless instan <details> <summary>For self-hosted users</summary> -- Check the [cluster metadata](../../config-refs/meta.md) to verify if the module is enabled. +- Check the [cluster metadata](docs/deploy/config-guides/meta.md) to verify if the module is enabled. - Follow the [how-to configure modules](../../configuration/modules.md) guide to enable the module in Weaviate. </details> diff --git a/docs/weaviate/model-providers/google/generative.md b/docs/weaviate/model-providers/google/generative.md index f06a4c37..befb2f94 100644 --- a/docs/weaviate/model-providers/google/generative.md +++ b/docs/weaviate/model-providers/google/generative.md @@ -49,7 +49,7 @@ This integration is enabled by default on Weaviate Cloud (WCD) serverless instan <details> <summary>For self-hosted users</summary> -- Check the [cluster metadata](../../config-refs/meta.md) to verify if the module is enabled. +- Check the [cluster metadata](docs/deploy/config-guides/meta.md) to verify if the module is enabled. - Follow the [how-to configure modules](../../configuration/modules.md) guide to enable the module in Weaviate. </details> diff --git a/docs/weaviate/model-providers/gpt4all/embeddings.md b/docs/weaviate/model-providers/gpt4all/embeddings.md index 03708419..bc2e5591 100644 --- a/docs/weaviate/model-providers/gpt4all/embeddings.md +++ b/docs/weaviate/model-providers/gpt4all/embeddings.md @@ -44,7 +44,7 @@ This integration is not available for Weaviate Cloud (WCD) serverless instances, <details> <summary>For self-hosted users</summary> -- Check the [cluster metadata](../../config-refs/meta.md) to verify if the module is enabled. +- Check the [cluster metadata](docs/deploy/config-guides/meta.md) to verify if the module is enabled. - Follow the [how-to configure modules](../../configuration/modules.md) guide to enable the module in Weaviate. </details> @@ -60,7 +60,7 @@ The following example shows how to configure the GPT4All integration in Weaviate #### Docker Option 1: Use a pre-configured `docker-compose.yml` file -Follow the instructions on the [Weaviate Docker installation configurator](../../installation/docker-compose.md#configurator) to download a pre-configured `docker-compose.yml` file with a selected model +Follow the instructions on the [Weaviate Docker installation configurator](docs/deploy/installation-guides/docker-installation.md#configurator) to download a pre-configured `docker-compose.yml` file with a selected model <br/> #### Docker Option 2: Add the configuration manually diff --git a/docs/weaviate/model-providers/huggingface/embeddings.md b/docs/weaviate/model-providers/huggingface/embeddings.md index 827fd696..ccc2bff6 100644 --- a/docs/weaviate/model-providers/huggingface/embeddings.md +++ b/docs/weaviate/model-providers/huggingface/embeddings.md @@ -42,7 +42,7 @@ This integration is enabled by default on Weaviate Cloud (WCD) serverless instan <details> <summary>For self-hosted users</summary> -- Check the [cluster metadata](../../config-refs/meta.md) to verify if the module is enabled. +- Check the [cluster metadata](docs/deploy/config-guides/meta.md) to verify if the module is enabled. - Follow the [how-to configure modules](../../configuration/modules.md) guide to enable the module in Weaviate. </details> diff --git a/docs/weaviate/model-providers/imagebind/embeddings-multimodal.md b/docs/weaviate/model-providers/imagebind/embeddings-multimodal.md index de4c655e..0e47763b 100644 --- a/docs/weaviate/model-providers/imagebind/embeddings-multimodal.md +++ b/docs/weaviate/model-providers/imagebind/embeddings-multimodal.md @@ -39,7 +39,7 @@ This integration is not available for Weaviate Cloud (WCD) serverless instances, #### Enable the integration module -- Check the [cluster metadata](../../config-refs/meta.md) to verify if the module is enabled. +- Check the [cluster metadata](docs/deploy/config-guides/meta.md) to verify if the module is enabled. - Follow the [how-to configure modules](../../configuration/modules.md) guide to enable the module in Weaviate. #### Configure the integration @@ -53,7 +53,7 @@ The following example shows how to configure the ImageBind integration in Weavia #### Docker Option 1: Use a pre-configured `docker-compose.yml` file -Follow the instructions on the [Weaviate Docker installation configurator](../../installation/docker-compose.md#configurator) to download a pre-configured `docker-compose.yml` file with a selected model +Follow the instructions on the [Weaviate Docker installation configurator](docs/deploy/installation-guides/docker-installation.md#configurator) to download a pre-configured `docker-compose.yml` file with a selected model <br/> #### Docker Option 2: Add the configuration manually diff --git a/docs/weaviate/model-providers/jinaai/embeddings-colbert.md b/docs/weaviate/model-providers/jinaai/embeddings-colbert.md index 0e66d70a..697707b8 100644 --- a/docs/weaviate/model-providers/jinaai/embeddings-colbert.md +++ b/docs/weaviate/model-providers/jinaai/embeddings-colbert.md @@ -44,7 +44,7 @@ This integration is enabled by default on Weaviate Cloud (WCD) serverless instan <details> <summary>For self-hosted users</summary> -- Check the [cluster metadata](../../config-refs/meta.md) to verify if the module is enabled. +- Check the [cluster metadata](docs/deploy/config-guides/meta.md) to verify if the module is enabled. - Follow the [how-to configure modules](../../configuration/modules.md) guide to enable the module in Weaviate. </details> diff --git a/docs/weaviate/model-providers/jinaai/embeddings-multimodal.md b/docs/weaviate/model-providers/jinaai/embeddings-multimodal.md index c1810955..6743fdd9 100644 --- a/docs/weaviate/model-providers/jinaai/embeddings-multimodal.md +++ b/docs/weaviate/model-providers/jinaai/embeddings-multimodal.md @@ -42,7 +42,7 @@ This integration is enabled by default on Weaviate Cloud (WCD) serverless instan <details> <summary>For self-hosted users</summary> -- Check the [cluster metadata](../../config-refs/meta.md) to verify if the module is enabled. +- Check the [cluster metadata](docs/deploy/config-guides/meta.md) to verify if the module is enabled. - Follow the [how-to configure modules](../../configuration/modules.md) guide to enable the module in Weaviate. </details> diff --git a/docs/weaviate/model-providers/jinaai/embeddings.md b/docs/weaviate/model-providers/jinaai/embeddings.md index db50c10f..2afa6228 100644 --- a/docs/weaviate/model-providers/jinaai/embeddings.md +++ b/docs/weaviate/model-providers/jinaai/embeddings.md @@ -42,7 +42,7 @@ This integration is enabled by default on Weaviate Cloud (WCD) serverless instan <details> <summary>For self-hosted users</summary> -- Check the [cluster metadata](../../config-refs/meta.md) to verify if the module is enabled. +- Check the [cluster metadata](docs/deploy/config-guides/meta.md) to verify if the module is enabled. - Follow the [how-to configure modules](../../configuration/modules.md) guide to enable the module in Weaviate. </details> diff --git a/docs/weaviate/model-providers/jinaai/reranker.md b/docs/weaviate/model-providers/jinaai/reranker.md index 9f358bda..8ee9b451 100644 --- a/docs/weaviate/model-providers/jinaai/reranker.md +++ b/docs/weaviate/model-providers/jinaai/reranker.md @@ -42,7 +42,7 @@ This integration is enabled by default on Weaviate Cloud (WCD) serverless instan <details> <summary>For self-hosted users</summary> -- Check the [cluster metadata](../../config-refs/meta.md) to verify if the module is enabled. +- Check the [cluster metadata](docs/deploy/config-guides/meta.md) to verify if the module is enabled. - Follow the [how-to configure modules](../../configuration/modules.md) guide to enable the module in Weaviate. </details> diff --git a/docs/weaviate/model-providers/kubeai/embeddings.md b/docs/weaviate/model-providers/kubeai/embeddings.md index f37f5711..64ecfc42 100644 --- a/docs/weaviate/model-providers/kubeai/embeddings.md +++ b/docs/weaviate/model-providers/kubeai/embeddings.md @@ -44,7 +44,7 @@ This integration is enabled by default on Weaviate Cloud (WCD) serverless instan <details> <summary>For self-hosted users</summary> -- Check the [cluster metadata](../../config-refs/meta.md) to verify if the module is enabled. +- Check the [cluster metadata](docs/deploy/config-guides/meta.md) to verify if the module is enabled. - Follow the [how-to configure modules](../../configuration/modules.md) guide to enable the module in Weaviate. </details> diff --git a/docs/weaviate/model-providers/kubeai/generative.md b/docs/weaviate/model-providers/kubeai/generative.md index 4c6352f1..985f0730 100644 --- a/docs/weaviate/model-providers/kubeai/generative.md +++ b/docs/weaviate/model-providers/kubeai/generative.md @@ -44,7 +44,7 @@ This integration is enabled by default on Weaviate Cloud (WCD) serverless instan <details> <summary>For self-hosted users</summary> -- Check the [cluster metadata](../../config-refs/meta.md) to verify if the module is enabled. +- Check the [cluster metadata](docs/deploy/config-guides/meta.md) to verify if the module is enabled. - Follow the [how-to configure modules](../../configuration/modules.md) guide to enable the module in Weaviate. </details> diff --git a/docs/weaviate/model-providers/mistral/embeddings.md b/docs/weaviate/model-providers/mistral/embeddings.md index 258642ef..7108af85 100644 --- a/docs/weaviate/model-providers/mistral/embeddings.md +++ b/docs/weaviate/model-providers/mistral/embeddings.md @@ -42,7 +42,7 @@ This integration is enabled by default on Weaviate Cloud (WCD) serverless instan <details> <summary>For self-hosted users</summary> -- Check the [cluster metadata](../../config-refs/meta.md) to verify if the module is enabled. +- Check the [cluster metadata](docs/deploy/config-guides/meta.md) to verify if the module is enabled. - Follow the [how-to configure modules](../../configuration/modules.md) guide to enable the module in Weaviate. </details> diff --git a/docs/weaviate/model-providers/mistral/generative.md b/docs/weaviate/model-providers/mistral/generative.md index f2a1111c..3c51c42b 100644 --- a/docs/weaviate/model-providers/mistral/generative.md +++ b/docs/weaviate/model-providers/mistral/generative.md @@ -41,7 +41,7 @@ This integration is enabled by default on Weaviate Cloud (WCD) serverless instan <details> <summary>For self-hosted users</summary> -- Check the [cluster metadata](../../config-refs/meta.md) to verify if the module is enabled. +- Check the [cluster metadata](docs/deploy/config-guides/meta.md) to verify if the module is enabled. - Follow the [how-to configure modules](../../configuration/modules.md) guide to enable the module in Weaviate. </details> diff --git a/docs/weaviate/model-providers/nvidia/embeddings-multimodal.md b/docs/weaviate/model-providers/nvidia/embeddings-multimodal.md index 4d546a05..053261d1 100644 --- a/docs/weaviate/model-providers/nvidia/embeddings-multimodal.md +++ b/docs/weaviate/model-providers/nvidia/embeddings-multimodal.md @@ -43,7 +43,7 @@ This integration is enabled by default on Weaviate Cloud (WCD) serverless instan <details> <summary>For self-hosted users</summary> -- Check the [cluster metadata](../../config-refs/meta.md) to verify if the module is enabled. +- Check the [cluster metadata](docs/deploy/config-guides/meta.md) to verify if the module is enabled. - Follow the [how-to configure modules](../../configuration/modules.md) guide to enable the module in Weaviate. </details> diff --git a/docs/weaviate/model-providers/nvidia/embeddings.md b/docs/weaviate/model-providers/nvidia/embeddings.md index 48d40715..6764ade6 100644 --- a/docs/weaviate/model-providers/nvidia/embeddings.md +++ b/docs/weaviate/model-providers/nvidia/embeddings.md @@ -45,7 +45,7 @@ This integration is enabled by default on Weaviate Cloud (WCD) serverless instan <details> <summary>For self-hosted users</summary> -- Check the [cluster metadata](../../config-refs/meta.md) to verify if the module is enabled. +- Check the [cluster metadata](docs/deploy/config-guides/meta.md) to verify if the module is enabled. - Follow the [how-to configure modules](../../configuration/modules.md) guide to enable the module in Weaviate. </details> diff --git a/docs/weaviate/model-providers/nvidia/generative.md b/docs/weaviate/model-providers/nvidia/generative.md index bede2466..00bd6ff4 100644 --- a/docs/weaviate/model-providers/nvidia/generative.md +++ b/docs/weaviate/model-providers/nvidia/generative.md @@ -42,7 +42,7 @@ This integration is enabled by default on Weaviate Cloud (WCD) serverless instan <details> <summary>For self-hosted users</summary> -- Check the [cluster metadata](../../config-refs/meta.md) to verify if the module is enabled. +- Check the [cluster metadata](docs/deploy/config-guides/meta.md) to verify if the module is enabled. - Follow the [how-to configure modules](../../configuration/modules.md) guide to enable the module in Weaviate. </details> diff --git a/docs/weaviate/model-providers/nvidia/reranker.md b/docs/weaviate/model-providers/nvidia/reranker.md index b7c2723b..5fcd2b79 100644 --- a/docs/weaviate/model-providers/nvidia/reranker.md +++ b/docs/weaviate/model-providers/nvidia/reranker.md @@ -43,7 +43,7 @@ This integration is enabled by default on Weaviate Cloud (WCD) serverless instan <details> <summary>For self-hosted users</summary> -- Check the [cluster metadata](../../config-refs/meta.md) to verify if the module is enabled. +- Check the [cluster metadata](docs/deploy/config-guides/meta.md) to verify if the module is enabled. - Follow the [how-to configure modules](../../configuration/modules.md) guide to enable the module in Weaviate. </details> diff --git a/docs/weaviate/model-providers/octoai/embeddings.md b/docs/weaviate/model-providers/octoai/embeddings.md index 3616c919..c4def7a2 100644 --- a/docs/weaviate/model-providers/octoai/embeddings.md +++ b/docs/weaviate/model-providers/octoai/embeddings.md @@ -46,7 +46,7 @@ This integration is enabled by default on Weaviate Cloud (WCD) serverless instan <details> <summary>For self-hosted users</summary> -- Check the [cluster metadata](../../config-refs/meta.md) to verify if the module is enabled. +- Check the [cluster metadata](docs/deploy/config-guides/meta.md) to verify if the module is enabled. - Follow the [how-to configure modules](../../configuration/modules.md) guide to enable the module in Weaviate. </details> diff --git a/docs/weaviate/model-providers/octoai/generative.md b/docs/weaviate/model-providers/octoai/generative.md index 6cfb99b1..7558faa5 100644 --- a/docs/weaviate/model-providers/octoai/generative.md +++ b/docs/weaviate/model-providers/octoai/generative.md @@ -47,7 +47,7 @@ This integration is enabled by default on Weaviate Cloud (WCD) serverless instan <details> <summary>For self-hosted users</summary> -- Check the [cluster metadata](../../config-refs/meta.md) to verify if the module is enabled. +- Check the [cluster metadata](docs/deploy/config-guides/meta.md) to verify if the module is enabled. - Follow the [how-to configure modules](../../configuration/modules.md) guide to enable the module in Weaviate. </details> diff --git a/docs/weaviate/model-providers/ollama/embeddings.md b/docs/weaviate/model-providers/ollama/embeddings.md index 1a2d6daf..4d9a1c57 100644 --- a/docs/weaviate/model-providers/ollama/embeddings.md +++ b/docs/weaviate/model-providers/ollama/embeddings.md @@ -51,7 +51,7 @@ For use cases such as this, consider using a self-hosted Weaviate instance, or a <details> <summary>For self-hosted users</summary> -- Check the [cluster metadata](../../config-refs/meta.md) to verify if the module is enabled. +- Check the [cluster metadata](docs/deploy/config-guides/meta.md) to verify if the module is enabled. - Follow the [how-to configure modules](../../configuration/modules.md) guide to enable the module in Weaviate. </details> diff --git a/docs/weaviate/model-providers/ollama/generative.md b/docs/weaviate/model-providers/ollama/generative.md index 49883819..da705574 100644 --- a/docs/weaviate/model-providers/ollama/generative.md +++ b/docs/weaviate/model-providers/ollama/generative.md @@ -51,7 +51,7 @@ For use cases such as this, consider using a self-hosted Weaviate instance, or a <details> <summary>For self-hosted users</summary> -- Check the [cluster metadata](../../config-refs/meta.md) to verify if the module is enabled. +- Check the [cluster metadata](docs/deploy/config-guides/meta.md) to verify if the module is enabled. - Follow the [how-to configure modules](../../configuration/modules.md) guide to enable the module in Weaviate. </details> diff --git a/docs/weaviate/model-providers/openai-azure/embeddings.md b/docs/weaviate/model-providers/openai-azure/embeddings.md index 779e633f..e4873883 100644 --- a/docs/weaviate/model-providers/openai-azure/embeddings.md +++ b/docs/weaviate/model-providers/openai-azure/embeddings.md @@ -43,7 +43,7 @@ This integration is enabled by default on Weaviate Cloud (WCD) serverless instan <details> <summary>For self-hosted users</summary> -- Check the [cluster metadata](../../config-refs/meta.md) to verify if the module is enabled. +- Check the [cluster metadata](docs/deploy/config-guides/meta.md) to verify if the module is enabled. - Follow the [how-to configure modules](../../configuration/modules.md) guide to enable the module in Weaviate. </details> diff --git a/docs/weaviate/model-providers/openai-azure/generative.md b/docs/weaviate/model-providers/openai-azure/generative.md index d5a25d79..1e75f187 100644 --- a/docs/weaviate/model-providers/openai-azure/generative.md +++ b/docs/weaviate/model-providers/openai-azure/generative.md @@ -41,7 +41,7 @@ This integration is enabled by default on Weaviate Cloud (WCD) serverless instan <details> <summary>For self-hosted users</summary> -- Check the [cluster metadata](../../config-refs/meta.md) to verify if the module is enabled. +- Check the [cluster metadata](docs/deploy/config-guides/meta.md) to verify if the module is enabled. - Follow the [how-to configure modules](../../configuration/modules.md) guide to enable the module in Weaviate. </details> diff --git a/docs/weaviate/model-providers/openai/embeddings.md b/docs/weaviate/model-providers/openai/embeddings.md index f5a325dc..041fb42a 100644 --- a/docs/weaviate/model-providers/openai/embeddings.md +++ b/docs/weaviate/model-providers/openai/embeddings.md @@ -46,7 +46,7 @@ This integration is enabled by default on Weaviate Cloud (WCD) serverless instan <details> <summary>For self-hosted users</summary> -- Check the [cluster metadata](../../config-refs/meta.md) to verify if the module is enabled. +- Check the [cluster metadata](docs/deploy/config-guides/meta.md) to verify if the module is enabled. - Follow the [how-to configure modules](../../configuration/modules.md) guide to enable the module in Weaviate. </details> diff --git a/docs/weaviate/model-providers/openai/generative.md b/docs/weaviate/model-providers/openai/generative.md index 96a232ef..6f63fce8 100644 --- a/docs/weaviate/model-providers/openai/generative.md +++ b/docs/weaviate/model-providers/openai/generative.md @@ -44,7 +44,7 @@ This integration is enabled by default on Weaviate Cloud (WCD) serverless instan <details> <summary>For self-hosted users</summary> -- Check the [cluster metadata](../../config-refs/meta.md) to verify if the module is enabled. +- Check the [cluster metadata](docs/deploy/config-guides/meta.md) to verify if the module is enabled. - Follow the [how-to configure modules](../../configuration/modules.md) guide to enable the module in Weaviate. </details> diff --git a/docs/weaviate/model-providers/transformers/embeddings-multimodal.md b/docs/weaviate/model-providers/transformers/embeddings-multimodal.md index e4bae13b..fd033c03 100644 --- a/docs/weaviate/model-providers/transformers/embeddings-multimodal.md +++ b/docs/weaviate/model-providers/transformers/embeddings-multimodal.md @@ -40,7 +40,7 @@ This integration is not available for Weaviate Cloud (WCD) serverless instances, #### Enable the integration module -- Check the [cluster metadata](../../config-refs/meta.md) to verify if the module is enabled. +- Check the [cluster metadata](docs/deploy/config-guides/meta.md) to verify if the module is enabled. - Follow the [how-to configure modules](../../configuration/modules.md) guide to enable the module in Weaviate. #### Configure the integration @@ -54,7 +54,7 @@ The following example shows how to configure the CLIP integration in Weaviate: #### Docker Option 1: Use a pre-configured `docker-compose.yml` file -Follow the instructions on the [Weaviate Docker installation configurator](../../installation/docker-compose.md#configurator) to download a pre-configured `docker-compose.yml` file with a selected model +Follow the instructions on the [Weaviate Docker installation configurator](docs/deploy/installation-guides/docker-installation.md#configurator) to download a pre-configured `docker-compose.yml` file with a selected model <br/> #### Docker Option 2: Add the configuration manually diff --git a/docs/weaviate/model-providers/transformers/embeddings.md b/docs/weaviate/model-providers/transformers/embeddings.md index bb34ee1f..ccfa40fb 100644 --- a/docs/weaviate/model-providers/transformers/embeddings.md +++ b/docs/weaviate/model-providers/transformers/embeddings.md @@ -40,7 +40,7 @@ This integration is not available for Weaviate Cloud (WCD) serverless instances, #### Enable the integration module -- Check the [cluster metadata](../../config-refs/meta.md) to verify if the module is enabled. +- Check the [cluster metadata](docs/deploy/config-guides/meta.md) to verify if the module is enabled. - Follow the [how-to configure modules](../../configuration/modules.md) guide to enable the module in Weaviate. #### Configure the integration @@ -54,7 +54,7 @@ The following example shows how to configure the Hugging Face Transformers integ #### Docker Option 1: Use a pre-configured `docker-compose.yml` file -Follow the instructions on the [Weaviate Docker installation configurator](../../installation/docker-compose.md#configurator) to download a pre-configured `docker-compose.yml` file with a selected model +Follow the instructions on the [Weaviate Docker installation configurator](docs/deploy/installation-guides/docker-installation.md#configurator) to download a pre-configured `docker-compose.yml` file with a selected model <br/> #### Docker Option 2: Add the configuration manually diff --git a/docs/weaviate/model-providers/transformers/reranker.md b/docs/weaviate/model-providers/transformers/reranker.md index 22730da3..9f43d111 100644 --- a/docs/weaviate/model-providers/transformers/reranker.md +++ b/docs/weaviate/model-providers/transformers/reranker.md @@ -40,7 +40,7 @@ This integration is not available for Weaviate Cloud (WCD) serverless instances, #### Enable the integration module -- Check the [cluster metadata](../../config-refs/meta.md) to verify if the module is enabled. +- Check the [cluster metadata](docs/deploy/config-guides/meta.md) to verify if the module is enabled. - Follow the [how-to configure modules](../../configuration/modules.md) guide to enable the module in Weaviate. #### Configure the integration @@ -54,7 +54,7 @@ The following example shows how to configure the Hugging Face Transformers integ #### Docker Option 1: Use a pre-configured `docker-compose.yml` file -Follow the instructions on the [Weaviate Docker installation configurator](../../installation/docker-compose.md#configurator) to download a pre-configured `docker-compose.yml` file with a selected model +Follow the instructions on the [Weaviate Docker installation configurator](docs/deploy/installation-guides/docker-installation.md#configurator) to download a pre-configured `docker-compose.yml` file with a selected model <br/> #### Docker Option 2: Add the configuration manually diff --git a/docs/weaviate/model-providers/voyageai/embeddings-multimodal.md b/docs/weaviate/model-providers/voyageai/embeddings-multimodal.md index a6b21f61..dd994ee4 100644 --- a/docs/weaviate/model-providers/voyageai/embeddings-multimodal.md +++ b/docs/weaviate/model-providers/voyageai/embeddings-multimodal.md @@ -45,7 +45,7 @@ This integration is enabled by default on Weaviate Cloud (WCD) serverless instan <details> <summary>For self-hosted users</summary> -- Check the [cluster metadata](../../config-refs/meta.md) to verify if the module is enabled. +- Check the [cluster metadata](docs/deploy/config-guides/meta.md) to verify if the module is enabled. - Follow the [how-to configure modules](../../configuration/modules.md) guide to enable the module in Weaviate. </details> diff --git a/docs/weaviate/model-providers/voyageai/embeddings.md b/docs/weaviate/model-providers/voyageai/embeddings.md index ec178092..08ceb57f 100644 --- a/docs/weaviate/model-providers/voyageai/embeddings.md +++ b/docs/weaviate/model-providers/voyageai/embeddings.md @@ -43,7 +43,7 @@ This integration is enabled by default on Weaviate Cloud (WCD) serverless instan <details> <summary>For self-hosted users</summary> -- Check the [cluster metadata](../../config-refs/meta.md) to verify if the module is enabled. +- Check the [cluster metadata](docs/deploy/config-guides/meta.md) to verify if the module is enabled. - Follow the [how-to configure modules](../../configuration/modules.md) guide to enable the module in Weaviate. </details> diff --git a/docs/weaviate/model-providers/voyageai/reranker.md b/docs/weaviate/model-providers/voyageai/reranker.md index 12db608f..8bdedc5a 100644 --- a/docs/weaviate/model-providers/voyageai/reranker.md +++ b/docs/weaviate/model-providers/voyageai/reranker.md @@ -41,7 +41,7 @@ This integration is enabled by default on Weaviate Cloud (WCD) serverless instan <details> <summary>For self-hosted users</summary> -- Check the [cluster metadata](../../config-refs/meta.md) to verify if the module is enabled. +- Check the [cluster metadata](docs/deploy/config-guides/meta.md) to verify if the module is enabled. - Follow the [how-to configure modules](../../configuration/modules.md) guide to enable the module in Weaviate. </details> diff --git a/docs/weaviate/model-providers/xai/generative.md b/docs/weaviate/model-providers/xai/generative.md index 114607a8..db46a676 100644 --- a/docs/weaviate/model-providers/xai/generative.md +++ b/docs/weaviate/model-providers/xai/generative.md @@ -42,7 +42,7 @@ This integration is enabled by default on Weaviate Cloud (WCD) serverless instan <details> <summary>For self-hosted users</summary> -- Check the [cluster metadata](../../config-refs/meta.md) to verify if the module is enabled. +- Check the [cluster metadata](docs/deploy/config-guides/meta.md) to verify if the module is enabled. - Follow the [how-to configure modules](../../configuration/modules.md) guide to enable the module in Weaviate. </details> diff --git a/docs/weaviate/modules/custom-modules.md b/docs/weaviate/modules/custom-modules.md index dbfcb6e3..50d5d49a 100644 --- a/docs/weaviate/modules/custom-modules.md +++ b/docs/weaviate/modules/custom-modules.md @@ -95,7 +95,7 @@ Because you are not touching the Go Weaviate interface code, you don't have the _Note that Weaviate APIs are not guaranteed to be stable. Even on a non-breaking Weaviate release, 'internal' APIS could always change._ To use a new inference model (part 2) with an existing Weaviate interface (part 1), you could reuse all the Go-code from the existing module and simply point it to a different inference container. As an example, here's how to use a custom inference module using the `text2vec-transformers` Go-code: -1. In a valid `docker-compose.yml` that's configured to use transformers (e.g. for example configure one via the [configuration configurator](/docs/weaviate/installation/docker-compose.md#configurator)), you will find an env var like this: `TRANSFORMERS_INFERENCE_API: 'http://t2v-transformers:8080'`, you can point that to any app you like. You should keep the variable name `TRANSFORMERS_INFERENCE_API`. +1. In a valid `docker-compose.yml` that's configured to use transformers (e.g. for example configure one via the [configuration configurator](docs/deploy/installation-guides/docker-installation.md#configurator)), you will find an env var like this: `TRANSFORMERS_INFERENCE_API: 'http://t2v-transformers:8080'`, you can point that to any app you like. You should keep the variable name `TRANSFORMERS_INFERENCE_API`. 2. Build a small HTTP API wrapper around your model, it should at the minimum have the endpoints listed below (which is in this example entirely specific to the `text2vec-transformers` module and fully in its control): 1. `GET /.well-known/live` -> respond `204` when the app is alive 2. `GET /.well-known/ready` -> respond `204` when the app is ready to serve traffic diff --git a/docs/weaviate/modules/img2vec-neural.md b/docs/weaviate/modules/img2vec-neural.md index edb0e8d5..dbdb881f 100644 --- a/docs/weaviate/modules/img2vec-neural.md +++ b/docs/weaviate/modules/img2vec-neural.md @@ -32,7 +32,7 @@ This module is not available on Weaviate Cloud. To use `img2vec-neural`, you must enable it in your Docker Compose file (e.g. `docker-compose.yml`). :::tip Use the configuration tool -While you can do so manually, we recommend using the [Weaviate configuration tool](/docs/weaviate/installation/docker-compose.md#configurator) to generate the `Docker Compose` file. +While you can do so manually, we recommend using the [Weaviate configuration tool](docs/deploy/installation-guides/docker-installation.md#configurator) to generate the `Docker Compose` file. ::: #### Parameters diff --git a/docs/weaviate/modules/index.md b/docs/weaviate/modules/index.md index 4dd02383..946166e8 100644 --- a/docs/weaviate/modules/index.md +++ b/docs/weaviate/modules/index.md @@ -68,7 +68,7 @@ For example: - A module name must be url-safe, meaning it must not contain any characters which would require url-encoding. - A module name is not case-sensitive. `text2vec-bert` would be the same module as `text2vec-BERT`. - Module information is accessible through the `v1/modules/<module-name>/<module-specific-endpoint>` RESTful endpoint. -- General module information (which modules are attached, version, etc.) is accessible through Weaviate's [`v1/meta` endpoint](../config-refs/meta.md). +- General module information (which modules are attached, version, etc.) is accessible through Weaviate's [`v1/meta` endpoint](docs/deploy/config-guides/meta.md). - Modules can add `additional` properties in the RESTful API and [`_additional` properties in the GraphQL API](../api/graphql/additional-properties.md). - A module can add [filters](../api/graphql/filters.md) in GraphQL queries. - Which vectorizer and other modules are applied to which data collection is configured in the [schema](../manage-collections/vector-config.mdx#specify-a-vectorizer). diff --git a/docs/weaviate/modules/text2vec-contextionary.md b/docs/weaviate/modules/text2vec-contextionary.md index 4aa28d06..0f83827e 100644 --- a/docs/weaviate/modules/text2vec-contextionary.md +++ b/docs/weaviate/modules/text2vec-contextionary.md @@ -32,7 +32,7 @@ This module is not available on Weaviate Cloud. To use `text2vec-contextionary`, you must enable it in your Docker Compose file (e.g. `docker-compose.yml`). :::tip Use the configuration tool -While you can do so manually, we recommend using the [Weaviate configuration tool](/docs/weaviate/installation/docker-compose.md#configurator) to generate the `Docker Compose` file. +While you can do so manually, we recommend using the [Weaviate configuration tool](docs/deploy/installation-guides/docker-installation.md#configurator) to generate the `Docker Compose` file. ::: #### Parameters diff --git a/docs/weaviate/recipes/generative_search_nvidia.md b/docs/weaviate/recipes/generative_search_nvidia.md index 0c530059..522bbe84 100644 --- a/docs/weaviate/recipes/generative_search_nvidia.md +++ b/docs/weaviate/recipes/generative_search_nvidia.md @@ -19,7 +19,7 @@ In this demo, we will use an embedding and generative model on NVIDIA to generat 1. Weaviate cluster 1. You can create a 14-day free sandbox on [WCD](https://console.weaviate.cloud/) 2. [Embedded Weaviate](https://weaviate.io/developers/weaviate/installation/embedded) - 3. [Local deployment](https://weaviate.io/developers/weaviate/installation/docker-compose#starter-docker-compose-file) + 3. [Local deployment](docs/deploy/installation-guides/docker-installation.md#starter-docker-compose-file) 4. [Other options](https://weaviate.io/developers/weaviate/installation) 2. NVIDIA NIM API key. Grab one [here](https://build.nvidia.com/models). diff --git a/docs/weaviate/recipes/hybrid_search_mistral.md b/docs/weaviate/recipes/hybrid_search_mistral.md index 7b6b92da..d4eb1f91 100644 --- a/docs/weaviate/recipes/hybrid_search_mistral.md +++ b/docs/weaviate/recipes/hybrid_search_mistral.md @@ -19,7 +19,7 @@ This recipe will show you how to run hybrid search with embeddings from Mistral. 1. Weaviate cluster 1. You can create a 14-day free sandbox on [WCD](https://console.weaviate.cloud/) 2. [Embedded Weaviate](https://weaviate.io/developers/weaviate/installation/embedded) - 3. [Local deployment](https://weaviate.io/developers/weaviate/installation/docker-compose#starter-docker-compose-file) + 3. [Local deployment](docs/deploy/installation-guides/docker-installation.md#starter-docker-compose-file) 4. [Other options](https://weaviate.io/developers/weaviate/installation) 2. Mistral API key. Grab one [here](https://docs.mistral.ai/api/). diff --git a/docs/weaviate/starter-guides/generative.md b/docs/weaviate/starter-guides/generative.md index c4db0ce4..e8876d28 100644 --- a/docs/weaviate/starter-guides/generative.md +++ b/docs/weaviate/starter-guides/generative.md @@ -388,7 +388,7 @@ services: ENABLE_MODULES: 'text2vec-cohere,text2vec-huggingface,text2vec-openai,text2vec-google,generative-cohere,generative-openai,generative-googles' ``` -Check the specific documentation for your deployment method ([Docker](../installation/docker-compose.md), [Kubernetes](../installation/kubernetes.md), [Embedded Weaviate](../installation/embedded.md)) for more information on how to configure it. +Check the specific documentation for your deployment method ([Docker](docs/deploy/installation-guides/docker-installation.md), [Kubernetes](docs/deploy/installation-guides/k8s-installation.md), [Embedded Weaviate](../installation/embedded.md)) for more information on how to configure it. </details> diff --git a/docs/weaviate/starter-guides/which-weaviate.md b/docs/weaviate/starter-guides/which-weaviate.md index f49cf780..1ebf33ac 100644 --- a/docs/weaviate/starter-guides/which-weaviate.md +++ b/docs/weaviate/starter-guides/which-weaviate.md @@ -16,9 +16,9 @@ This page helps you to find the right combination for your project. Weaviate can be deployed in the following ways: - [Embedded Weaviate](../installation/embedded.md) -- [Docker-Compose](../installation/docker-compose.md) +- [Docker-Compose](docs/deploy/installation-guides/docker-installation.md) - [Weaviate Cloud (WCD)](../installation/weaviate-cloud-services.md) -- [Self-managed Kubernetes](../installation/kubernetes.md) +- [Self-managed Kubernetes](docs/deploy/installation-guides/k8s-installation.md) - [Hybrid SaaS](https://weaviate.io/pricing) ## Vectorization options @@ -52,7 +52,7 @@ The [Quickstart guide](/docs/weaviate/quickstart) uses a WCD sandbox and an API For development, we recommend using -- [Weaviate Cloud (WCD)](https://console.weaviate.cloud/) or [Docker Compose](/docs/weaviate/installation/docker-compose). +- [Weaviate Cloud (WCD)](https://console.weaviate.cloud/) or [Docker Compose](docs/deploy/installation-guides/docker-installation.md). - A vectorization strategy that matches your production vectorization strategy. #### Docker-Compose vs. Weaviate Cloud (WCD) @@ -82,7 +82,7 @@ Keep in mind two other factors, which are cost, and their footprint. For production deployments, consider one of these hosting models: - [Weaviate Cloud (WCD)](/docs/cloud) -- [Self-managed Kubernetes](/docs/weaviate/installation/kubernetes) +- [Self-managed Kubernetes](/docs/deploy/installation-guides/k8s-installation.md) - [Hybrid SaaS](/docs/cloud) All of these options are scalable. Kubernetes and Hybrid SaaS offer the most configuration flexibility. diff --git a/secondaryNavbar.js b/secondaryNavbar.js index 880d3494..117c2844 100644 --- a/secondaryNavbar.js +++ b/secondaryNavbar.js @@ -67,7 +67,7 @@ const secondaryNavbarItems = { { label: "Configuration Guides", link: "/docs/deploy/config-guides", sidebar: "deployConfigSidebar"}, /*{ label: "Kubernetes", link: "/docs/deploy/k8s", sidebar: "deployK8sSidebar" },*/ { label: "Production Guides", link: "/docs/deploy/production", sidebar: "deployProductionSidebar"}, - { label: "Tutorials", link: "/docs/deploy/tutorials", sidebar: "deployTutorialSidebar"}, + { label: "Tutorials", link: "/docs/deploy/tutorials/rbac", sidebar: "deployTutorialSidebar"}, /*{ label: "AWS", link: "/docs/deploy/aws", sidebar: "deployAwsSidebar" },*/ /*{ label: "Scaling Strategies", link: "/docs/deploy/scaling-strategies", sidebar: "deployScalingSidebar"},*/ /*{ label: "Monitoring and Observability", link: "/docs/deploy/monitoring-obs", sidebar: "deployObservabilitySidebar"},*/ diff --git a/sidebars.js b/sidebars.js index b7d97a97..224fb64f 100644 --- a/sidebars.js +++ b/sidebars.js @@ -26,8 +26,6 @@ const sidebars = { }, items: [ "weaviate/installation/weaviate-cloud-services", - "weaviate/installation/docker-compose", - "weaviate/installation/kubernetes", "weaviate/installation/embedded", "weaviate/installation/spcs-integration", ], @@ -441,9 +439,6 @@ const sidebars = { "weaviate/configuration/rbac/manage-users", ], }, - "weaviate/configuration/persistence", - "weaviate/configuration/monitoring", - "weaviate/configuration/replication", ], }, { @@ -560,26 +555,6 @@ const sidebars = { id: "weaviate/config-refs/distances", className: "sidebar-item", }, - { - type: "doc", - id: "weaviate/config-refs/status", - className: "sidebar-item", - }, - { - type: "doc", - id: "weaviate/config-refs/telemetry", - className: "sidebar-item", - }, - { - type: "doc", - id: "weaviate/config-refs/meta", - className: "sidebar-item", - }, - { - type: "doc", - id: "weaviate/config-refs/oidc", - className: "sidebar-item", - }, ], }, { @@ -774,12 +749,110 @@ const sidebars = { ], }, ], - deployConfigSidebar: [ - { - type: "autogenerated", - dirName: "deploy/config-guides", +deployConfigSidebar: [ + { + type: "category", + label: "Configuration Guides", + className: "sidebar-main-category", + collapsible: false, + link: { + type: "doc", + id: "deploy/config-guides/index", }, - ], + items: [ + { + type: "doc", + id: "deploy/config-guides/backups", + className: "sidebar-item", + }, + { + type: "doc", + id: "deploy/config-guides/horizontal-scaling", + className: "sidebar-item", + }, + { + type: "doc", + id: "deploy/config-guides/meta", + className: "sidebar-item", + }, + { + type: "doc", + id: "deploy/config-guides/monitoring", + className: "sidebar-item", + }, + { + type: "doc", + id: "deploy/config-guides/nodes", + className: "sidebar-item", + }, + { + type: "doc", + id: "deploy/config-guides/persistence", + className: "sidebar-item", + }, + { + type: "doc", + id: "deploy/config-guides/replication", + className: "sidebar-item", + }, + { + type: "doc", + id: "deploy/config-guides/status", + className: "sidebar-item", + }, + { + type: "doc", + id: "deploy/config-guides/telemetry", + className: "sidebar-item", + }, + { + type: "html", + value: "<hr class='sidebar-divider' />", + }, + { + type: "category", + label: "Authorization and Authentication", + className: "sidebar-item", + link: { + type: "doc", + id: "deploy/config-guides/authentication", + }, + items: [ + "deploy/config-guides/authentication", + "deploy/config-guides/authorization", + "deploy/config-guides/oidc", + "deploy/config-guides/configuring-rbac", + ], + }, + { + type: "html", + value: "<hr class='sidebar-divider' />", + }, + { + type: "category", + label: "Replication", + className: "sidebar-item", + items: [ + "deploy/config-guides/replication", + "deploy/config-guides/async-rep", + ], + }, + { + type: "html", + value: "<hr class='sidebar-divider' />", + }, + { + type: "category", + label: "Environment Variables", + className: "sidebar-item", + items: [ + "deploy/config-guides/env-vars/index", + "deploy/config-guides/env-vars/runtime-config", + ], + }, + ], + }, +], /*deployAwsSidebar: [ { type: "autogenerated", @@ -799,12 +872,19 @@ const sidebars = { }, ], - deployTutorialSidebar: [ - { - type: "autogenerated", - dirName: "deploy/tutorials", +deployTutorialSidebar: [ + { + type: "category", + label: "Tutorials", + className: "sidebar-main-category", + collapsible: false, + link: { + type: "doc", + id: "deploy/tutorials/rbac", }, - ], + items: [], + }, +], deployFaqsSidebar: [ { type: "autogenerated",