Skip to content

Commit 532d8cb

Browse files
authored
Merge pull request #177 from vshn/add/vector_databases
Evaluating Vector Databases as AppCat services
2 parents 24b8c41 + c04e0c3 commit 532d8cb

File tree

4 files changed

+154
-17
lines changed

4 files changed

+154
-17
lines changed
Lines changed: 132 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,132 @@
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.

docs/modules/ROOT/pages/adr/index.adoc

Lines changed: 19 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -165,32 +165,36 @@
165165

166166
`framework, networking, tcp`
167167
|accepted |2025-10-01 |2025-10-27
168+
|xref:adr/0041-migrate-minio-to-rclone.adoc[]
169+
170+
`minio,rclone,objectstorage`
171+
|rejected |2025-12-29 |2026-01-06
168172
|xref:adr/0042-backup-encryption-for-mariadb-galera-and-postgresql.adoc[]
169173

170174
`backup,encryption,galera,postgresql`
171175
|draft |2025-10-06 |2025-10-06
176+
|xref:adr/0043-wazuh-agent-for-appcat-services.adoc[]
177+
178+
`siem,xdr,security`
179+
|draft | |2026-01-08
172180
|xref:adr/0044-configuration-language-kcl-vs-cue.adoc[]
173181

174-
`framework,framework2,kcl,cue`
175-
|draft | |
182+
`framework,framework2,kcl,cue,configuration`
183+
|draft |:adr_upd_date: |
176184
|xref:adr/0045-service-orchestration-crossplane-2-0.adoc[]
177185

178-
`framework,framework2,crossplane,composition`
179-
|draft | |
186+
`framework,framework2,crossplane,composition,orchestration`
187+
|draft |:adr_upd_date: |
180188
|xref:adr/0046-secret-management-framework-2-0.adoc[]
181189

182-
`framework,framework2,billing,odoo`
183-
|draft | |
190+
`framework,framework2,secrets,crossplane,vault,openbao`
191+
|draft |:adr_upd_date: |
184192
|xref:adr/0047-service-maintenance-and-upgrades-framework-2-0.adoc[]
185193

186-
`framework,framework2,testing`
187-
|draft | |
188-
|xref:adr/0041-migrate-minio-to-rclone.adoc[]
194+
`framework,framework2,maintenance,upgrades,crossplane,workflows,cronoperations`
195+
|draft |:adr_upd_date: |
196+
|xref:adr/0048-evaluating-vector-databases-as-appcat-services.adoc[]
189197

190-
`minio,rclone,objectstorage`
191-
|rejected |2025-12-29 |2026-01-06
192-
|xref:adr/0043-wazuh-agent-for-appcat-services.adoc[]
193-
194-
`siem,xdr,security`
195-
|draft | |2026-01-08
198+
`database,service`
199+
|draft | |2026-01-14
196200
|===

docs/modules/ROOT/partials/nav-adrs.adoc

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,4 +44,5 @@
4444
** xref:adr/0044-configuration-language-kcl-vs-cue.adoc[]
4545
** xref:adr/0045-service-orchestration-crossplane-2-0.adoc[]
4646
** xref:adr/0046-secret-management-framework-2-0.adoc[]
47-
** xref:adr/0047-service-maintenance-and-upgrades-framework-2-0.adoc[]
47+
** xref:adr/0047-service-maintenance-and-upgrades-framework-2-0.adoc[]
48+
** xref:adr/0048-evaluating-vector-databases-as-appcat-services.adoc[]

templates/adr/cookiecutter.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"adr_number": "0051",
2+
"adr_number": "0049",
33
"full_name": "VSHNeer Name",
44
"adr_title": "Title",
55
"adr_reviewers": "",

0 commit comments

Comments
 (0)