Skip to content

Feature: Semantic schema search #32

Description

@peter7775

Problem Statement

Search/filtering in the graph visualization (Neovis.js) currently only matches on exact names. On older or inconsistently named databases (e.g. inv_hdr instead of invoices), users can't find relevant tables using natural language.

Proposed Solution

  • During transformation, generate embeddings from table/column names + comments/data types via the EmbeddingProvider port and store them in the vector index.
  • Add a GraphQL/REST endpoint for semantic queries (e.g. "customer payments") that returns the nearest nodes by cosine similarity.
  • Wire this into the existing filter/search UI in the web layer (internal/interfaces/web/).

Alternative Solutions

Full-text search (Neo4j Lucene index) — simpler, but won't capture semantic similarity without exact word matches.

Use Case

A user working with a large legacy schema can quickly find relevant tables/columns without knowing exact names.

Priority Level

Nice to have

Implementation Ideas

  • Extend schema/schema.graphqls with a new query type for semantic search.
  • Generate embeddings in batch during the transform CLI command so normal runs aren't slowed down when AI is disabled.

Additional Context

Depends on: "Native vector index foundation", "EmbeddingProvider port".

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    apiREST API or GraphQL relatedenhancementImprovement to existing functionalityfeatureNew feature or functionality

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions