How to run a self-hosted vector database RFP
A team about to store document-derived embeddings for RAG or semantic search has to choose between an engine such as Qdrant, Milvus, Weaviate or PostgreSQL with pgvector, and a partner to deploy it. Send the same written scope to every bidder, require answers tied to the named engine and exact version, and score each answer against your own requirements. Vendors and partners have a stake in the outcome, so treat every claim as something to verify rather than something to accept on trust. DeployOpen is one of the bidders a team may invite, and it does not issue audit reports or attestations, so any compliance evidence a bidder offers should come from the auditor or certification body that will review your environment.
Assemble the evaluation group before the questions go out. The platform or infrastructure lead should own sizing, deployment and upgrade answers. The security lead should own authentication, TLS, per-collection permissions and audit logging. The data owners should confirm which document sets are embedded, how often they change, and which records must be deleted when a source changes. The compliance lead should own retention, evidence and any regulatory mapping. Each attendee scores the answers in their own area, which prevents one generalist from accepting a vendor's summary of security or restore practice.
Collect the inputs alongside the questions so bidders answer against your numbers, not generic examples. Record the vector count now and in the planned growth period, the embedding dimensions of the model you have chosen, the metadata fields and filters queries will use, whether search must combine keyword and vector matching, and the number of tenants or user groups that must be isolated. State the recovery point objective (RPO) and recovery time objective (RTO) you need for each collection, because restore design follows from them. Ask bidders to state the engine version they propose, then confirm in a proof of concept that the stated restore time and filtered query latency hold at your volumes before you sign.
How do you size memory, disk and nodes for our vector count?
What do you need from us before you size memory and disk?
A credible partner asks for vector count, embedding dimensions, expected growth, query rate, filter selectivity and how many collections will exist before quoting any hardware. Each of these moves the result. Vector count and dimensions set the raw size of the vectors, while the index type, quantization and payload size set how much of that must sit in RAM. Query rate determines how many replicas and CPU cores you need to hold latency, and filter selectivity decides whether filtered searches stay fast on the chosen index. If a proposal names node sizes in the first meeting without these inputs, treat the number as a guess.
How do you calculate raw vector storage from dimensions and count?
The baseline is vector count multiplied by dimensions multiplied by bytes per value, plus the payload and index overhead. For example, an illustrative collection of 10 million vectors at 768 dimensions stored as 32-bit floats needs about 30 GB for the raw vectors before index structures and payloads are added. Quantization reduces the bytes per value, and the partner should show the arithmetic for the exact configuration they propose, including payload indexes and the write-ahead log. Ask them to state which numbers are measured on your sample data and which are estimated from documentation.
Which index type fits our memory budget: HNSW, IVF or DiskANN?
HNSW gives fast, accurate search but keeps its graph structure in memory, so it suits collections that fit in RAM with headroom. IVF partitions vectors into clusters, which reduces the search space and can lower memory needs at some cost in recall. DiskANN-style indexes keep most of the data on disk, which trades latency for a smaller memory footprint and depends heavily on fast local storage. Milvus lists HNSW, IVF, FLAT, SCANN and DiskANN, and Qdrant and Weaviate offer their own index and quantization options. Ask the partner to benchmark recall and p95 latency on your data for two index choices, not only to name one.
Can a vector database run on NFS or S3 for its primary storage?
No, not for the primary store of a vector engine such as Qdrant. Qdrant needs block-level storage with a POSIX-compatible file system and cannot run on network file systems such as NFS or on object storage such as S3, with SSD or NVMe drives recommended. Milvus can use object storage such as MinIO, S3 or Azure Blob, but only as one component behind its coordinators and write-ahead log, not as a plain volume. Any partner who proposes NFS or S3 as the live store for a vector collection has not checked the engine's requirements, and you should ask for the reason in writing.
How much extra storage does replication add to our sizing?
Replication multiplies stored data by the replication factor, so a factor of 2 roughly doubles storage, and a factor of 3 roughly triples it. In Qdrant distributed mode, collections are split into shards across nodes, and the replication factor adds copies on top of that. Weaviate replication is disabled by default and enabled per collection with a replication factor. The partner should show the sizing for each replica count, state the memory and disk per node, and explain how the number of copies affects the cost of extra nodes and backups. A proposal that sizes a single copy and ignores replication understates the bill.
How many nodes do we need for quorum in production?
Qdrant's distributed deployment documentation recommends at least three nodes for production clusters so quorum survives a node failure, and a shard count that is a multiple of the node count. Milvus distributed mode separates proxies, coordinators, workers, etcd, object storage and a write-ahead log, so the node count depends on each component's role and the availability target you set. Weaviate uses leaderless replication with tunable consistency levels, so the replica count and consistency choice together determine what a node loss costs. Ask the partner to name the failure they design for and show how the cluster behaves when one node is down during peak query load.
What warning signs appear in a sizing proposal?
Be wary of a proposal that gives node counts without asking for dimensions or query rate, ignores replication or backup copies, or leaves out the memory needed for the index. Also be wary of a sizing that assumes all vectors fit in RAM without a measured test, or that proposes NFS or S3 for the live store. A sound proposal lists its assumptions, shows the storage arithmetic step by step, names the index and quantization settings, and includes a load test on a representative dataset before the production sizing is signed off. Ask for these artifacts in the written scope.
Will DeployOpen size and test the cluster before we buy hardware?
DeployOpen plans and implements self-hosted open-source platforms inside your own cloud accounts, data centers or air-gapped networks, so sizing is part of the written scope rather than a vendor quote. The engagement can cover collecting your vector count, dimensions and query patterns, producing the storage and replication arithmetic, testing index options on your data and documenting the node layout. Exact hours, timelines and fees are set only in the written scope after these inputs are agreed. Ask any partner, including DeployOpen, to state which sizing outputs are delivered and which tests run before infrastructure is ordered.
How do you isolate tenants, teams and entitlements?
Collection-level isolation gives each tenant, business unit or sensitivity class its own collection, with its own vectors, payloads and index. It is the strongest separation a vector store offers because a query against one collection cannot touch another collection's points unless a credential allows it. The cost is operational: each collection carries its own index, configuration and capacity planning, so many small collections can be harder to run than a few large ones. Qdrant uses collections as its main unit, and Weaviate and Milvus offer their own collection or database-level equivalents, so the partner should show how each engine maps your tenants to containers.
- Permission scope: Ask how access is granted per collection, for example through Qdrant's per-collection read or write permissions in JWT-based access control, and who holds the admin keys.
- Provisioning path: Ask who creates a collection when a tenant onboards and how that step is audited.
- Capacity limits: Ask how many collections the chosen engine and node count can hold before performance or memory becomes a problem.
- Naming and metadata: Ask how collection names and payload fields avoid leaking tenant identifiers across boundaries.
- Teardown: Ask how a collection is removed, including snapshots and backups that still contain its vectors.
Ask the partner to show the isolation model on a diagram and to name the credential that a tenant application holds.
Partitions and partition keys share one collection but separate data inside it. This suits many tenants or teams with similar schemas, since one index serves them all and the store routes queries by tenant key. Milvus offers multi-tenancy at database, collection, partition or partition key level, and Weaviate supports multi-tenancy as a built-in feature, so the design choice depends on the engine. Shared structures bring a shared failure domain and the risk of noisy neighbours, where one tenant's query load slows others. Partition isolation is logical, so it needs the same server-side enforcement as any other filter.
- Key choice: Ask which field is the partition key, whether a client can omit it, and what happens when it does.
- Query routing: Ask whether the engine applies the tenant key on the server for every query, including hybrid and reranked searches.
- Noisy neighbours: Ask how resource limits, rate limits or dedicated nodes protect one tenant from another.
- Tenant deletion: Ask how deleting one tenant removes its points from the index, payloads, and any shared backup.
- Migration: Ask how a tenant moves from a shared partition to a dedicated collection if its contract or risk profile changes.
Ask the partner which engine version supports the partitioning features you need, and whether the same feature works in the backup and restore path.
Entitlement-aware filtering handles the case where users in one tenant may see only some documents, for example a case file limited to a team or a policy limited to a department. Each vector carries access metadata copied from the source system, and every query adds a filter that matches the user's groups or identifiers. The filter is only as trustworthy as its enforcement point. If the application builds the filter and the database trusts it, a bug or a crafted request can return documents the user should never see. The stronger pattern binds the user identity to the query on the server side, so the client cannot choose the filter.
- Server-side enforcement: Ask where the entitlement filter is built, whether a user can change it, and whether the vector store receives a signed identity or a filter from the application.
- Metadata freshness: Ask how group membership and document permissions are synchronized into payloads, and how quickly a revoked permission takes effect.
- Deletion propagation: Ask how a deleted or re-permissioned source document removes or updates its vectors, including chunks and re-embedded copies.
- Default deny: Ask what the query returns when the entitlement claim is missing or malformed.
- Isolation tests: Ask for test cases that prove a user without access receives no chunks, including chunks from hybrid and reranked paths, along with the results of those tests.
Red flag: if the partner filters only in the application layer and cannot show automated tests or a negative test log, treat the claim as unverified.
Isolation is only credible when it is tested against the running system with accounts that should be blocked. Tests should cover collection credentials, partition keys, entitlement filters and deletion, and they should run again after upgrades, index changes and restores, because each of those can change query behavior. Logs need to show who queried what and which filter was applied. Authentication and TLS settings in the engines reduce the attack surface, but they do not prove that one tenant's data stays separate from another's, so the test plan should be explicit.
- Negative tests: Ask for a written test matrix that lists, for each tenant and user role, the queries that must return nothing.
- Cross-tenant probes: Ask how the partner attempts to reach another tenant's collection, partition or payload with forged or stripped identity.
- Restore tests: Ask whether isolation is re-tested after a snapshot restore into a separate environment.
- Audit trail: Ask how the engine's audit logs, such as Qdrant's JSON audit logging of authenticated operations where your version supports it, are retained and reviewed.
- Change control: Ask how isolation tests become part of the release gate for new collections and new tenants.
Ask the partner to share a sample test report from a previous engagement with confidential details removed, or to describe the test plan they would run against your data.
How do you handle re-embedding, deletion and source changes?
How do you record which embedding model produced each vector?
A credible partner stores the model identifier, model version, dimension count and the pipeline version as metadata on every vector or in a companion table, so each point can be traced to the model that created it. Ask to see the schema and a sample record. If the answer is that the team remembers which model was used, or that all vectors come from one model, treat that as a red flag. Vectors from two models are not comparable, so mixing them silently returns poor results without any error. Ask how the metadata is written during ingestion and whether it is checked at query time.
What happens to the index when we change the embedding model?
Changing the embedding model means re-embedding the whole corpus and rebuilding the collection, because vectors from different models cannot share an index. A good plan builds the new collection beside the old one, runs evaluation queries against both, then switches the application through an alias or configuration key. Re-embedding is recurring work tied to model upgrades, corpus growth and chunking changes, so it should be a documented, repeatable runbook rather than a one-off task. Ask what it costs in compute, how long a full rebuild takes at your corpus size, and whether the old collection is kept for rollback.
How do you map a vector back to its source document and chunk?
Each point should carry a stable source identifier, the chunk position, a content hash and the source system's version or last-modified time in its payload. With that, a change in a source record can be matched to every chunk derived from it. Ask how identifiers are generated, whether they survive re-chunking, and how the mapping is stored. If the partner cannot list every vector derived from one document within a short query, deletion and erasure requests will be unreliable.
How do you delete points and payloads when a source changes?
Deletion should be driven by the source system's events or a scheduled sync that compares content hashes, then removes the affected points by identifier and filter. Ask whether the delete path removes the vector and the payload, and whether it is tested with a known document before go-live. Updates should be handled as delete then insert under a new version, not as an in-place edit that leaves stale chunks behind. A partner who describes deletion only as a manual clean-up step has not designed the path.
Do snapshots and backups still contain data we deleted?
Yes, unless the backup policy accounts for it. Snapshots and backups copy the state at a point in time, so deleted vectors remain in them until those backups expire or are rewritten. Ask for the retention period for each backup tier, whether backups are encrypted with keys you control, and how a deletion request is recorded and proven against backup sets. Qdrant documents snapshots as a backup mechanism, so the partner should be able to show how snapshot retention is set and enforced. Confirm the answer for the specific engine you choose.
How do you prove that a deletion actually happened?
Keep a deletion log that records the request, the source identifiers, the number of points removed, the time and the operator or job that ran it, and then run a verification query that confirms zero matches remain in the live collection. Ask whether the log itself is retained separately from the vector data and for how long. Deletion evidence is what an assessor or data protection team will ask for, so it should be produced by the pipeline, not assembled by hand from memory.
Will you test re-embedding and deletion before go-live, and what do we need to provide?
Ask for a written test plan covering a model change dry run, a source update, a source deletion and a restore from a backup taken before the deletion. Effort depends on corpus size, the number of source systems, how many embedding models are in use and how often sources change. A fixed-scope engagement should state these items, the deliverables and the acceptance criteria in writing before work starts. You will need to supply access to source systems, a representative sample corpus, the approved embedding model and a decision on backup retention. DeployOpen does not publish prices, so ask for a quote from a written scope.
Can we run re-embedding and deletion ourselves after handover?
Yes, if the partner delivers the pipeline as code with a runbook, the metadata schema, the deletion job and the verification queries, and your team is trained to run them. Ask who owns the embedding job schedule, the credentials for source systems, and the on-call responsibility when a deletion job fails. Ongoing support, upgrades and continuous testing are available as retainers, which may suit teams that will not keep the specialist skills in-house. Confirm the handover list in the statement of work before accepting the engagement.
How do you upgrade without losing data or availability?
A staged upgrade confirms the target release, rehearses the change on a copy of production data, captures a restorable snapshot, and proves queries and counts match before the change is considered complete. Each step produces evidence the buyer can review.
Confirm the target version and release line
The partner records the current engine version, the target version and the release notes that cover breaking changes, deprecated API calls and storage format changes. For Qdrant, the partner also checks whether the target release matches the client library versions your applications use. Ask for the written upgrade plan naming the source and target versions. The step is done when the plan lists both versions and your team has signed off on the release line. Confirm the vendor's supported upgrade paths before you accept a jump across several minor releases.
Rehearse the upgrade on a staging copy
The partner restores a recent snapshot into a staging environment built on the same deployment path, storage class and authentication settings as production. They run the upgrade there first and time the steps, record any errors and check that collections load with the expected indexes. Ask whether staging uses production-like memory and disk, because an upgrade that succeeds on a small node can still fail under production load. The step closes when the staging run completes without manual fixes that production would not be able to repeat.
Take and verify a snapshot before changing production
Before the production change, the partner creates a snapshot of every collection and stores it outside the cluster being upgraded, on storage your team controls. They confirm the snapshot file exists, record its checksum and note the collection names and point counts it contains. Ask who can restore it and whether a test restore has been performed on the same version pair. The step is complete when the snapshot is stored separately and your team has the recorded counts to compare against later.
Confirm zero-downtime upgrade support for the deployment path
The partner states, in writing, whether the chosen path supports rolling or zero-downtime upgrades. Qdrant documents that its community Helm chart lacks enterprise features such as zero-downtime upgrades and automatic shard rebalancing, so a Helm-based cluster may need a planned maintenance window. Ask how the outage window is scheduled, how write traffic is paused or queued, and who approves the window. The step is complete when the availability expectation for this path is written into the change plan.
Run the production upgrade with a rollback path
The partner upgrades one node or component at a time, checks cluster health after each change and keeps the previous version image and configuration available for reversal. Rollback criteria are agreed before the change, such as failed health checks, missing collections or count mismatches. Ask whether the rollback path has been tested and how long a restore from snapshot would take on your data volume. A red flag is an in-place upgrade on production with no rollback plan or no stored snapshot. The step is complete when the cluster reports healthy on the target version and the rollback option is documented as closed or unused.
Verify queries, counts and client compatibility
After the change, the partner compares point counts and collection schemas with the values recorded before the upgrade, runs a fixed set of reference queries and checks that filtered and hybrid searches return the expected results. They confirm that client libraries used by your applications, including any Python, JavaScript or Java clients, connect and behave as expected against the new version. Ask for the verification log. The step closes when counts match, reference queries pass and each application team confirms its integration works.
Track security patches and version support
The partner documents which release lines receive security fixes, how they learn of new releases and how quickly they assess and schedule patches for your environment. Ask how client libraries are version-matched across applications, how security advisories are delivered to your team and whether patches go through the same staging rehearsal. Confirm whether support is covered by a retainer or a fixed-scope agreement. The step is done when a written patch cadence, escalation path and version support statement are part of the handover.
How do you prove that restores work?
A backup that has never been restored is an assumption, not a control. The cards below cover what a partner should back up, how restores are proven against your recovery targets, and what evidence should exist after each test.
Snapshot scope and frequency
Ask which artifacts are captured: collection snapshots, full storage backups of the data directory, and the configuration, API key and access policy files that define who can query. Qdrant's snapshot documentation describes collection-level snapshots, so the partner should state whether snapshots cover every collection and how often they run. Ask for the frequency in writing, the retention period, and where copies are stored. Confirm that backup copies are encrypted and kept inside your own infrastructure, not only on the same disk as the live cluster.
Restore into a version-matched target
Snapshots are only reliable when restored into a target running the same engine version they were taken from. Ask the partner how they record the version of every node at backup time, how they prepare a matching target, and what they do when a platform upgrade has happened between backup and restore. Check whether the restore runbook names the exact release, such as the Qdrant v1.19.2 line if that is your running version, and whether the target is built from the same container image and configuration as production.
Restore timing against recovery targets
Your recovery time objective and recovery point objective should be set by your business owners before the partner quotes anything. Ask for a measured restore duration for your largest collection, not an estimate from another client. Vector collections are memory and disk heavy, and index rebuilds can add time after data is loaded, so the test should time the full path to a query that returns correct results. Ask how the partner measures the gap between the last backup and the failure point, and how that gap compares with your recovery point objective.
Backup of embedding metadata and source mappings
A restored vector is useless if nothing maps it back to its source document, chunk, model version or access permissions. Ask how the partner backs up payloads, the mapping from point IDs to source records, the embedding model name and version used for each collection, and the access control definitions. Ask whether these items are restored together with the vectors. Without this, a restored store can return results that cannot be cited, filtered by entitlement or re-embedded consistently after a model change.
Evidence from scheduled restore tests
Good answers describe a scheduled restore drill that runs on a fixed cadence, restores into an isolated environment, and records the result. Ask for a sample restore report showing the date, backup identifier, engine version, duration, row or point counts compared with the source, and query checks that passed. Ask who signs off the result and where the report is stored for auditors. Red flags include backups that have never been restored in a test, restore steps that exist only in someone's head, and reports that confirm a backup job completed but not that data came back.
What will your team operate after go-live?
What metrics should we monitor on a self-hosted vector database?
Watch memory use, disk use and disk I/O latency, query latency at the percentiles your users feel, indexing or write lag, replication health and error rates from the API. Memory and disk trends matter most because vector collections grow with every re-embedding run and every new document batch. Ask the partner to show which metrics their dashboards collect, how they are scraped and stored, and which thresholds trigger an alert. Confirm that audit logs of authenticated API operations are shipped to your log platform, since Qdrant documents JSON audit logging from v1.17.0 and other engines have their own logging options that you should verify in your environment.
Who is on call when the vector database fails at night?
Your on-call rota should name a primary and secondary responder for the database, with the partner's support hours and escalation path written next to it. Ask the partner who answers a page, how quickly they acknowledge a severity 1 event, and whether that commitment appears in a signed support schedule. Do not accept verbal assurances. If the answer is that the partner responds only during business hours, your own team must cover the rest, and that cost belongs in the scope discussion from the start.
What runbooks and documentation should a partner hand over at go-live?
A complete handover includes runbooks for restart, scaling, snapshot and restore, index rebuild, re-embedding, key rotation, certificate renewal and version upgrades, plus an architecture diagram and a list of every credential and where it is stored. Each runbook should name the exact commands or configuration keys used in your environment. Ask for a restore drill performed by your staff from those runbooks, not by the partner. Documentation that only the author can follow does not count as handover.
Who holds the admin keys, certificates and infrastructure access after handover?
Your organization should hold root or cloud administrator access, all API admin keys, TLS private keys and the backup encryption keys, with access granted to named individuals through your identity provider where the platform supports it. Partner access should be time-limited and logged. Write this into the scope so that nothing depends on a partner engineer staying in place. A handover that leaves keys in a personal password manager or only in a partner's vault is a red flag.
What skills does our team need to run a self-hosted vector database?
Your staff need Linux and container operations, Kubernetes if you deploy there, storage administration for block devices, basic TLS and identity configuration, and enough database knowledge to read query and index performance. They also need someone who understands the embedding pipeline well enough to plan re-embedding after a model change. Ask the partner which of these skills they transfer through training or pairing, and what gaps remain. The effort to maintain the platform depends on how many engines, collections and environments you run, so ask for that count in the written scope.
What does a capacity review include and how often should it happen?
A capacity review compares actual memory, disk and query load against the sizing model, projects growth from document intake and re-embedding plans, and recommends shard, node or storage changes before limits are reached. Ask how often the partner runs these reviews under a retainer and who presents the findings to your team. Your own team should also run a short review when a new collection or large import is planned. Confirm whether the reviews are included in the retainer or quoted separately.
What does an ongoing support retainer cover for a vector database?
A written retainer should list the monitoring hours, response times by severity, upgrade and patch windows, security updates, backup verification, capacity reviews and the number of change requests included. DeployOpen offers ongoing support, upgrades and continuous testing as retainers, and most engagements begin as fixed-scope work with scope, deliverables and timelines agreed in writing before work starts. Ask any partner to show what is excluded, such as major version migrations or new collections, and what those cost to add. A support offer without a written scope is not something you can hold a partner to.
Can we run the vector database ourselves after the partner leaves?
Yes, if the handover produced runbooks, credentials under your control, tested restores and staff trained on upgrades. Open-source engines such as Qdrant (Apache-2.0), Milvus (Apache-2.0) and Weaviate's BSD-3-Clause code outside its enterprise directory can be run without a vendor contract, but enterprise features such as some Weaviate capabilities need a license key and Qdrant's enterprise operator is part of Qdrant Private Cloud. Confirm the license terms for every feature you plan to use before the partner leaves, and plan for the staff hours that continued operation requires.
What licence and commercial terms should we ask about?
Treat the engine licence and the vendor's commercial tiers as two separate questions. The engine licence governs the software you run. Qdrant is licensed under Apache-2.0 and is free to self-host. Milvus is also Apache-2.0. Weaviate's core is BSD-3-Clause, but code inside its repository's "wl" directory is available only under a separate Weaviate enterprise license, and enterprise features are switched on with a license key. Ask each partner to name which of the features in your requirements sit inside that enterprise code, and to confirm in writing whether your intended deployment needs a key. Vendor cloud products, Hybrid Cloud or Private Cloud tiers, and support contracts are separate agreements with their own terms, priced through the vendor's sales team.
Ask the partner for written confirmation of which features need a commercial licence, including SSO, audit logging, granular access control and any multi-tenant or high-availability capability your design relies on. Then ask for the fixed-scope deliverables in the proposal: what is installed, hardened, integrated, documented and tested, with acceptance criteria for each. Most DeployOpen engagements are fixed-scope and agreed in writing before work starts, so a proposal without a written scope cannot be compared with another. DeployOpen does not publish a price list, so a number without a scope behind it tells you nothing about cost.
Ask what the quote depends on and what recurs after go-live. A credible quote should list the environment assumptions (node count, storage class, backup target, identity integration), the excluded items, and the rate for changes. Separate the one-time build from the recurring items: vendor licence or subscription fees if any, infrastructure, backup storage, upgrades, monitoring and retained support. Ask whether support or upgrades are a retainer, and what the retainer covers during a re-embedding project or a major version move. Any partner who will not put these items in writing before you sign has not finished scoping the work.
Answers that should worry you
Partners often answer vector database questions with confidence but without specifics. The six answer patterns below show where a proposal is thin, and each one points to a concrete question to put back to the partner before you sign.
Sizing without dimensions or replication
A proposal that quotes a node count or disk size without naming the vector dimensions, the number of vectors, the index type and the replication factor cannot be checked. Replication doubles storage at a factor of 2, and a production Qdrant cluster is documented with at least three nodes so quorum survives a node failure. Ask for the memory and disk arithmetic written out, with the assumptions named.
A default install described as secure
By default, self-deployed Qdrant instances listen on all network interfaces and have no authentication configured, so a partner who calls the stock install secure has not checked it. Ask which API keys, TLS settings, per-collection permissions and audit logging will be enabled, and who verifies that the database is not reachable from outside the intended network.
No restore test on record
A backup plan that describes snapshots but never a restore is an untested promise. Ask for the last restore test, the time it took, the version of the server it restored into, and whether the restored collection was checked against expected search results. Snapshots need to be matched to the same engine version, so a partner who cannot name that version has not planned the restore.
Re-embedding left out of the plan
When the embedding model changes, every stored vector becomes incompatible with new queries, and a partner who does not plan for this will discover it during an upgrade. Ask how the team will version embeddings, rebuild a collection alongside the old one, cut traffic over and retire the old data. Ask who pays for the compute and how long the re-embedding window is expected to run.
Deletion that ignores backups
Removing points from the live collection does not remove the same vectors from snapshots, replicas or backup archives. Ask how a deletion request traces back to source records, how deleted vectors are purged from backups within a stated window, and what evidence the partner will hand over that deletion actually happened.
Claims with no version or configuration named
Statements such as 'we support encryption' or 'upgrades are zero downtime' carry no weight without the product, version and settings behind them. Ask which release line the proposal targets, which features are in the community build and which need an enterprise license, and for the configuration file or Helm values that will be delivered. Vague answers here usually mean the design is not finished.
How to score responses
This table lists the areas a vector database proposal should answer, the evidence each one needs and what separates a full answer from a partial one. The weight column is blank on purpose: set weights from your own risk profile before scoring, and treat any area with no evidence as a failed answer rather than a low score.
| Area | Evidence required | Weight | Full versus partial credit |
|---|---|---|---|
| Memory and disk sizing | Sizing worksheet tied to your vector count, dimensions, index type and replication factor, with the storage type proposed | Buyer to set | Full: worked numbers for your inputs, storage on block devices (not NFS or S3), replication doubled at factor 2. Partial: generic per-node guidance with no calculation |
| Secure default configuration | Hardened config showing authentication, TLS for REST and gRPC, and restricted network binding before go-live | Buyer to set | Full: API keys or OIDC enabled, TLS on both interfaces, no listening on all interfaces by default. Partial: authentication added after installation as a later task |
| Per-collection access control | Role or permission model with example mapping of your user groups to read and write rights per collection | Buyer to set | Full: granular permissions tested with negative cases. Partial: a single admin key shared by applications |
| Audit logging | Sample audit log entries and a description of where they are shipped and how long they are kept | Buyer to set | Full: authenticated operations logged, forwarded to your SIEM, retention agreed with your records policy. Partial: logs stay on the node |
| Re-embedding and index rebuilds | Runbook for changing the embedding model, including dual-index cutover, rollback and who approves it | Buyer to set | Full: versioned collections, source-to-vector lineage and a tested cutover. Partial: a plan to reindex in place with no rollback |
| Upgrades and version pinning | Upgrade procedure, compatibility matrix, and how snapshots are restored into the target version | Buyer to set | Full: staged upgrades in a non-production cluster, snapshot restore tested into the new version. Partial: upgrades described only as routine |
| Backup and restore testing | Backup schedule, snapshot scope, and the date and result of the last full restore test | Buyer to set | Full: a documented restore to a separate environment with timed results and checks on counts and search quality. Partial: backups taken but never restored |
| High availability design | Node count, shard and replica layout, and the failure scenarios tested | Buyer to set | Full: at least three nodes for production quorum, shard count matched to node count, node-loss test recorded. Partial: a single node described as highly available |
| Licence and distribution terms | Written confirmation of the licence for the exact engine and any enterprise or hybrid components proposed | Buyer to set | Full: licence named per component with any enterprise features identified. Partial: a general statement that the project is open source |
How DeployOpen scopes, delivers and supports vector database evaluations
DeployOpen plans, implements, hardens, documents and supports self-hosted open-source platforms inside the client's own infrastructure, so a vector database evaluation starts from where your embeddings will actually live. We turn the RFP questions into a written scope that names the engines, deployment paths and test evidence you need before any vendor is selected.
How we scope
- Agree the written scope for each candidate engine, covering Qdrant, Milvus, Weaviate or pgvector as applicable to your workload
- Record sizing assumptions for vector count, dimensions, replication factor and disk type before any quote is requested
- Define the security baseline for authentication, per-collection permissions, TLS and audit logging in the proposal
- List the restore and re-embedding tests the partner must demonstrate, with pass criteria agreed in writing
How we build
- Deploy the chosen engine in your cloud account, data center or air-gapped network with block storage and no network file systems
- Disable default open access, configure admin and read-only keys or RBAC, and confirm TLS on REST and gRPC endpoints
- Wire the embedding pipeline so re-embedding, deletion of vectors and version pinning are repeatable and logged
- Run restore tests from snapshots into a matching engine version and record the results as evidence
How we hand over
- Deliver architecture, runbooks, configuration baselines and the sizing model in a handover package defined in the scope
- Document backup, restore, upgrade and deletion procedures so your team can run them without the original engineers
- Provide the test evidence and audit log samples needed by your compliance team, prepared for independent assessors to review
- Walk your operations and security staff through the handover and record what remains open
How we support
- Ongoing support, upgrades and continuous testing are available as retainers, scoped separately from the original engagement
- Retainers can cover version upgrades, licence and release tracking, and periodic restore tests against your current data
- Security testing of the vector store and the applications querying it can be added to the retainer where in scope
- Support boundaries, response expectations and reporting cadence are written into the retainer before work starts

