Description
Ticket Contents
Description
This project aims to build a frontend application to visualise the relationships between a knowledge graph and information consumed to generate the knowledge graph.
For the purposes of this project, the knowledge graph is stored as a Neo4j instance and the source information is a text (Markdown) document.
Features
Database
The DB should be stored using Neo4J graph database, and can be visualised using Neovis JS.
The graph is versioned so that updating the graph doesn't delete old nodes, but simply creates a new version of them.
CREATE (n:Entity {
Name: "EntityName",
Description: "A brief description of the entity.",
Version: "1.0",
VectorEmbedding: [...]
})
Graph Visualisation
- The app should visualise the graph in the left pane.
- The visualisation should be able to update dynamically.
- Search should be enabled in the visualisation. The graph should dynamically update to showcase nodes matching the search query.
- Depth of neighbouring nodes visualised should be configurable in such a view
- Simple match, fuzzy, and semantic search should be enabled.
- Search should be enabled in the visualisation. The graph should dynamically update to showcase nodes matching the search query.
- Color should be configurable for a visualisation.
- Rendered nodes should be labeled using the name of the node entity.
Markdown Rendering
- The right pane of the app should render text as markdown.
- Text should be editable.
- Text should be searchable
- Simple match + Fuzzy search
Visualising The Correspondence Between The Knowledge Graph And The Source Document
All visualisations are dynamic and should be updated on adding new text.
- Highlighting
- If a named entity exists in the knowledge graph, its mentions in the source document should be highlighted. That is, if an entity of name
Entity A
exists in the graph,Entity A
should be highlighted in the markdown document. - If an entity
Entity A
is related toEntity B
, asEntity A --- [relates to] --> Entity B
then sentences in the source doc containing this relationship as a noun-verb-noun triplet should be highlighted. - The knowledge graph is versioned, ie updated versions of the knowledge graph are stored together with older versions using a
version
field. I should be able to match multiple versions of a graph to the same markdown source text simultaneously, for example using different colors in highlighting and graph visualisation. - Updating the text should dynamically update the visualisation.
Context
Knowledge Graph
A knowledge graph is a powerful way to visually structure data through the use of entities (also known as nodes) and relationships (also known as edges).
Entities represent objects or concepts—like people, places, or items—while relationships connect these entities, illustrating how they interact with one another.
This interconnectedness allows for easier access and retrieval of information, making knowledge graphs particularly valuable for complex queries and analyses across large datasets.
Knowledge graphs can dynamically incorporate new data without disrupting existing structures. As new information becomes available, it can be added to the graph through new entities or relationships. This capability ensures that the knowledge graph evolves and expands over time, continuously enhancing its utility and accuracy.
This scalability is crucial for applications in areas such as machine learning, semantic search, and personalized recommendations, where adapting to new data can significantly improve performance and outcomes. In essence, a knowledge graph is not just a static repository of information but a growing entity that adjusts and improves as more data is integrated.
Goals & Mid-Point Milestone
Goals
- Clean and professional looking UI
- Visualisation with search and all the dynamic features described above
- Web App + Database should be automatically deployable using docker and initial configurations.
Setup/Installation
Expected Outcome
Acceptance Criteria
- Goals and Feature requests satisfied.
- Clean, maintainable codebase.
- Relevant and comprehensive documentation.
Implementation Details
Mockups/Wireframes
Product Name
Bharat SahAIyak
Organisation Name
SamagraX
Domain
Open Source Library
Tech Skills Needed
React, TypeScript, Docker, Frontend Development, Graph Database, Neo4J
Mentor(s)
Category
Frontend