Diagnostic checklist
Before diving into specific issues, verify the following:- Server is running and reachable (
docker ps,nc -zv) - Configuration file is valid (
--validate) - Data directory is writable and mounted
- Collection contains data (
points_count > 0) - Vector dimensions match query input
- Logs don’t show startup errors
Quick reference: common issues
The following table lists common symptoms, their likely causes, and links to the relevant sections in this guide.| Symptom | Likely cause | Jump to |
|---|---|---|
| Cannot connect to server | Container not running, wrong host/port | Connection issues |
UNAVAILABLE error from SDK | Server starting up, network blocked | Connection issues |
| Search returns no results | Empty collection, wrong query vector dimensions | Search issues |
| Search results have poor quality | Low hnsw_ef, unoptimized index | Search quality |
| Slow ingestion | High hnsw_ef_construction, insufficient memory | Performance issues |
| Slow queries | Low hnsw_ef, cold index | Performance issues |
| Container exits immediately | Config error, missing license file | Startup failures |
| High memory usage | Large number of vectors, high concurrency, indexing workload, insufficient RAM | Memory issues |
| Data lost after restart | No persistent volume mounted | Data persistence |
Connection issues
The following sections describe how to diagnose and fix connection failures.Server not reachable
Follow these steps to verify the container is running and reachable.Test connectivity from the host
UNAVAILABLE error from SDK
This error indicates the client cannot reach the server. In addition to the steps above:
- Confirm the
hostandportpassed toVectorAIClientmatch the container binding - If connecting from another container, use the Docker network service name instead of
localhost: - Check that TLS settings match — if the server has TLS enabled, the client must also enable TLS
Search issues
The following sections describe how to diagnose and fix problems with search results.Search returns no results
The following table lists checks to perform when a search returns no results.| Check | Action |
|---|---|
| Collection is empty | Run client.get_collection_info(name) and check points_count |
| Query vector has wrong dimensions | Confirm dimensions match collection.vectors_config.size |
| Filter is too restrictive | Remove the filter and retry to isolate the issue |
| Collection is still indexing | Check index status in the GUI or via get_collection_info |
Verify collection state
Use the following code to inspect the current state of a collection, including point count, indexed vector count, and status:indexed_vectors_count is lower than points_count, then the index is still building. Wait for indexing to complete before evaluating search quality.
Search quality
If search returns results but they are inaccurate or irrelevant, then the issue is usually related to index parameters, distance metrics, or embedding configuration.Poor recall or irrelevant results
Expand each section for details on how to tune search parameters and verify your embedding configuration.Increase hnsw_ef for higher recall
Increase hnsw_ef for higher recall
hnsw_ef controls how many candidates the HNSW graph explores during search. Increase it to trade speed for better recall:Check the distance metric
Check the distance metric
Verify that the collection’s distance metric matches the one used to train your embedding model:Common mismatch: using
Cosine with embeddings trained for Dot product.Verify embedding normalization
Verify embedding normalization
Cosine similarity requires unit-normalized vectors. If your embedding model does not normalize by default, normalize before inserting and before querying:
Performance issues
The following sections describe how to identify and resolve slow ingestion and slow query performance.Slow ingestion
The following table lists common causes of slow ingestion and recommended solutions.| Cause | Solution |
|---|---|
High hnsw_ef_construction | Reduce to 100 for bulk loads; increase after |
| Inserting points one by one | Batch inserts — use lists of 100–1000 points per call |
| Insufficient memory | Increase container memory limit |
Slow queries
The following table lists common causes of slow queries and recommended solutions.| Cause | Solution |
|---|---|
High hnsw_ef | Lower to 64 for faster queries at slightly lower recall |
| Cold start after restart | Run a few warm-up queries before benchmarking |
| Payload filters on large collections | Create a payload index on filtered fields |
Startup failures
The following section describes how to diagnose and fix container startup errors.Container exits immediately
Use the following command to check logs for the error.| Log message | Cause | Fix |
|---|---|---|
failed to load config | Malformed config.yaml | Validate YAML syntax |
license file not found | Wrong VECTORAI_LICENSE_FILE path | Check volume mount path |
address already in use | Port 50051 taken by another process | Stop the other process or change the port |
permission denied: data_dir | Data directory not writable | Fix directory ownership: chown -R 1000:1000 /data |
Use logs to diagnose issues
VectorAI DB logs provide the fastest way to identify root causes. Common patterns:error→ configuration or runtime failurewarn→ potential performance or data issuesinfo→ normal operation (useful for tracing flow)
Memory issues
Memory consumption depends on the number of vectors, their dimensionality, concurrency, and the HNSW index configuration. Use the checks below to identify what is driving high usage.High memory usage
High memory usage usually becomes more noticeable when:- The collection contains a large number of vectors
- Vector dimensionality is high
- Query concurrency is high
- The index graph maintains more connectivity between nodes
What is m?
In an HNSW index, m refers to the number of edges each node maintains in the graph.
In practical terms:
- Higher
musually improves recall by increasing graph connectivity - Higher
malso increases memory usage and index build cost - Lower
mreduces memory overhead but may lower search quality
m should be understood as an index-structure concept rather than a general-purpose tuning setting for all deployments.
For more background, see Vector index concepts.
Data persistence
By default, Docker containers store data in a writable layer that is discarded when the container is removed. Mount a volume to preserve data across restarts.Data lost after container restart
Ensure a volume is mounted to the data directory. Without a volume, all data is stored in the container’s writable layer and is lost when the container is removed:Next steps
Explore these related guides to learn more.Monitoring and logging
Set up Prometheus metrics and alerts to catch issues early.
Error handling
Handle specific gRPC error codes in your application code.
Docker installation
Container setup, volume mounts, and Docker Compose configuration.
HNSW indexing
Configure index parameters that affect search quality and performance.