Digital Transformation Stories and Insights

Milan
Milan Thomas
Engineering Trust in Agentic AI_ Beyond Traditional QA

Explore Our Topics

Artificial Intelligence

GraphRAG_ From Better Retrieval to Better Knowledge

GraphRAG: From Better Retrieval to Better Knowledge

Over the past two years, many enterprises have adopted Retrieval-Augmented Generation (RAG) to help AI models interact with their internal documents. For simple, single-document searches, standard RAG works very well. However, as teams try to answer more complex questions that require connecting multiple pieces of information, standard RAG often reaches its limits. GraphRAG—which combines the structured data of knowledge graphs with Large Language Models (LLMs)—is emerging as the logical next step. It allows AI to map relationships between different facts before answering a question. However, many treat GraphRAG like a simple technology update, assuming a new database will automatically yield better answers. In reality, GraphRAG is a dedicated knowledge engineering project. Organizations that see a return on their investment succeed because of clear ownership, a well-defined schema, and ongoing maintenance. What's in this article: What’s driving the shift to GraphRAG What it takes to create successful GraphRAG projects A reference architecture for production GraphRAG Our preferred frameworks and implementation approach The Drivers Behind the Shift to GraphRAG GraphRAG is moving from an experimental concept to enterprise production because of three specific shifts in the technology landscape. 1. The Limits of Similarity Search Standard vector RAG is designed to retrieve text that is semantically similar to a user's query. This is excellent for finding a specific policy, procedure, or document. However, it struggles with two types of questions common in business: Multi-hop questions: Queries that require linking facts across several different documents. For example, "Which of our vendors' suppliers are exposed to the new EU regulation?" Aggregate questions: Queries where the answer requires summarizing trends across an entire dataset, such as "What are the most common themes in this quarter's IT support tickets?" 2. Transition from Pipelines to Agents The role of enterprise AI is also changing. Today's AI agents execute workflows that involve planning, retrieving information multiple times, calling external tools, and verifying intermediate results. This requires knowledge sources that expose explicit relationships and provenance rather than isolated text chunks. GraphRAG provides that structured foundation, allowing agents to navigate connected information. 3. Automated Construction of Knowledge Graphs Until recently, building a knowledge graph required a team of human data architects to manually enter relationships, which made it too expensive for many projects. Today, LLMs can scan unstructured text and extract entities (people, companies, products) and their relationships automatically. This automation has significantly lowered the cost of building a graph. What It Takes to Build GraphRAG The success of a GraphRAG project depends largely on how the data is prepared. Knowledge Extraction at Ingestion In standard RAG, the AI has to figure out relationships at the exact moment the user asks a question. In GraphRAG, you use computing power upfront—during data ingestion—to extract relationships and store them as definitive links. When an LLM extracts "Company A supplies Company B" and saves it as a connected line in the graph, a complex question becomes a simple, fast database lookup. Ontology Design An ontology is the set of rules that defines what categories and relationships are allowed in your graph. When extracting data, it is tempting to let the AI create categories automatically. However, an open schema usually creates chaos. The AI might create WORKS_AT, EMPLOYED_BY, and WORKS_FOR as three separate relationships. Although they mean the same thing, the graph treats them as different relationships. When a user queries the graph later, the system will miss data because the relationships are fragmented. The solution is to define a strict, small schema (for example, 10 to 15 entity types) designed specifically around the questions users will ask. Entity Resolution Entity resolution is the process of ensuring that different variations of a name point to the same record. For example, "IBM", "I.B.M.", and "International Business Machines" must be merged into one single node. If they are not merged, the graph breaks into disconnected pieces, and the AI agent will hit dead ends when trying to follow a relationship. In a recent engagement with a banking fintech client, we saw this failure mode play out. Their initial attempt at open extraction yielded a noisy graph that struggled to distinguish between overlapping product features and historical software versions. We paused the build to co-design a strict, closed schema alongside their internal domain experts. That single intervention turned the system around: entity detection accuracy stabilized, and the graph could finally trace how specific product features evolved across versions—a critical business insight that was previously lost in a sea of generic, misaligned nodes. Data Provenance Agents make knowledge graphs highly effective, but they also amplify data errors. Because an agent queries the database multiple times in a loop, a single piece of bad data can compound into a major error in the final answer. Therefore, data provenance is mandatory. Every fact extracted into the graph must contain a direct link back to the source text. If an auditor or a user cannot verify where a fact came from, the system cannot be trusted. Inside the Implementation: A Reference Architecture While architectures vary by use case, most production GraphRAG systems share the same core components: a graph structure that represents enterprise knowledge, an ingestion pipeline that builds and maintains it, and retrieval patterns that combine graph traversal with LLM reasoning. The Two-Layer Graph A production GraphRAG store is not one graph but two, linked together: Lexical layer: Mirrors the source documents as Document → Section → Chunk nodes, with vector embeddings associated with each chunk. This provides the semantic retrieval capabilities of a traditional vector store within the graph. Domain layer: Represents the entities (Company, Product, Regulation) and relationships extracted from the text, with every entity connected back to the chunks it appeared in via MENTIONED_IN edges. Those cross-layer edges provide the provenance described above. Any traversal through the domain layer can end by handing the LLM the actual source text, and any suspect fact can be audited against the document it came from. The Ingestion Pipeline 1. Parse and Chunk Documents Layout-aware parsing (using tools such as Docling or Unstructured) preserves document structure-headings, tables, sections rather than reducing documents to plain text. Chunks of roughly 300–800 tokens are written into the lexical layer with their hierarchy and reading order intact, and embedded for vector search. 2. Extract Against the Schema A fast, low-cost model processes each chunk, but its output is constrained through structured output so it is impossible for the extractor to emit an entity or relationship type outside the approved ontology. The difference between putting the schema in the prompt and enforcing it at the API level is the difference between a queryable graph and fragmentation like the WORKS_AT/EMPLOYED_BY problem described earlier. A typical extraction result looks like this: { "entities": [ {"type": "Company", "name": "Acme Corp"}, {"type": "Regulation", "name": "EU Regulation 2024/17"} ], "relations": [ {"source": "Acme Corp", "type": "SUBJECT_TO", "target": "EU Regulation 2024/17", "source_chunk": "doc12#c4"} ] }3. Resolve Entities before Writing Each extracted entity is checked against the existing graph: embedding similarity generates candidate matches, and a lightweight LLM adjudicates each candidate pair ("same real-world entity, yes or no?") using both entities' descriptions and neighboring relationships as context. Confirmed matches merge into the existing node, keeping all aliases and provenance links. Because this step runs during every ingestion, new documents are incorporated into the graph incrementally without requiring a full rebuild. 4. Update Graph Incrementally Once entity resolution is complete, the graph is updated using upsert (merge) semantics, so re-processing a document never duplicates nodes or edges. Every relationship carries its source_chunk reference. 5. Build Community Summaries For corpora where users ask trend and theme questions, we run community detection (the Leiden algorithm) over the domain graph and have an LLM write hierarchical summaries of each cluster. These summaries—not raw chunks—are what answer "what are the main themes?" questions. Query Time: How the Agent Actually Uses the Graph At query time, GraphRAG works best by combining vector search with graph traversal. User queries are expressed in natural language, while graphs excel at representing explicit relationships rather than fuzzy text matches. The system therefore begins with vector search over the lexical layer to identify relevant entry points, then traverses the graph to retrieve the connected information needed to answer the question. Rather than relying on a fixed retrieval pipeline, the agent is given a small set of graph operations: search_entities(text)→ candidate entity nodes (vector + name match) get_neighbors(node, rel_type?) → adjacent nodes and relationships get_source_chunks(node) → original text behind a fact (provenance) query_graph(question) → generated Cypher, read-only, as a fallbackMost questions can be answered using the first three operations. For more complex multi-hop and aggregation queries, the agent generates a Graph query directly. The graph schema is included in the model's context, the generated query is validated before execution, and any execution errors are fed back to the model for self-correction. In practice, two or three iterations resolve most failures. The vendor-exposure example introduced earlier compiles down to a single graph traversal: MATCH (v:Company {name: "Vendor X"})(p:Product)The multi-hop question that defeats similarity search becomes one declarative query because the reasoning was already done, once, at ingestion. We expose this toolbox to AI agents over the Model Context Protocol (MCP), which has become the standard integration layer: the graph database runs behind an MCP server, and any MCP-capable agent can inspect the schema and call the tools without custom glue code. This also keeps the security controls (read-only credentials, timeouts, result limits, query logging) in one enforceable place. Frameworks We Use LayerTypical ChoicesWhen and WhyGraph databaseNeo4j (with its native vector index); or FalkorDBNeo4j for enterprise deployments: mature Cypher tooling, vector search built in, official MCP server. FalkorDB for lighter-weight or embedded deployments.Graph constructionLlamaIndex PropertyGraphIndex; the neo4j-graphrag package; LangChain LLMGraphTransformerThese handle schema-constrained extraction, embedding, and upsert plumbing. Choice depends primarily on the client's orchestration stack.Indexing pipelinesMicrosoft GraphRAG; LightRAGMicrosoft GraphRAG for aggregate and thematic questions. LightRAG when frequent updates and incremental, lower-cost indexing are more important.Agent memoryGraphiti (Zep)Best for evolving data such as user preferences or account states. Its bi-temporal model (validity intervals on edges instead of overwrites) answers both "what is true now?" and "what was true then?"Agent integrationMCP servers; native function callingMCP for portability across agent frameworks; a single place to enforce read-only access and query limits.EvaluationRAGAS plus hand-built multi-hop test setsRAGAS measures faithfulness and relevance. Multi-hop graph scenarios require domain-specific hand-crafted test cases.One selection principle worth stating explicitly: the framework choice matters far less than the decisions covered in the previous section. A team with a clean closed schema and solid entity resolution will succeed with any of these stacks; a team without them might fail with all of them. Our Implementation Approach GraphRAG technology has matured significantly faster than the enterprise's understanding of what it requires. What remains scarce is the discipline to treat enterprise knowledge as a curated, continuously maintained asset rather than a pile of documents with an index on top. At QBurst, we put those principles into practice through a phased implementation approach. We begin by identifying the business questions the system must answer before designing the ontology and knowledge model. After validating the graph within a single business domain through User Acceptance Testing (UAT), we expand incrementally to additional domains. Our Institutional Knowledge Platform and deployment accelerators reduce implementation effort while preserving this staged approach, allowing clients to move from pilot to production more quickly.
Athul Jayson
Athul Jayson
15 Min Read

The Advisor Before Your Advisor: How AI Is Reshaping Luxury Discovery

Luxury retail has spent the past several years solving a specific problem: how to make a client feel known by an advisor who has, technically, just met them. At a leading French global luxury fashion house, the answer is an intelligence layer seamlessly woven into the natural flow of service. Advisors gain a real-time view of relationship history, preferences, and behavioral context at the point of interaction, without clients ever perceiving that such a system is involved. What's in this article: The role of invisible intelligence in high-end in-store clienteling The luxury consumer's shift toward generative AI for early product discovery The business cost of operating without machine-readable brand data A three-horizon framework to unify digital discovery with in-store service A client who purchased in Paris is recognized, without prompting, on arrival in New York. Clienteling-attributed sales grew 15 percent in the twelve months following deployment. The system’s value relies entirely on its discretion. If a client senses that the intelligence layer is driving the interaction, the bespoke luxury experience will be compromised. While this seamless personalization perfects the in-store experience, it addresses only the interactions that happen once the client has already arrived. The more consequential challenge is the engagement that happens before the visit. Because high-value luxury relationships rely heavily on proactive outreach and curated appointments, the next frontier is applying that same level of invisible, data-driven intelligence to inspire the client's visit. The Myth of the AI-Averse Luxury Buyer A common misconception is that AI-driven discovery is something younger or lower-spend customers rely on, while a brand's most valuable relationships remain strictly anchored in boutique visits and advisor calls. But data tells a different story: the most valuable clients appear to be the most enthusiastic about AI. About 82% of very heavy spenders used AI for their most recent luxury purchase, compared to only 51% of moderate spenders and 28% of light spenders. This is a small population with outsized weight: Just 1% of luxury customers account for 21% of total spending. This same top tier's share of total luxury spend has risen from 14% to 24% over the past decade, a trend that has held steady through periods of broader market volatility. This segment is exactly who luxury brands design their high-touch advisor programs, private events, and milestone outreach for. As the data proves, they are also the most fluent in AI-assisted discovery. AI-Led Discovery Requires Legible Data Consumers are asking AI what to buy before deciding which house to buy it from. (About 70% of luxury-related generative search queries do not mention brand names). A brand's product data, provenance, and narrative either come up at that exact moment, or the brand is simply excluded from the conversation, rendering even the best in-store advisory ineffective if the client never makes a visit. Yet, most luxury brands have not built digital infrastructure for this initial, machine-led phase of discovery with anything resembling the rigor they apply to boutique relationships. This shift in discovery is true across the broader retail sector. As highlighted by commerce technology providers, the immediate operational mandate for brands is to make product catalogs, inventory, and trust signals readable by machines as well as humans. "The immediate operational mandate for brands is to make product catalogs, inventory, and trust signals readable by machines as well as humans." In the long term, making data machine-readable will be the baseline requirement to compete in an agentic marketplace. Luxury is not exempt from this requirement simply because its products are exceptional. If anything, provenance and craftsmanship are exactly the kind of detail that a poorly structured product page fails to communicate to an AI agent scraping the web. The goal is not to apply AI uniformly across the customer journey. Different stages demand different capabilities: In personal clienteling, AI should stay invisible. Relying on automated messaging to replace human interaction risks breaking the trust inherent in high-end luxury service. During discovery, the opposite is true. The brand must be legible to an AI system, structured clearly enough for that system to represent it accurately. The Cost of Protecting Exclusivity Over Legibility Luxury was an early adopter of AI in general, but it has directed most of that investment toward operational efficiency rather than the client relationship. According to industry research, AI deployment inside luxury houses has grown roughly fivefold in support functions and nearly doubled in operational functions since 2024. Adoption in customer-facing functions has grown far more slowly over the same period. This imbalance reflects a legitimate concern. Luxury brands are right to be cautious about technologies that could make client relationships feel manufactured. But extending that caution to the data behind those relationships is a mistake. Structuring product data and brand narratives so AI systems can accurately find, interpret, and represent a house does not diminish the human experience in-store. It ensures the brand is represented accurately when high-net-worth clients begin researching purchases. Caution aimed at protecting exclusivity has, so far, coincided with the discovery conversation moving to other sources. Recent market data on generative search behavior reveals that 90% of the URLs cited by large language models for luxury queries point to external websites, rather than the brands' own domains. "Recent market data on generative search behavior reveals that 90% of the URLs cited by large language models for luxury queries point to external websites, rather than the brands' own domains." When AI systems rely on third-party retailers, fashion blogs, or resale platforms instead of the brand's official data, they misrepresent product positioning and craftsmanship. Without an advisor present to correct the record during this digital discovery phase, the brand's reputation and value proposition are diluted before the client ever makes contact. The 3 Horizons of Client Intelligence Client intelligence now has to operate across two very different moments: when AI helps a client discover a brand, and when an advisor helps that client make a purchase. Building those capabilities is a progression, not a single initiative. It unfolds across three distinct horizons, each building on the last. Horizon 1: In-Store Recognition At this stage, the advisor knows the client. The invisible clienteling layer successfully unifies and surfaces client data right at the moment of human interaction. While luxury houses are investing here, the focus remains narrow. Within customer-facing AI specifically, the furthest progress is concentrated in AI-augmented sales assistance. This represents real progress, but it is aimed entirely at the advisor’s side of the relationship. Horizon 2: Digital Legibility At this stage, the brand becomes knowable to the AI systems that precede the advisor. Product data, provenance, and narrative are structured clearly enough for an AI system to accurately represent the house before a human is ever involved. Success at this stage is not measured by visibility alone but by narrative control: whether AI systems rely on the brand's own content rather than third-party interpretations. A 2026 benchmark found that even the strongest luxury brands perform poorly on this measure. Much of their visibility in AI search is driven by external sources, not by deliberately structured brand content. Mastering Horizon 2 means deliberately structuring digital data so that AI models draw directly from the brand’s own approved messaging. Horizon 3: Continuity At the final stage, in-store recognition and digital legibility operate as a single system. A client exploring products via an AI search and a client greeted by an advisor in a boutique experience the same brand intelligence. No luxury house currently operates fully at this horizon. Reaching Horizon 3 requires three operational shifts: A Single Data Architecture: Client recognition and digital legibility must draw from the same trusted customer and product data rather than separate systems. Learn-and-Scale Ownership: Successful pilots become repeatable capabilities with clear ownership and a path to scale, instead of remaining isolated experiments. Impact-Based Measurement: Success is measured by stronger client relationships and business outcomes rather than AI adoption or deployment. Luxury’s Next Evolution The invisible intelligence powering today's in-store clienteling is the right foundation. Luxury brands do not need to replace the systems that already help them personalize every interaction. The next step is extending that same rigor beyond the boutique. As AI assistants and conversational search become the first stop in the buying journey, brands need to ensure their products, craftsmanship, and heritage are represented with the same accuracy and nuance that clients experience in store. That requires the same trusted data foundation to support both AI-driven discovery and advisor-led clienteling. Luxury has always been deliberate about how its boutiques express the brand. In the years ahead, it will need to be just as deliberate about how AI understands it. For luxury leaders, the message is clear: Don't wait. Be found.
Sunil Talreja.webp
Sunil Talreja
11 Min Read

Engineering Production-Ready AI for Global HR

In a previous article, I shared how our AI-powered multilingual talent acquisition platform evolved from a prototype to a live enterprise system. This required solving three technical challenges along the way: messy enterprise data, unpredictable LLM behavior, and shared infrastructure limits. This article breaks down these challenges and the architectural patterns we used to solve them. What's in this article: Handling unpredictable LLM responses with defensive data pipelines Using reference data to bridge the gap in enterprise context Validating cloud AI quotas under sustained load Preventing mixed database workloads from competing for shared resources 1. Managing Unpredictable LLM Outputs Even with engineered prompts and explicit schemas, the LLM we used to extract structured data from candidate profiles, job descriptions, and interpret natural-language search queries occasionally produced errors. It would return malformed JSON unparseable by downstream services, generate values outside approved reference data, and produce outputs that violated business rules, despite having the correct syntax. To reduce these risks, we treated the enterprise context as part of the AI architecture. Since we couldn't prevent every failure, our objective was to detect, contain, and recover from them before they affected users. We implemented a defensive AI pipeline that validated every interaction stage: StagePurposeWhy It's NecessaryPreprocessingClean, normalize, and enrich input using enterprise reference data (stored in PostgreSQL/OpenSearch).Improves input quality and reduces errors caused by incomplete data.Prompt ConstructionBuild structured, version-controlled prompts in the DB with a clear business context.Increases consistency and allows instruction updates without deployments.Response ValidationVerify AI responses against schemas and controlled business vocabularies.Prevents invalid or non-compliant data from entering downstream systems.Retry LogicRetry transient failures using configurable backoff and resilience policies.Automatically recovers from temporary AI service failures.Fallback StrategyConfigurable parsing strategies (for example, switching between Amazon Bedrock and Textkernel).Maintains business continuity and extraction accuracy during service disruptions.Since Amazon Bedrock did not provide structured output capabilities at the time of this implementation, the application had to validate every response. Structured outputs are now available in Amazon Bedrock, which can reduce the need for custom validation logic in newer projects. Key Takeaway Validation reduces risk but does not remove uncertainty; even low failure rates are significant at scale. Therefore, never assume LLM output is correct just because it is well-formed. Always treat responses as untrusted input and validate them against enterprise context and business rules before they hit the rest of the application. 2. Handling Hidden Infrastructure Constraints Amazon Bedrock publishes its rate and token limits, but understanding how they affect a specific application requires testing under realistic conditions. During development, the platform stayed well within those boundaries. Under continuous load, the application began encountering timeout exceptions and HTTP 429 ("Too Many Requests") responses as it reached the service's documented throughput limits. To prevent these limits from stalling the platform, we built capacity management directly into the architecture: Quota-Mapping: Throughput limits vary by model and region, so we mapped Bedrock's request and token quotas early and used them as input to capacity planning. Sustained Load Validation: We extended our load testing to simulate prolonged demand, ensuring the system could sustain real-world global traffic. Throttling as a Runtime Condition: Rather than assuming unlimited availability, we built retry policies with exponential backoff and graceful degradation directly into the service integration layer. This ensured the application remained responsive even when Bedrock returned timeouts or HTTP 429 responses. Key Takeaway Successful enterprise AI depends heavily on infrastructure planning. Validate capacity limits during architecture and load testing, treat AI services as finite infrastructure, and design applications to operate predictably when limits are reached. 3. Database Pressure from Competing Workloads The third challenge emerged in the data layer: our platform combined transactional operations, semantic search, location-based retrieval, and real-time analytical queries within a single user journey. While each performed well independently, running them together under production load created severe resource pressure. Complex queries and vector searches competed with transactional operations for the same CPU, I/O, and connection pool resources. Long-running queries held connections, concurrency saturated the pool, and database slowdowns triggered retry logic including @Retryable flows that re-invoked Bedrock calls, creating a feedback loop that amplified the original pressure. A subtler issue involved parallel execution and transaction boundaries. Because Spring binds transaction context to the thread, requests that started inside a @Transactional flow and delegated work to worker threads caused each thread to acquire its own connection. As a result, a single user request could exhaust the pool much faster than standard request counts suggested. To stabilize the system and reduce the pressure, we made three key design decisions: Offloading to OpenSearch: Vector similarity searches, complex count queries, and aggregation workloads were moved out of PostgreSQL and into OpenSearch, which is purpose-built for these retrieval-heavy patterns. This was the single most impactful change; it freed the PostgreSQL connection pool from long-running search operations and dramatically reduced response times for transactional workflows. Isolated Transactional and Search Workloads: Enterprise AI naturally combines transactional processing, retrieval, and analytics into a single business workflow. By treating each as an independent workload with its own resource path, PostgreSQL could focus on ACID-compliant operations without competing against expensive search and analytics queries. Batched and Precomputed Heavy Work Asynchronously: Large match jobs and data-processing flows were broken into smaller, configurable batches and run in controlled parallel steps during off-peak windows. Results were preprocessed and stored ahead of time, so peak API traffic could read persisted results instead of hammering the database on demand. This meant fewer timeouts and far less competition for database connections when users needed them most. Key Takeaway The exact technology choices will vary across organizations. Still, the broader principle remains the same: enterprise AI changes database usage patterns by converging transactional, retrieval, and analytical workloads within a single application flow. Rather than relying on larger databases alone, the solution lies in designing explicit boundaries between these workload types. Separating their responsibilities prevents resource pressure from becoming a system-wide bottleneck. Engineering AI for the Real World Enterprise AI initiatives succeed or fail on the strength of their underlying infrastructure. While sophisticated models may drive the core capabilities, scaling a global HR platform requires actively managing the realities of connection pools, API rate limits, and concurrent database workloads. Securing long-term value from these platforms demands an architecture designed specifically for resource isolation and capacity management. Establishing this resilient foundation allows the system to operate reliably under enterprise-level pressure today, while providing the stability needed to integrate future innovations tomorrow.
Alan Aldrin.jpg
Alan Aldrin
8 Min Read