|
| 1 | += ADR 0051 - Evaluating vector databases as AppCat services |
| 2 | +:adr_author: Simon Beck |
| 3 | +:adr_owner: Schedar |
| 4 | +:adr_reviewers: |
| 5 | +:adr_date: 2026-01-14 |
| 6 | +:adr_upd_date: 2026-01-14 |
| 7 | +:adr_status: draft |
| 8 | +:adr_tags: database,service |
| 9 | + |
| 10 | +include::partial$adr-meta.adoc[] |
| 11 | + |
| 12 | +[NOTE] |
| 13 | +.Summary |
| 14 | +==== |
| 15 | +Exisitng AppCat services already provide some vector capabilities. |
| 16 | +For any other use-cases the required databases should be provided as solutions. |
| 17 | +==== |
| 18 | + |
| 19 | +== Context |
| 20 | + |
| 21 | +More customers require vector databases for various AI related workloads. |
| 22 | + |
| 23 | +To provide the best services possible some of the most popular open source solutions are evaluated in this ADR. |
| 24 | + |
| 25 | + |
| 26 | +Solutions being evaluated: |
| 27 | + |
| 28 | +- OpenSearch/ElasticSearch |
| 29 | +- PostgreSQL with pgvector |
| 30 | +- Redis |
| 31 | +- Chroma |
| 32 | +- Qdrant |
| 33 | +- Milvus |
| 34 | + |
| 35 | +=== OpenSearch/ElasticSearch |
| 36 | + |
| 37 | +OpenSearch/ElasticSearch provides vector capabilities https://opensearch.org/platform/vector-search/[out of the box]. |
| 38 | +Either one of these products are already on the roadmap for AppCat. |
| 39 | + |
| 40 | +=== PostgreSQL with pgvector |
| 41 | + |
| 42 | +StackGres and CNPG both already provide the pgvector extension. |
| 43 | +For StackGres it needs to be installed via the `extensions` stanza. |
| 44 | +CNPG pre-installs it in their default image. |
| 45 | +So the vector capabilities of our PostgreSQL offering is already there. |
| 46 | +Additional documentation to make users aware of this feature is recommended though. |
| 47 | + |
| 48 | +=== Redis |
| 49 | + |
| 50 | +Redis also provides vector capabilities out of the box. |
| 51 | +Redis provides documentation on how to use it: https://redis.io/docs/latest/develop/get-started/vector-database/#prepare-the-demo-dataset |
| 52 | + |
| 53 | +=== Dedicated Vector databases |
| 54 | + |
| 55 | +[cols=4] |
| 56 | +|=== |
| 57 | +|Criteria |
| 58 | +|Chroma |
| 59 | +|Qdrant |
| 60 | +|Milvus |
| 61 | + |
| 62 | +|Installation |
| 63 | +|https://github.com/amikos-tech/chromadb-chart[community helm chart], but very limited functionality, missing HA |
| 64 | +|Official Helm chart available, enterprise operator |
| 65 | +|Official chart and operator available |
| 66 | + |
| 67 | +|Backup |
| 68 | +|https://cookbook.chromadb.dev/strategies/backup/[Export tool available, filesystem snapshots and filesystem snapshots] |
| 69 | +|https://qdrant.tech/documentation/database-tutorials/create-snapshot/[Pretty involved process for clusters] |
| 70 | +|https://milvus.io/docs/milvus_backup_cli.md[Backup tooling available] |
| 71 | + |
| 72 | +|Metrics |
| 73 | +|https://docs.trychroma.com/guides/deploy/observability[Opentelemetry traces] |
| 74 | +|https://qdrant.tech/documentation/guides/monitoring/[OpenMetrics/Prometheus] |
| 75 | +|https://milvus.io/docs/monitor.md[OpenMetrics/Prometheus] |
| 76 | + |
| 77 | +|Maintenance/2nd-day operations |
| 78 | +|https://cookbook.chromadb.dev/running/maintenance/[Chroma ops tool to do maintenance on the database] |
| 79 | +|https://qdrant.tech/documentation/guides/administration/[Administration guide] |
| 80 | +|Administration guides available that cover a lot of topics |
| 81 | + |
| 82 | +|Update/Upgrade |
| 83 | +|https://docs.trychroma.com/docs/overview/migration[Migration guide available], recent rewrite in rust, rewrite doesn't have authentication |
| 84 | +|https://qdrant.tech/documentation/faq/qdrant-fundamentals/?q=upgradeupgrade+guide#how-do-i-avoid-issues-when-updating-to-the-latest-version[Updates to the next consecutive version are supported] |
| 85 | +|Automated via their operator |
| 86 | + |
| 87 | +|License |
| 88 | +|Apache License 2.0 |
| 89 | +|Apache License 2.0 |
| 90 | +|Apache License 2.0 |
| 91 | + |
| 92 | +|=== |
| 93 | + |
| 94 | +=== Chroma |
| 95 | +Chroma's maturity doesn't seem to be there, many things are not documented on the official page but rather on a community driven page. |
| 96 | +Only a rudimentary helm chart is available. |
| 97 | +The recent rewrite in rust dropped features that were previously available. |
| 98 | + |
| 99 | +=== Qdrant |
| 100 | +Qdrant's documentation is excellent. |
| 101 | +However, there's a lot of "available on our cloud offering" there as well for features like cluster backups, which might be concerning for future anti-consumer decisions. |
| 102 | +The overall architecture and concepts are very inspired by ElasticSearch. |
| 103 | + |
| 104 | +=== Milvus |
| 105 | + |
| 106 | +Milvus is by far the most complex solution of the three. |
| 107 | +Although it provides an operator to handle the deployment, the amount of services it needs and deploys is extensive: |
| 108 | + |
| 109 | +- dedicated etcd |
| 110 | +- message queue |
| 111 | +- minio |
| 112 | +- zookeeper |
| 113 | + |
| 114 | +This rivals Kafka in complexity. |
| 115 | + |
| 116 | +== Decision |
| 117 | + |
| 118 | +The AppCat portofolio already contains two existing services that provide vector capabilities. |
| 119 | +OpenSearch/ElasticSearch is on the roadmap. |
| 120 | +These services and products are very well understood and widely used. |
| 121 | +AppCat should provide documentation to make users aware of the vector capabilities of these services. |
| 122 | + |
| 123 | +The dedicated vector databases might fit some use cases better, but of the three concrete requests we got, three different products were mentioned or requested. |
| 124 | +Given the initial effort to make a service AppCat managed, it's not feasible to add these services just for 1-2 instances. |
| 125 | +In these cases the databases should be handled as a solution. |
| 126 | +If at one point the adoption and demand for a specific product increases, the need to provide it as a self-service AppCat service can be re-evaluated. |
| 127 | + |
| 128 | +== Consequences |
| 129 | +We do not adopt any new vector database services into the AppCat service catalog. |
| 130 | +Instead we make users aware about the vector capabilities of the existing services. |
| 131 | + |
| 132 | +For any specific vector database deploying it as a solution should be considered. |
0 commit comments