Experimental features

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 is 2025-01-29.
  • Usage: Enable the feature using the flag --experimental-enabled=vector-search. Configure the feature using --experimental-config. For example:
    --experimental-config='
    {
      "vector-search": {
        "index_name": {
          "label": "Node",
          "property": "vector",
          "dimension": 2,
          "capacity": 1000,
          "metric": "cos",
          "resize_coefficient": 2
        }
      }
    }
    '
    Keep in mind that both flags are required and the configuration requires the following mandatory fields: label, property, dimension and capacity.
  • 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.