Experimental features
Memgraph has several features in the experimental phase:
These features are actively being developed and may change or be removed in future releases. Use them with caution in production environments and only if you thoroughly understand their implications and are prepared for potential API changes, data loss, service interruption, or data inconsistency. It is highly encouraged to thoroughly test the experimental features in your environment.
To use experimental features in Memgraph, you first need to enable them. In case you experience issues or want to provide feedback, please contact us.
Enabling experimental features
To enable an experimental feature in Memgraph, set --experimental-enabled
flag
to the appropriate value. For example, to run Memgraph in Docker container with the vector
search feature, run the following command:
docker run -p 7687:7687 -p 7444:7444 memgraph/memgraph --experimental-enabled=vector-search
To configure Memgraph correctly for each experimental feature, please refer to
the docs for each feature. For example, vector search feature requires
configuring --experimental-config
flag as well.
To enable more than one experimental feature, list them all, divided by a comma. For example, to enable vector search and text search features, run Memgraph in Docker container with the following command:
docker run -p 7687:7687 -p 7444:7444 memgraph/memgraph --experimental-enabled=vector-search,text-search
If you already have a Memgraph instance with an experimental feature enabled, and you want to add another one, you will need to restart Memgraph. Ensure that all the necessary flags are enabled during the restart.
Changing the configuration settings depends on the way you are using Memgraph, so please refer to the configuration docs for more information.
Experimental features list
Vector Search
- Description: Enables approximate nearest neighbor searches in Memgraph by
leveraging the HNSW (opens in a new tab) algorithm to index
node properties as vectors. This feature supports various similarity metrics,
enabling efficient retrieval of nodes based on vector similarity. While the
database itself can operate at any configured isolation level, the vector
index specifically functions at the
READ UNCOMMITTED
isolation level. This means that changes to the index made by uncommitted transactions are immediately visible to other transactions, regardless of the database's isolation level! - Status: Experimental. The vector search feature is still under
development and not fully integrated with other Memgraph functionalities.
Unlike other index types, it currently lacks support for durability,
replication, and multi-tenancy. Additionally, vector indexes must be created
using the
--experimental-config
flag, rather than through Cypher queries like other indexes. Although durability, replication, and multi-tenancy are not yet supported, you can work around these limitations by ensuring that every database instance (main or replica) is started with the same--experimental-config
flag. This ensures expected behavior for these features across instances. Vector search is an actively developed feature, and we are continuously working on improving its capabilities. At the time of writing,2024-11-27
, the plan is to make feature stable at the time of the next release which is2025-01-29
. - Usage: Enable the feature using the flag
--experimental-enabled=vector-search
. Configure the feature using--experimental-config
. For example:Keep in mind that both flags are required and the configuration requires the following mandatory fields:--experimental-config=' { "vector-search": { "index_name": { "label": "Node", "property": "vector", "dimension": 2, "capacity": 1000, "metric": "cos", "resize_coefficient": 2 } } } '
label
,property
,dimension
andcapacity
. - Documentation: For more details, check the vector search docs.
Text Search
- Description: Enables finding nodes based on property values within Memgraph, supporting both literal and regex searches, and the concept of aggregation. It is not guaranteed to work correctly in use cases involving concurrent transactions and replication.
- Status: Early experimental. Provides text search functionalities but is not guaranteed to work correctly in use cases involving concurrent transactions and replication. There are no short-term plans to improve text-search capabilities. If you are interested in improvements, please contact us on Discord (opens in a new tab).
- Usage: Enable the feature using the flag
--experimental-enabled=text-search
. - Documentation: For more details, check the text search docs.