Visitar URL original
openCypher: accept Neo4j's CREATE VECTOR INDEX and CREATE FULLTEXT INDEX, so Neo4j clients can create what db.index.* already queries · Issue #10678 · ArcadeData/arcadedb · GitHub
Skip to content

openCypher: accept Neo4j's CREATE VECTOR INDEX and CREATE FULLTEXT INDEX, so Neo4j clients can create what db.index.* already queries #10678

Closed

Description

@chetto1983

We write to ArcadeDB through cocoindex's stock Neo4j connector over Bolt. cocoindex has no ArcadeDB target, and does not plan one (cocoindex-io/cocoindex#603). We measured this on 26.10.1 and 26.10.2.

What fails is the schema. Every statement below is refused on both releases:

Statement | Answer -- | -- CREATE VECTOR INDEX v IF NOT EXISTS FOR (n:`L`) ON n.`e` OPTIONS { indexConfig: { `vector.dimensions`: 768, `vector.similarity_function`: 'cosine' } } | SyntaxError: Only standard, RANGE and TEXT index types are supported CREATE FULLTEXT INDEX f IF NOT EXISTS FOR (n:`L`) ON EACH [n.`text`] | same CREATE CONSTRAINT t FOR (n:`L`) REQUIRE n.`e` IS :: VECTOR(768) | Unsupported Cypher type in a property type constraint SQL CREATE INDEX ON L (e) LSM_VECTOR … after a MERGE wrote e as a list of floats | SchemaException: the property does not exist

So today the client creates the typed ARRAY_OF_FLOATS property, LSM_VECTOR and FULL_TEXT in SQL over HTTP, before its first Bolt write.

The grammar already parses createVectorIndex and createFulltextIndex. CypherASTBuilder.handleCreateIndex is where they are refused. The read side is already Neo4j compatible through db.index.vector.queryNodes and db.index.fulltext.queryNodes; only the DDL that creates what they read is missing.

Proposal:

With these in place, a Neo4j client that creates its own vector index with Neo4j 5 DDL would run on ArcadeDB unchanged.


Activity

  1. added
    boltBolt wire protocol module
    enhancementNew feature or request
    severity:minorCosmetic, documentation, edge case, or a workaround exists
    vectorVector index and embedding search
    on Oct 23, 2026
  2. added this to the 26.11.1 milestone on Oct 23, 2026
  3. self-assigned this
    on Oct 23, 2026
  4. added a commit that references this issue on Oct 28, 2026
  5. robfrank commented on Oct 28, 2026

    @robfrank
    Collaborator

    Done in #10864 for the common forms. openCypher now accepts Neo4j 5's CREATE VECTOR INDEX (becomes an LSM_VECTOR index; an undeclared property is declared ARRAY_OF_FLOATS, and vector.dimensions, vector.similarity_function, HNSW and quantization options are mapped) and CREATE FULLTEXT INDEX ... ON EACH [...] (becomes a FULL_TEXT index, analyzer from fulltext.analyzer). Both keep the given name, honour IF NOT EXISTS, and SHOW INDEXES lists a createStatement that runs as written. SQL CREATE INDEX after a MERGE still needs a declared property, by design; the Cypher DDL declares it itself.

    Still open:


    ❤️ Thanks for helping make ArcadeDB better! ArcadeDB is free and open source, sustained by its community. If it's useful to you or your company, please consider becoming a sponsor to keep development going.

  6. removed
    in progressThe team is actively working on this issue
    on Oct 28, 2026
  7. added a commit that references this issue on Nov 5, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

boltBolt wire protocol moduleenhancementNew feature or requestopencypherseverity:minorCosmetic, documentation, edge case, or a workaround existsvectorVector index and embedding search

Type

No type

Projects

No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions