GraphRAG
Why are we doing this? Some data sources provide richer insights when represented as graphs rather than simple relational or document structures. By extending gpt-rag with GraphRAG capabilities, we can enable advanced reasoning over graph-structured knowledge. This will unlock new use cases, such as analyzing complex relationships, hierarchies, and entity connections, making retrieval more powerful for domains where relationships between data points matter as much as the data itself.
What does it do?
Graph-native ingestion and storage Extends the ingestion pipeline in gpt-rag to transform eligible datasets into graph structures, storing them in a graph-enabled database (PostgreSQL AGE).
Graph-based retrieval and reasoning Adds a GraphRAG query layer capable of leveraging graph queries and embeddings, enabling gpt-rag to traverse, rank, and reason over entity relationships.
Use-case alignment Supports advanced domains such as knowledge graphs, organizational hierarchies, recommendation systems, fraud detection, and biomedical data, where relationships provide significant context beyond isolated data points.
Technical Guidelines
- Extend the ingestion component to detect when data should be modeled as a graph and normalize it into nodes and edges.
- Update the orchestration layer to include graph-based retrieval as a selectable strategy alongside classic RAG.
- Modify IaC templates to provision and configure the underlying graph database, ensuring scalability and secure connectivity.
- Implement query logic combining graph traversal with embeddings to power GraphRAG workflows.
- Provide monitoring and logging for ingestion, query execution, and orchestration to ensure observability and performance.
- Enforce role-based access control for graph queries, respecting tenant and data privacy boundaries.
cc: @dave-microsoft
Regarding "enforce role-based access control for queries", does this imply support for Azure AI Search's recently implemented Query-Time ACL and RBAC enforcement and corresponding push of document-level permissions during ingestion?
Or should I consider raising this as a separate feature request? (note: I found this Python implementation that could be used as an example)
Hi @DaveA-W, thanks for your interest! This would be a new feature request, could you please create it and include as much detail and context as possible about what should be part of the feature and why it would be valuable to implement?
Regarding "enforce role-based access control for queries", does this imply support for Azure AI Search's recently implemented Query-Time ACL and RBAC enforcement and corresponding push of document-level permissions during ingestion?
Or should I consider raising this as a separate feature request? (note: I found this Python implementation that could be used as an example)