{"id":553,"date":"2026-04-14T11:57:49","date_gmt":"2026-04-14T11:57:49","guid":{"rendered":"https:\/\/www.devopsschool.com\/tutorials\/google-cloud-enterprise-knowledge-graph-tutorial-architecture-pricing-use-cases-and-hands-on-guide-for-ai-and-ml\/"},"modified":"2026-04-14T11:57:49","modified_gmt":"2026-04-14T11:57:49","slug":"google-cloud-enterprise-knowledge-graph-tutorial-architecture-pricing-use-cases-and-hands-on-guide-for-ai-and-ml","status":"publish","type":"post","link":"https:\/\/www.devopsschool.com\/tutorials\/google-cloud-enterprise-knowledge-graph-tutorial-architecture-pricing-use-cases-and-hands-on-guide-for-ai-and-ml\/","title":{"rendered":"Google Cloud Enterprise Knowledge Graph Tutorial: Architecture, Pricing, Use Cases, and Hands-On Guide for AI and ML"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Category<\/h2>\n\n\n\n<p>AI and ML<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">1. Introduction<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">What this service is<\/h3>\n\n\n\n<p><strong>Enterprise Knowledge Graph<\/strong> in Google Cloud is best understood as an <strong>enterprise entity-and-relationship layer<\/strong> that helps Google\u2019s search and AI systems understand <em>who<\/em>, <em>what<\/em>, and <em>how things relate<\/em> across your organization\u2019s content (documents, intranet pages, databases, and SaaS systems), while respecting permissions.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">One-paragraph simple explanation<\/h3>\n\n\n\n<p>If you\u2019ve ever struggled to find the right document, person, policy, ticket, or product detail because information is scattered across tools, an <strong>Enterprise Knowledge Graph<\/strong> helps by organizing that information into connected \u201cthings\u201d (entities) and \u201clinks\u201d (relationships). This makes search and question-answering experiences more accurate than simple keyword matching.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">One-paragraph technical explanation<\/h3>\n\n\n\n<p>In practice, Google Cloud does <strong>not<\/strong> typically expose \u201cEnterprise Knowledge Graph\u201d as a single standalone product you click and buy. Instead, it appears as an underlying capability inside Google\u2019s enterprise search and AI offerings\u2014most notably <strong>Vertex AI Search and Conversation<\/strong> (Discovery Engine) and <strong>Google Cloud Search<\/strong> (Workspace\/enterprise search). These services ingest enterprise content, derive\/accept structured metadata, apply query understanding, ranking, and (where configured) generative or extractive answers. The \u201cknowledge graph\u201d aspect is the combination of entity extraction, schema\/metadata modeling, relationship inference, and permission-aware retrieval.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">What problem it solves<\/h3>\n\n\n\n<p>Enterprise teams commonly face:\n&#8211; Information silos across Storage, wikis, ticketing tools, CRM, and databases\n&#8211; Inconsistent naming (\u201cSRE Handbook\u201d vs \u201cOps Runbook\u201d) and ambiguous terms\n&#8211; Poor search relevance and low trust in internal search\n&#8211; Governance and security requirements (permission trimming, auditing)\n&#8211; The need to ground AI answers in approved internal sources<\/p>\n\n\n\n<p>An Enterprise Knowledge Graph approach helps unify these into a permission-aware, semantically rich retrieval layer.<\/p>\n\n\n\n<blockquote>\n<p><strong>Important naming\/status note (verify in official docs):<\/strong> \u201cEnterprise Knowledge Graph\u201d is widely used by Google to describe the technology behind enterprise search and knowledge experiences. For hands-on implementation on Google Cloud, the most practical and currently documented path is typically <strong>Vertex AI Search and Conversation<\/strong> and\/or <strong>Google Cloud Search<\/strong>. This tutorial is written with that reality in mind and focuses on an executable lab using Vertex AI Search and Conversation.<\/p>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">2. What is Enterprise Knowledge Graph?<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Official purpose (in Google Cloud context)<\/h3>\n\n\n\n<p>In Google Cloud\u2019s AI and ML ecosystem, <strong>Enterprise Knowledge Graph<\/strong> refers to the capability of building and using a graph-like representation of enterprise knowledge\u2014entities (employees, teams, documents, products, customers) and relationships (owns, reports-to, references, relates-to, part-of)\u2014to improve:\n&#8211; Search relevance and discovery\n&#8211; Question answering grounded in enterprise sources\n&#8211; Content recommendations and navigation\n&#8211; Understanding of organizational context<\/p>\n\n\n\n<p>Because Google Cloud often delivers this capability through other services, you\u2019ll usually interact with it through:\n&#8211; <strong>Vertex AI Search and Conversation<\/strong>: managed enterprise search + conversational experiences over your data\n&#8211; <strong>Google Cloud Search<\/strong>: enterprise search across Workspace and connected repositories<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Core capabilities<\/h3>\n\n\n\n<p>Common Enterprise Knowledge Graph capabilities in Google Cloud-driven solutions include:\n&#8211; <strong>Ingestion<\/strong> of unstructured and structured content (documents, web pages, data exports, and in some cases connectors)\n&#8211; <strong>Metadata and schema modeling<\/strong> to represent enterprise-specific fields (department, product line, document type, lifecycle)\n&#8211; <strong>Entity understanding<\/strong> (people, systems, projects, policies) to boost relevance\n&#8211; <strong>Relationship signals<\/strong> (document-to-project, ticket-to-service, policy-to-control) to improve retrieval and navigation\n&#8211; <strong>Permission-aware retrieval<\/strong> so users only see what they\u2019re authorized to see\n&#8211; <strong>Ranking, facets, filters, and synonyms<\/strong> to improve usability and discoverability\n&#8211; <strong>APIs and analytics<\/strong> for integration and operational monitoring<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Major components (as you\u2019ll see them in Google Cloud implementations)<\/h3>\n\n\n\n<p>Because \u201cEnterprise Knowledge Graph\u201d is a capability rather than a single API in many cases, components are typically implemented using:\n&#8211; <strong>Content sources<\/strong>: Cloud Storage, BigQuery, websites, document management systems, and SaaS tools\n&#8211; <strong>Ingestion\/indexing layer<\/strong>: Vertex AI Search and Conversation data stores and import pipelines (or Cloud Search indexing\/connectors)\n&#8211; <strong>Schema\/metadata<\/strong>: data store schema (where supported), custom attributes, tags, structured fields\n&#8211; <strong>Serving layer<\/strong>: Search app\/engine, query APIs, UI integration\n&#8211; <strong>Security layer<\/strong>: IAM, repository ACL mapping, identity integration, auditing\n&#8211; <strong>Observability<\/strong>: Cloud Logging, Cloud Monitoring, usage analytics, quality evaluation (where supported)<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Service type<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Not typically a single standalone Google Cloud managed service<\/strong> with its own console page labeled \u201cEnterprise Knowledge Graph\u201d.<\/li>\n<li><strong>Delivered as a capability<\/strong> within managed services (notably enterprise search) and solution architectures.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Scope and locality<\/h3>\n\n\n\n<p>This depends on the underlying service you use:\n&#8211; <strong>Vertex AI Search and Conversation<\/strong> resources are <strong>project-scoped<\/strong> and created in supported <strong>locations<\/strong> (often including a <code>global<\/code> location for certain resource types\u2014verify in official docs).\n&#8211; <strong>Google Cloud Search<\/strong> is typically <strong>organization\/domain scoped<\/strong> (Workspace or enterprise deployment), with configuration via Admin console and APIs.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">How it fits into the Google Cloud ecosystem<\/h3>\n\n\n\n<p>Enterprise Knowledge Graph solutions often sit at the intersection of:\n&#8211; <strong>AI and ML<\/strong> (semantic understanding, ranking, extraction, optional generative answers)\n&#8211; <strong>Data platforms<\/strong> (BigQuery, Dataplex, Cloud Storage for source data)\n&#8211; <strong>Security and identity<\/strong> (Cloud IAM, Workspace identity, SSO)\n&#8211; <strong>Application integration<\/strong> (APIs, web apps, chatbots, internal portals)<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">3. Why use Enterprise Knowledge Graph?<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Business reasons<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Faster knowledge discovery<\/strong>: reduce time spent searching for policies, runbooks, designs, contracts.<\/li>\n<li><strong>Better decision-making<\/strong>: connect KPIs, definitions, owners, and lineage to reduce misinterpretation.<\/li>\n<li><strong>Improved customer support<\/strong>: agents find correct answers faster and reduce escalations.<\/li>\n<li><strong>Enable enterprise AI<\/strong>: provide grounded retrieval for internal assistants and RAG patterns.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Technical reasons<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Move beyond keywords<\/strong>: entities and relationships enable semantic matching and disambiguation.<\/li>\n<li><strong>Unified retrieval over many systems<\/strong>: index across repositories with consistent metadata and access control.<\/li>\n<li><strong>Schema-driven filtering<\/strong>: make search results actionable (facet by department, product, region, doc type).<\/li>\n<li><strong>Integrate with apps<\/strong>: provide APIs for internal portals, chat tools, and automation.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Operational reasons<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Managed indexing and serving<\/strong> (when using Vertex AI Search and Conversation): reduces operational load vs building and scaling your own search + graph stack.<\/li>\n<li><strong>Observability and governance<\/strong>: consistent logging, metrics, and access auditing patterns in Google Cloud.<\/li>\n<li><strong>Repeatable deployment<\/strong>: projects, IAM, and infrastructure-as-code for environments (dev\/test\/prod).<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Security\/compliance reasons<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Permission trimming<\/strong>: enforce document-level access control if configured correctly.<\/li>\n<li><strong>Auditability<\/strong>: integrate with Cloud Logging and Admin\/audit logs (service-dependent).<\/li>\n<li><strong>Data residency and policy<\/strong>: choose supported locations and governance features (verify service capabilities).<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Scalability\/performance reasons<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Large-scale indexing and low-latency retrieval<\/strong> is hard to build from scratch.<\/li>\n<li>Managed services handle:<\/li>\n<li>capacity planning<\/li>\n<li>scaling<\/li>\n<li>performance tuning (within product constraints)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">When teams should choose it<\/h3>\n\n\n\n<p>Choose an Enterprise Knowledge Graph approach (via Google Cloud enterprise search and data services) when you need:\n&#8211; Permission-aware enterprise search across many repositories\n&#8211; Rich metadata and relationships that improve discovery\n&#8211; Grounding for AI assistants in enterprise-approved sources\n&#8211; A managed service path to production search relevance<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">When they should not choose it<\/h3>\n\n\n\n<p>Avoid (or rethink) this approach if:\n&#8211; Your content is small and already well-structured in one database\n&#8211; You need complex graph algorithms (centrality, community detection, pathfinding) at scale\u2014consider a dedicated graph database\/analytics stack\n&#8211; You require strict on-prem-only processing with no cloud-managed indexing\n&#8211; Your compliance needs require features not supported by the chosen underlying service (verify)<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">4. Where is Enterprise Knowledge Graph used?<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Industries<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Financial services (policies, controls, procedures, risk documentation)<\/li>\n<li>Healthcare and life sciences (clinical ops documents, SOPs, regulated content)<\/li>\n<li>Retail and e-commerce (product catalogs, merchandising knowledge, supplier docs)<\/li>\n<li>Manufacturing (parts, BOM-related docs, maintenance knowledge)<\/li>\n<li>Technology\/SaaS (engineering docs, runbooks, incident postmortems)<\/li>\n<li>Government and education (knowledge bases, policies, intranet search)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Team types<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Platform engineering \/ internal tools teams<\/li>\n<li>Data engineering and analytics teams<\/li>\n<li>Security and governance teams<\/li>\n<li>Customer support engineering<\/li>\n<li>Legal\/compliance operations<\/li>\n<li>Enterprise architecture<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Workloads<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Enterprise document search and intranet search<\/li>\n<li>Knowledge base and support portal search<\/li>\n<li>AI assistant grounding (RAG)<\/li>\n<li>Metadata discovery for data platforms (data products, owners, definitions)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Architectures<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Central search service used by many apps<\/li>\n<li>Domain-based knowledge graphs (by business unit) with federation<\/li>\n<li>Multi-tenant search across environments (dev\/test\/prod)<\/li>\n<li>Hybrid ingestion with batch and streaming updates<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Real-world deployment contexts<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Production<\/strong>: strict IAM, change control, data governance, monitoring, quality evaluation, and rollback strategy.<\/li>\n<li><strong>Dev\/test<\/strong>: limited corpus, synthetic or non-sensitive data, relaxed IAM, low query volume, frequent schema iteration.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">5. Top Use Cases and Scenarios<\/h2>\n\n\n\n<p>Below are realistic scenarios where Enterprise Knowledge Graph patterns (often implemented via Vertex AI Search and Conversation \/ Cloud Search + Google Cloud data services) fit well.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1) Permission-aware intranet search<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> Employees can\u2019t find the right internal documents; search returns irrelevant results or leaks restricted docs.<\/li>\n<li><strong>Why this fits:<\/strong> Enterprise knowledge graphs improve relevance via entities\/metadata and enforce access control through permission trimming (service-dependent).<\/li>\n<li><strong>Example:<\/strong> HR policies, travel rules, and benefits docs searchable with filters by region and employee type.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">2) Support agent assist for ticket resolution<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> Support agents waste time locating the correct troubleshooting steps across wikis and past tickets.<\/li>\n<li><strong>Why this fits:<\/strong> Entities like product, error code, version, and environment create stronger matching than keywords.<\/li>\n<li><strong>Example:<\/strong> Query \u201c502 error after upgrade v3.4\u201d returns the runbook section and linked known-issues ticket.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">3) Engineering runbook and incident postmortem discovery<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> Runbooks exist but are hard to find during incidents.<\/li>\n<li><strong>Why this fits:<\/strong> Knowledge graph connects services \u2194 runbooks \u2194 owners \u2194 alerts \u2194 incidents.<\/li>\n<li><strong>Example:<\/strong> Searching a service name returns the on-call rotation, dashboards, and top related runbooks.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">4) Policy-to-control mapping for compliance<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> Compliance teams need to prove which policies satisfy which controls and where evidence lives.<\/li>\n<li><strong>Why this fits:<\/strong> Graph links policy clauses \u2194 controls \u2194 evidence docs \u2194 owners.<\/li>\n<li><strong>Example:<\/strong> SOC 2 control queries return mapped policies and evidence locations with auditable access.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">5) Data catalog augmentation and data product discovery<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> Analysts don\u2019t know which dataset is \u201cofficial\u201d and who owns it.<\/li>\n<li><strong>Why this fits:<\/strong> Entity relationships link datasets \u2194 dashboards \u2194 definitions \u2194 owners \u2194 lineage (often using Dataplex\/Data Catalog plus search).<\/li>\n<li><strong>Example:<\/strong> Search \u201cactive customers definition\u201d returns the canonical metric doc and the authoritative BigQuery table.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">6) Enterprise search across Cloud Storage + BigQuery exports<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> Content is split across file buckets and structured exports; users need a single search experience.<\/li>\n<li><strong>Why this fits:<\/strong> Unified indexing and metadata lets users filter and refine.<\/li>\n<li><strong>Example:<\/strong> Search \u201cQ4 forecast\u201d shows PDF decks plus the linked BigQuery table and owner.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">7) Knowledge grounding for internal chatbots (RAG)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> Generative assistants hallucinate or answer from outdated docs.<\/li>\n<li><strong>Why this fits:<\/strong> Retrieval from indexed, curated sources with metadata and freshness constraints improves grounding.<\/li>\n<li><strong>Example:<\/strong> A bot answers \u201cWhat is our password policy?\u201d citing the current policy doc and version.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">8) M&amp;A knowledge integration<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> Two organizations merge; their knowledge systems conflict and employees can\u2019t navigate the new environment.<\/li>\n<li><strong>Why this fits:<\/strong> Knowledge graph can unify entities across domains, map synonyms, and preserve permissions.<\/li>\n<li><strong>Example:<\/strong> \u201cPTO policy\u201d returns results from both legacy systems with clear source labeling.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">9) Product and parts knowledge for field service<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> Technicians need accurate parts and procedures offline\/low bandwidth.<\/li>\n<li><strong>Why this fits:<\/strong> Graph of parts \u2194 models \u2194 procedures \u2194 safety notices supports precise retrieval and packaging.<\/li>\n<li><strong>Example:<\/strong> Search by model number returns the correct maintenance steps and required parts list.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">10) Legal clause library search<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> Legal teams reuse clauses but struggle to find the best precedent.<\/li>\n<li><strong>Why this fits:<\/strong> Entities like jurisdiction, contract type, and risk classification improve discoverability.<\/li>\n<li><strong>Example:<\/strong> Query \u201climitation of liability SaaS EU\u201d returns curated clauses and negotiation notes.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">11) Sales enablement search with CRM metadata<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> Reps can\u2019t find the right deck or case study for an industry.<\/li>\n<li><strong>Why this fits:<\/strong> Entities like industry, product, and competitor connect to content.<\/li>\n<li><strong>Example:<\/strong> Search \u201chealthcare security case study\u201d returns approved collateral and relevant win stories.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">12) Security operations knowledge base<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> SOC analysts need fast access to playbooks and tool instructions.<\/li>\n<li><strong>Why this fits:<\/strong> Graph links alert types \u2194 playbooks \u2194 tools \u2194 owners \u2194 past incidents.<\/li>\n<li><strong>Example:<\/strong> Searching an alert signature shows the recommended response and similar incidents.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">6. Core Features<\/h2>\n\n\n\n<p>Because \u201cEnterprise Knowledge Graph\u201d is typically implemented through other Google Cloud services, the feature set you get depends on the chosen underlying product (most commonly Vertex AI Search and Conversation or Google Cloud Search). The features below describe what you should look for and how they matter.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Feature 1: Enterprise content ingestion and indexing<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does:<\/strong> Ingests documents and\/or structured records from enterprise repositories into an index suitable for search and retrieval.<\/li>\n<li><strong>Why it matters:<\/strong> Without reliable ingestion, your \u201cknowledge graph\u201d becomes stale or incomplete.<\/li>\n<li><strong>Practical benefit:<\/strong> Fast onboarding of a knowledge base (e.g., Cloud Storage documents or website content).<\/li>\n<li><strong>Limitations\/caveats:<\/strong> Connector availability and supported formats vary. Always validate supported sources and file types in official docs.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Feature 2: Schema and metadata modeling<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does:<\/strong> Allows you to attach structured attributes to documents\/records (department, product, region, version, owner).<\/li>\n<li><strong>Why it matters:<\/strong> Metadata enables filtering, faceting, and better relevance.<\/li>\n<li><strong>Practical benefit:<\/strong> Users can filter results to \u201conly current policies\u201d or \u201cdocs for product X\u201d.<\/li>\n<li><strong>Limitations\/caveats:<\/strong> Some systems support richer schemas than others; schema changes may require reindexing.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Feature 3: Entity understanding (people, products, services, topics)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does:<\/strong> Recognizes important entities and uses them to improve query understanding and ranking.<\/li>\n<li><strong>Why it matters:<\/strong> Reduces ambiguity and boosts results that match the user\u2019s intent.<\/li>\n<li><strong>Practical benefit:<\/strong> Searching \u201cSRE onboarding\u201d can prioritize the canonical onboarding doc and related checklists.<\/li>\n<li><strong>Limitations\/caveats:<\/strong> Entity extraction quality depends on content quality, language, and domain terminology.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Feature 4: Relationship signals (implicit or explicit)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does:<\/strong> Uses link structure, metadata references, and ingestion signals to connect items.<\/li>\n<li><strong>Why it matters:<\/strong> Relationships enable \u201crelated content\u201d experiences, not just ranked lists.<\/li>\n<li><strong>Practical benefit:<\/strong> A policy page can surface linked controls, evidence, and owner contacts.<\/li>\n<li><strong>Limitations\/caveats:<\/strong> If relationships are not explicit in metadata or content, you may need a data engineering step to add them.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Feature 5: Query understanding and relevance ranking<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does:<\/strong> Improves ranking using ML signals (intent, freshness, popularity, structured fields).<\/li>\n<li><strong>Why it matters:<\/strong> Users adopt enterprise search only when it feels consistently \u201cright\u201d.<\/li>\n<li><strong>Practical benefit:<\/strong> Better top-3 results, fewer reformulations.<\/li>\n<li><strong>Limitations\/caveats:<\/strong> Relevance tuning and evaluation require process and measurement, not just configuration.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Feature 6: Facets, filters, and sorting<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does:<\/strong> Enables narrowing results by metadata fields and sorting by freshness or other attributes.<\/li>\n<li><strong>Why it matters:<\/strong> Enterprise corpuses are large; users need fast refinement.<\/li>\n<li><strong>Practical benefit:<\/strong> Filter by doc type=runbook and environment=prod.<\/li>\n<li><strong>Limitations\/caveats:<\/strong> Facets depend on clean metadata. Garbage-in \u2192 confusing filters.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Feature 7: Permission-aware retrieval (permission trimming)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does:<\/strong> Ensures users only see results they are authorized to access.<\/li>\n<li><strong>Why it matters:<\/strong> Security failures in search are high impact.<\/li>\n<li><strong>Practical benefit:<\/strong> A single search UI can safely cover multiple repositories.<\/li>\n<li><strong>Limitations\/caveats:<\/strong> Correct ACL mapping is critical. Validate with test accounts and negative tests.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Feature 8: APIs for integration<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does:<\/strong> Programmatic query endpoints and management APIs for automation.<\/li>\n<li><strong>Why it matters:<\/strong> Real adoption often requires embedding search into portals, chat tools, or apps.<\/li>\n<li><strong>Practical benefit:<\/strong> Build an internal \u201cAsk Engineering\u201d portal that calls a search API.<\/li>\n<li><strong>Limitations\/caveats:<\/strong> Rate limits, quotas, and auth patterns apply; plan for retries and backoff.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Feature 9: Analytics and quality measurement<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does:<\/strong> Tracks queries, clicks, and engagement signals (service-dependent).<\/li>\n<li><strong>Why it matters:<\/strong> You can\u2019t improve what you can\u2019t measure.<\/li>\n<li><strong>Practical benefit:<\/strong> Identify queries with poor click-through and improve content\/metadata.<\/li>\n<li><strong>Limitations\/caveats:<\/strong> Ensure analytics collection aligns with privacy policies.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Feature 10: Optional conversational or answer experiences<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does:<\/strong> Some enterprise search products can provide extractive answers (snippets) or generative summaries grounded in indexed sources.<\/li>\n<li><strong>Why it matters:<\/strong> Users increasingly expect direct answers, not just links.<\/li>\n<li><strong>Practical benefit:<\/strong> \u201cWhat is the on-call escalation policy?\u201d returns a cited excerpt from the policy.<\/li>\n<li><strong>Limitations\/caveats:<\/strong> Generative answers must be validated for correctness, citations, and security boundaries. Verify feature availability and configuration details in official docs.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">7. Architecture and How It Works<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">High-level architecture<\/h3>\n\n\n\n<p>An Enterprise Knowledge Graph solution in Google Cloud typically has:\n1. <strong>Source systems<\/strong>: documents, web pages, databases, SaaS tools\n2. <strong>Ingestion\/indexing<\/strong>: import pipelines into an enterprise search index\n3. <strong>Metadata &amp; entity layer<\/strong>: schema, attributes, and entity signals\n4. <strong>Serving<\/strong>: search apps\/APIs used by web portals, internal tools, or chatbots\n5. <strong>Security and governance<\/strong>: IAM, ACL mapping, audit logs\n6. <strong>Observability<\/strong>: logs, metrics, analytics, alerting<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Request\/data\/control flow<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Data flow (ingestion)<\/strong>:<\/li>\n<li>Content is imported from Cloud Storage\/web\/other sources into a managed index\/data store.<\/li>\n<li>During ingestion, metadata is extracted and\/or applied; entities and relationships may be inferred or provided.<\/li>\n<li><strong>Request flow (serving)<\/strong>:<\/li>\n<li>User\/app sends query to the search\/answer endpoint.<\/li>\n<li>The system interprets the query (intent\/entities), retrieves candidate documents, applies permission trimming, ranks results, and returns results\/answers.<\/li>\n<li><strong>Control flow (management)<\/strong>:<\/li>\n<li>Admins configure schemas, sources, relevance controls (synonyms, boosts), and access policies.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Integrations with related services<\/h3>\n\n\n\n<p>Common integrations in Google Cloud:\n&#8211; <strong>Cloud Storage<\/strong>: store raw documents for indexing and lifecycle control.\n&#8211; <strong>BigQuery<\/strong>: store structured reference data (owners, business metadata, document registry).\n&#8211; <strong>Dataplex \/ Data Catalog<\/strong>: governance metadata and discovery (adjacent pattern).\n&#8211; <strong>Identity (Cloud IAM \/ Workspace)<\/strong>: access control; service accounts for ingestion pipelines.\n&#8211; <strong>Cloud Logging \/ Monitoring<\/strong>: operational insights.\n&#8211; <strong>Pub\/Sub + Cloud Run\/Functions + Dataflow<\/strong>: automate ingestion updates and metadata enrichment.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Dependency services<\/h3>\n\n\n\n<p>Depends on implementation, but often includes:\n&#8211; Cloud Storage (for content)\n&#8211; Vertex AI Search and Conversation APIs (for managed search\/indexing)\n&#8211; IAM \/ Service Usage API (to enable services)\n&#8211; Logging\/Monitoring (for operations)<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Security\/authentication model<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Admin operations<\/strong>: typically require Google Cloud IAM roles (service-specific roles plus project permissions).<\/li>\n<li><strong>Query operations<\/strong>: may be authenticated via OAuth (user identity) or service account (server-to-server).<\/li>\n<li><strong>Permission trimming<\/strong>: requires correct mapping of repository ACLs to identity. How this is configured is product-specific\u2014verify in official docs.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Networking model<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Managed service endpoints are accessed over Google APIs.<\/li>\n<li>For private control requirements, evaluate:<\/li>\n<li>Private connectivity patterns supported by the underlying service<\/li>\n<li>VPC Service Controls support (if required) \u2014 verify service support in official docs<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Monitoring\/logging\/governance considerations<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Enable audit logs for admin actions where available.<\/li>\n<li>Capture query\/response telemetry carefully (avoid logging sensitive user input unless approved).<\/li>\n<li>Set up SLOs: search latency, indexing freshness, error rate, top query satisfaction (click-through).<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Simple architecture diagram (conceptual)<\/h3>\n\n\n\n<pre><code class=\"language-mermaid\">flowchart LR\n  U[User \/ App] --&gt; Q[Search Query API]\n  Q --&gt; S[Enterprise Knowledge Graph capability\\n(via Vertex AI Search \/ Cloud Search)]\n  S --&gt; I[Index \/ Data Store]\n  I &lt;--&gt;|Ingestion| CS[Cloud Storage \/ Websites \/ Repos]\n  S --&gt; R[Ranked Results \/ Answers]\n  R --&gt; U\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Production-style architecture diagram<\/h3>\n\n\n\n<pre><code class=\"language-mermaid\">flowchart TB\n  subgraph Sources[Enterprise Sources]\n    GCS[Cloud Storage Documents]\n    WEB[Intranet \/ Websites]\n    BQ[BigQuery Reference Tables\\n(owners, metadata)]\n    SAAS[SaaS Repositories\\n(connectors if supported)]\n  end\n\n  subgraph Ingest[Ingestion &amp; Enrichment]\n    PIPE[Cloud Run \/ Functions\\nIngestion Orchestrator]\n    PS[Pub\/Sub Change Topics]\n    DF[Dataflow \/ Batch Jobs\\nMetadata Enrichment]\n  end\n\n  subgraph Search[Serving Layer]\n    VAS[Vertex AI Search and Conversation\\n(Data Store + Search App)]\n    API[Search API Endpoint]\n  end\n\n  subgraph Security[Security &amp; Governance]\n    IAM[Cloud IAM \/ Identity]\n    KMS[Cloud KMS (if supported)\\nCMEK - verify]\n    LOG[Cloud Logging \/ Audit Logs]\n    MON[Cloud Monitoring \/ Alerts]\n  end\n\n  GCS --&gt; PIPE\n  WEB --&gt; PIPE\n  SAAS --&gt; PIPE\n  PIPE --&gt; PS\n  PS --&gt; DF\n  BQ --&gt; DF\n  DF --&gt; VAS\n  PIPE --&gt; VAS\n\n  U[Users \/ Internal Portal] --&gt; API --&gt; VAS\n  IAM --&gt; API\n  VAS --&gt; LOG\n  VAS --&gt; MON\n  KMS -. optional .-&gt; VAS\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">8. Prerequisites<\/h2>\n\n\n\n<p>Because Enterprise Knowledge Graph is commonly implemented through Vertex AI Search and Conversation or Google Cloud Search, prerequisites vary. This tutorial\u2019s lab uses <strong>Vertex AI Search and Conversation<\/strong>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Account\/project requirements<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>A <strong>Google Cloud project<\/strong> with <strong>Billing enabled<\/strong><\/li>\n<li>Permission to enable APIs and create resources<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Permissions \/ IAM roles<\/h3>\n\n\n\n<p>For a beginner lab, the simplest is Project Owner (not recommended for real environments).<\/p>\n\n\n\n<p>For least privilege in production, you typically need:\n&#8211; Permissions to enable services (<code>serviceusage.services.enable<\/code>)\n&#8211; Service-specific admin permissions for Vertex AI Search and Conversation \/ Discovery Engine<\/p>\n\n\n\n<blockquote>\n<p><strong>Verify in official docs:<\/strong> Exact IAM roles for Discovery Engine \/ Vertex AI Search and Conversation can change. Search for \u201cVertex AI Search and Conversation IAM roles\u201d in official docs and use predefined roles where possible.<\/p>\n<\/blockquote>\n\n\n\n<h3 class=\"wp-block-heading\">Billing requirements<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>A billing account attached to the project<\/li>\n<li>Expect charges for indexing and queries depending on product pricing<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">CLI\/SDK\/tools needed<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/cloud.google.com\/sdk\/docs\/install\">Google Cloud SDK (<code>gcloud<\/code>)<\/a><\/li>\n<li><code>curl<\/code> (for API testing)<\/li>\n<li>A text editor<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Region availability<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Vertex AI Search and Conversation uses specific supported locations, and some resources are created under a <code>global<\/code> location.<br\/>\n<strong>Verify supported locations<\/strong> in: https:\/\/cloud.google.com\/vertex-ai-search-and-conversation\/docs<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Quotas\/limits<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>API request quotas (QPS), document size limits, indexing limits, and concurrent operations.<\/li>\n<li>Check quotas for the underlying API in Google Cloud console (<strong>IAM &amp; Admin \u2192 Quotas<\/strong>) and official docs.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Prerequisite services<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Cloud Storage (for sample documents in this lab)<\/li>\n<li>Vertex AI Search and Conversation \/ Discovery Engine API (enabled in lab)<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">9. Pricing \/ Cost<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Pricing model (what to expect)<\/h3>\n\n\n\n<p>Because \u201cEnterprise Knowledge Graph\u201d is not usually a standalone SKU, pricing depends on the service delivering it:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Vertex AI Search and Conversation pricing<\/strong> (typical dimensions; verify):<\/li>\n<li>Number of <strong>queries\/requests<\/strong><\/li>\n<li><strong>Indexing<\/strong> \/ data ingestion volume<\/li>\n<li><strong>Storage<\/strong> for indexed content\/embeddings (service-defined)<\/li>\n<li>\n<p>Optional features (e.g., conversational answers) may have additional pricing dimensions<\/p>\n<\/li>\n<li>\n<p><strong>Google Cloud Search pricing<\/strong>:<\/p>\n<\/li>\n<li>Often tied to Google Workspace licensing or enterprise agreements (verify current packaging)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Official pricing sources<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Vertex AI Search and Conversation pricing:<br\/>\n  https:\/\/cloud.google.com\/vertex-ai-search-and-conversation\/pricing<\/li>\n<li>Google Cloud Pricing Calculator:<br\/>\n  https:\/\/cloud.google.com\/products\/calculator<\/li>\n<\/ul>\n\n\n\n<blockquote>\n<p>If your organization buys this capability under an enterprise agreement, the effective price may be contract-specific.<\/p>\n<\/blockquote>\n\n\n\n<h3 class=\"wp-block-heading\">Cost drivers<\/h3>\n\n\n\n<p>Direct drivers:\n&#8211; Number of indexed documents and their size\n&#8211; Frequency of re-indexing \/ updates\n&#8211; Query volume (users \u00d7 queries\/day)\n&#8211; Use of advanced answer generation features (if enabled)<\/p>\n\n\n\n<p>Indirect drivers:\n&#8211; <strong>Cloud Storage<\/strong> costs for source documents\n&#8211; Data processing costs if you run enrichment pipelines (Dataflow\/Cloud Run)\n&#8211; Logging volume (Cloud Logging ingestion\/retention)\n&#8211; Network egress if clients query from outside Google Cloud (usually minimal for text queries, but consider governance)<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Network\/data transfer implications<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Indexing from Cloud Storage within the same project generally avoids external egress, but cross-region designs and hybrid sources can add transfer considerations.<\/li>\n<li>User traffic from the internet to Google APIs is typical; for private connectivity requirements, validate supported networking patterns.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">How to optimize cost<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Start with a <strong>small curated corpus<\/strong> rather than indexing everything.<\/li>\n<li>Add <strong>high-value metadata<\/strong> early to reduce query churn and improve relevance.<\/li>\n<li>Use <strong>lifecycle policies<\/strong> on Cloud Storage; archive or delete outdated source docs when appropriate.<\/li>\n<li>Control logging verbosity; avoid logging full document contents.<\/li>\n<li>Implement <strong>freshness SLAs<\/strong> and batch updates rather than constant reindexing if your content changes in bursts.<\/li>\n<li>Monitor top queries and remove\/merge duplicates content.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Example low-cost starter estimate (conceptual)<\/h3>\n\n\n\n<p>A starter lab typically involves:\n&#8211; A small Cloud Storage bucket with a handful of documents\n&#8211; A small number of queries while testing<\/p>\n\n\n\n<p>Costs depend on current SKUs and may be small, but <strong>do not assume free<\/strong>. Always review:\n&#8211; Vertex AI Search and Conversation pricing SKUs\n&#8211; Cloud Storage storage class and retention\n&#8211; Logging retention<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Example production cost considerations<\/h3>\n\n\n\n<p>For production, estimate:\n&#8211; Total indexed corpus size (and growth rate)\n&#8211; Daily active users \u00d7 queries\/user\/day\n&#8211; Reindexing frequency (new docs, updates)\n&#8211; Required environments (dev\/test\/prod)\n&#8211; Optional features (analytics, conversational answers)<\/p>\n\n\n\n<p>Build a cost model around:\n&#8211; <strong>Cost per 1,000 queries<\/strong>\n&#8211; <strong>Cost per GB indexed \/ per month<\/strong> (if applicable)\n&#8211; Ingestion pipeline compute<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">10. Step-by-Step Hands-On Tutorial<\/h2>\n\n\n\n<p>This lab demonstrates a practical, low-risk way to implement an <strong>Enterprise Knowledge Graph-style enterprise search<\/strong> experience in Google Cloud using <strong>Vertex AI Search and Conversation<\/strong> over documents stored in <strong>Cloud Storage<\/strong>. While the service name \u201cEnterprise Knowledge Graph\u201d is often used as the conceptual layer, the executable implementation here uses the currently documented managed enterprise search service.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Objective<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Create a small searchable knowledge corpus (policies\/runbooks) in Cloud Storage<\/li>\n<li>Create a Vertex AI Search and Conversation <strong>data store<\/strong> and <strong>search app<\/strong><\/li>\n<li>Run a query via API and confirm results<\/li>\n<li>Understand core operational and security considerations<\/li>\n<li>Clean up everything to avoid ongoing cost<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Lab Overview<\/h3>\n\n\n\n<p>You will:\n1. Create a project configuration and Cloud Storage bucket\n2. Upload a few sample documents with clear metadata-like structure\n3. Create a Vertex AI Search and Conversation data store and import documents\n4. Create a search app\/engine and test in console\n5. Query the Search API using <code>curl<\/code> + OAuth token\n6. Validate results, troubleshoot common issues, and clean up<\/p>\n\n\n\n<blockquote>\n<p><strong>Note:<\/strong> UI labels and exact steps in the console can change. When in doubt, follow the latest official docs for \u201cCreate a data store\u201d and \u201cCreate a search app\u201d in Vertex AI Search and Conversation.<\/p>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Step 1: Set up your environment (project, APIs, variables)<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">1.1 Set project<\/h4>\n\n\n\n<pre><code class=\"language-bash\">gcloud config set project YOUR_PROJECT_ID\n<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">1.2 Enable required APIs<\/h4>\n\n\n\n<p>At minimum you typically need:\n&#8211; Vertex AI Search and Conversation \/ Discovery Engine API\n&#8211; Cloud Storage API<\/p>\n\n\n\n<p>Enable via <code>gcloud<\/code>:<\/p>\n\n\n\n<pre><code class=\"language-bash\">gcloud services enable \\\n  storage.googleapis.com \\\n  discoveryengine.googleapis.com\n<\/code><\/pre>\n\n\n\n<p><strong>Expected outcome:<\/strong> Commands return successfully with no errors.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">1.3 Confirm authentication<\/h4>\n\n\n\n<pre><code class=\"language-bash\">gcloud auth list\ngcloud auth application-default login\n<\/code><\/pre>\n\n\n\n<p><strong>Expected outcome:<\/strong> Your user is authenticated, and Application Default Credentials are available for tools that use ADC.<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Step 2: Create a Cloud Storage bucket and add sample documents<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">2.1 Choose a bucket name and location<\/h4>\n\n\n\n<p>Bucket names must be globally unique.<\/p>\n\n\n\n<pre><code class=\"language-bash\">export BUCKET_NAME=\"ekg-lab-$RANDOM-$RANDOM\"\nexport BUCKET_LOCATION=\"US\"   # choose based on your needs\ngsutil mb -l \"$BUCKET_LOCATION\" \"gs:\/\/$BUCKET_NAME\"\n<\/code><\/pre>\n\n\n\n<p><strong>Expected outcome:<\/strong> Bucket is created.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">2.2 Create sample documents locally<\/h4>\n\n\n\n<p>Create a folder and a few text\/markdown files. Keep them simple and clearly distinct.<\/p>\n\n\n\n<pre><code class=\"language-bash\">mkdir -p ekg_docs\n\ncat &gt; ekg_docs\/password-policy.txt &lt;&lt;'EOF'\nTitle: Password Policy\nOwner: Security Team\nLastUpdated: 2025-01-15\nAppliesTo: All employees\n\nPolicy:\n- Minimum length: 14 characters\n- Use a password manager\n- MFA is required for all corporate accounts\n\nRelated:\n- Access Control Standard\n- Incident Response Runbook\nEOF\n\ncat &gt; ekg_docs\/incident-response-runbook.txt &lt;&lt;'EOF'\nTitle: Incident Response Runbook\nOwner: SRE\nLastUpdated: 2025-02-10\nService: Payments API\n\nSteps:\n1. Confirm impact and severity.\n2. Check dashboards and logs.\n3. If auth errors spike, verify identity provider health.\n4. Communicate status in #incidents.\n5. Create postmortem within 5 business days.\n\nRelated:\n- Password Policy\n- On-call Escalation Policy\nEOF\n\ncat &gt; ekg_docs\/oncall-escalation-policy.txt &lt;&lt;'EOF'\nTitle: On-call Escalation Policy\nOwner: Operations\nLastUpdated: 2025-03-01\n\nSummary:\n- Primary on-call acknowledges within 5 minutes.\n- Escalate to secondary after 10 minutes.\n- Escalate to incident commander after 20 minutes.\n\nRelated:\n- Incident Response Runbook\nEOF\n<\/code><\/pre>\n\n\n\n<p><strong>Expected outcome:<\/strong> You have three local files in <code>ekg_docs\/<\/code>.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">2.3 Upload documents to Cloud Storage<\/h4>\n\n\n\n<pre><code class=\"language-bash\">gsutil -m cp ekg_docs\/* \"gs:\/\/$BUCKET_NAME\/\"\ngsutil ls \"gs:\/\/$BUCKET_NAME\/\"\n<\/code><\/pre>\n\n\n\n<p><strong>Expected outcome:<\/strong> You see three objects listed in the bucket.<\/p>\n\n\n\n<blockquote>\n<p><strong>If import fails later:<\/strong> Verify your chosen document format is supported for the specific data store type you select. If needed, convert to supported formats (often HTML\/PDF\/TXT\u2014verify in official docs).<\/p>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Step 3: Create a Vertex AI Search and Conversation data store<\/h3>\n\n\n\n<p>You can create data stores via the <strong>Google Cloud Console<\/strong> (simplest) or via API. For a beginner-friendly lab, use the console.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">3.1 Open the console<\/h4>\n\n\n\n<p>Go to:\nhttps:\/\/console.cloud.google.com\/<\/p>\n\n\n\n<p>Navigate to:\n&#8211; <strong>Vertex AI<\/strong>\n&#8211; Look for <strong>Search and Conversation<\/strong> (naming may vary slightly)<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">3.2 Create a data store<\/h4>\n\n\n\n<p>Typical flow (verify current UI wording):\n1. <strong>Create data store<\/strong>\n2. Choose a data store type appropriate for unstructured documents (e.g., \u201cUnstructured data\u201d)\n3. Choose the location (some resources use <code>global<\/code>; follow prompts)\n4. Choose <strong>Cloud Storage<\/strong> as the source\n5. Provide the bucket path:\n   &#8211; <code>gs:\/\/YOUR_BUCKET_NAME\/<\/code>\n6. Start import \/ indexing<\/p>\n\n\n\n<p><strong>Expected outcome:<\/strong> A data store is created and shows an indexing\/import status such as <em>Importing<\/em> or <em>Indexing<\/em>.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">3.3 Wait for indexing to complete<\/h4>\n\n\n\n<p>Indexing can take minutes depending on size.<\/p>\n\n\n\n<p><strong>Expected outcome:<\/strong> Status changes to something like <strong>Ready<\/strong>.<\/p>\n\n\n\n<blockquote>\n<p>If you don\u2019t see a \u201cReady\u201d state, check the import errors panel\/logs in the console.<\/p>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Step 4: Create a Search app (engine) and test in console<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">4.1 Create a search app<\/h4>\n\n\n\n<p>From Vertex AI Search and Conversation:\n1. Create a <strong>Search app<\/strong> (or \u201cEngine\/App\u201d depending on UI)\n2. Select the data store you created\n3. Choose the serving configuration defaults (or basic)\n4. Finish creation<\/p>\n\n\n\n<p><strong>Expected outcome:<\/strong> You have a search app with a test query UI.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">4.2 Run test queries in the console<\/h4>\n\n\n\n<p>Try queries like:\n&#8211; <code>password policy<\/code>\n&#8211; <code>escalate after 10 minutes<\/code>\n&#8211; <code>payments api runbook<\/code><\/p>\n\n\n\n<p><strong>Expected outcome:<\/strong> Results show the relevant documents.<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Step 5: Query the Search API using curl (programmatic verification)<\/h3>\n\n\n\n<p>This step confirms you can access the underlying API for integration into apps.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">5.1 Gather required identifiers<\/h4>\n\n\n\n<p>You will need:\n&#8211; <strong>Project ID<\/strong>\n&#8211; <strong>Location<\/strong> (often <code>global<\/code> for Discovery Engine resources\u2014verify in your data store details)\n&#8211; <strong>Data store ID<\/strong> (or engine\/app serving config)<\/p>\n\n\n\n<p>In the console, open your data store\/app details and copy the resource IDs.<\/p>\n\n\n\n<p>Set variables (replace placeholders):<\/p>\n\n\n\n<pre><code class=\"language-bash\">export PROJECT_ID=\"YOUR_PROJECT_ID\"\nexport LOCATION=\"global\"  # verify in console\nexport DATA_STORE_ID=\"YOUR_DATA_STORE_ID\"\n<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">5.2 Get an access token<\/h4>\n\n\n\n<pre><code class=\"language-bash\">ACCESS_TOKEN=\"$(gcloud auth print-access-token)\"\necho \"$ACCESS_TOKEN\" | head -c 20 &amp;&amp; echo\n<\/code><\/pre>\n\n\n\n<p><strong>Expected outcome:<\/strong> You see a token prefix.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">5.3 Call the Search endpoint<\/h4>\n\n\n\n<p>The Discovery Engine API uses endpoints under <code>discoveryengine.googleapis.com<\/code>. The exact method and resource path can differ based on whether you\u2019re querying an engine\/servingConfig or directly querying a data store.<\/p>\n\n\n\n<p>A commonly used pattern is calling a <strong>servingConfig<\/strong> search endpoint. If your console shows a serving config, use that. Otherwise, consult the official API reference.<\/p>\n\n\n\n<p>Example pattern (verify path in official docs):<\/p>\n\n\n\n<pre><code class=\"language-bash\">export COLLECTION=\"default_collection\"\nexport SERVING_CONFIG=\"default_search\"\n\ncurl -sS -X POST \\\n  \"https:\/\/discoveryengine.googleapis.com\/v1\/projects\/${PROJECT_ID}\/locations\/${LOCATION}\/collections\/${COLLECTION}\/dataStores\/${DATA_STORE_ID}\/servingConfigs\/${SERVING_CONFIG}:search\" \\\n  -H \"Authorization: Bearer ${ACCESS_TOKEN}\" \\\n  -H \"Content-Type: application\/json\" \\\n  -d '{\n    \"query\": \"What is the minimum password length?\",\n    \"pageSize\": 5\n  }' | sed -n '1,120p'\n<\/code><\/pre>\n\n\n\n<p><strong>Expected outcome:<\/strong> JSON response containing results (documents\/snippets). If the service supports extractive answers in your configuration, you may see snippet fields.<\/p>\n\n\n\n<blockquote>\n<p>If you get <code>PERMISSION_DENIED<\/code>, check IAM roles and that you\u2019re querying as a user allowed to access the app\/data store.<br\/>\nIf you get <code>NOT_FOUND<\/code>, re-check IDs and locations. These resource paths are strict.<\/p>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Validation<\/h3>\n\n\n\n<p>Use the checklist below:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Cloud Storage<\/strong> contains your documents:\n   <code>bash\n   gsutil ls \"gs:\/\/$BUCKET_NAME\/\"<\/code><\/li>\n<li>Data store status is <strong>Ready<\/strong> in the console.<\/li>\n<li>Console test search returns the expected document for:\n   &#8211; <code>password policy<\/code> \u2192 <code>password-policy.txt<\/code>\n   &#8211; <code>escalate after 10 minutes<\/code> \u2192 <code>oncall-escalation-policy.txt<\/code><\/li>\n<li>API call returns a JSON payload with at least one relevant result.<\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Troubleshooting<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">Issue: API returns <code>PERMISSION_DENIED<\/code><\/h4>\n\n\n\n<p>Common causes:\n&#8211; Your user lacks service-specific permissions for Discovery Engine \/ Vertex AI Search and Conversation.\n&#8211; You\u2019re using the wrong identity (token from a different account).\n&#8211; Org policies restrict API usage.<\/p>\n\n\n\n<p>Fixes:\n&#8211; Confirm your active account:\n  <code>bash\n  gcloud config list account<\/code>\n&#8211; Ask an admin to grant the correct role(s) for Vertex AI Search and Conversation (verify exact roles in official docs).\n&#8211; Try with a project-level Owner role in a sandbox project to isolate IAM issues (not for production).<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Issue: API returns <code>NOT_FOUND<\/code><\/h4>\n\n\n\n<p>Common causes:\n&#8211; Wrong <code>LOCATION<\/code> (e.g., using <code>us-central1<\/code> when the resource is <code>global<\/code>, or vice versa)\n&#8211; Wrong <code>DATA_STORE_ID<\/code> or serving config name<\/p>\n\n\n\n<p>Fixes:\n&#8211; Copy the full resource name from the console and reconstruct the URL carefully.\n&#8211; Verify <code>default_collection<\/code> exists for your resource type (many examples use it, but confirm in docs\/UI).<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Issue: Indexing never completes \/ documents not found<\/h4>\n\n\n\n<p>Common causes:\n&#8211; Unsupported file type or encoding\n&#8211; Import path points to the wrong bucket\/prefix\n&#8211; Service agent lacks access to the bucket (rare, but possible)<\/p>\n\n\n\n<p>Fixes:\n&#8211; Confirm objects are present under the exact prefix used for import.\n&#8211; Try a smaller set of documents.\n&#8211; Check import error messages in the console.\n&#8211; Ensure bucket permissions allow the managed service to read objects (follow official import setup guidance).<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Issue: Results are irrelevant<\/h4>\n\n\n\n<p>Common causes:\n&#8211; Tiny corpus leads to weak ranking signals\n&#8211; Missing metadata and consistent naming<\/p>\n\n\n\n<p>Fixes:\n&#8211; Add clearer titles, headings, and consistent terms.\n&#8211; Add more documents with distinct terms.\n&#8211; Introduce structured metadata if your data store supports it.<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Cleanup<\/h3>\n\n\n\n<p>To avoid ongoing cost, remove resources created in this lab.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Delete the Search app\/engine (console).<\/li>\n<li>Delete the data store (console).<\/li>\n<li>Delete Cloud Storage bucket:\n   <code>bash\n   gsutil -m rm -r \"gs:\/\/$BUCKET_NAME\"<\/code><\/li>\n<li>(Optional) Disable the API:\n   <code>bash\n   gcloud services disable discoveryengine.googleapis.com<\/code><\/li>\n<\/ol>\n\n\n\n<p><strong>Expected outcome:<\/strong> No remaining resources related to the lab.<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">11. Best Practices<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Architecture best practices<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Start with a curated corpus<\/strong>: index the \u201ctop 20% highest value\u201d knowledge first (policies, runbooks, product docs).<\/li>\n<li><strong>Separate environments<\/strong>: dev\/test\/prod in separate projects to reduce blast radius and simplify IAM.<\/li>\n<li><strong>Treat metadata as a product<\/strong>: define ownership for fields like <code>owner<\/code>, <code>department<\/code>, <code>doc_type<\/code>, <code>last_updated<\/code>.<\/li>\n<li><strong>Design for freshness<\/strong>: define SLAs for indexing (e.g., \u201cnew docs searchable within 2 hours\u201d).<\/li>\n<li><strong>Plan for change management<\/strong>: content owners should know how to update docs without breaking discovery.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">IAM\/security best practices<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Principle of least privilege<\/strong>: use predefined roles for admins and read-only roles for viewers.<\/li>\n<li><strong>Test permission trimming<\/strong> with real user groups and negative tests (users should <em>not<\/em> see restricted docs).<\/li>\n<li><strong>Use service accounts<\/strong> for ingestion automation (Cloud Run\/Functions\/Dataflow), not user credentials.<\/li>\n<li><strong>Rotate credentials<\/strong> and use Workload Identity where possible.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Cost best practices<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Avoid indexing everything<\/strong> by default; remove stale archives.<\/li>\n<li><strong>Monitor query volume<\/strong> and set alerts on unusual spikes.<\/li>\n<li><strong>Optimize logging<\/strong>: avoid verbose logs containing full queries if not required.<\/li>\n<li><strong>Batch updates<\/strong> when appropriate.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Performance best practices<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Keep metadata consistent to improve filtering and relevance.<\/li>\n<li>Use clear titles and headings in documents.<\/li>\n<li>Add synonyms and controlled vocabulary (where supported) for common internal abbreviations.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Reliability best practices<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Implement <strong>retriable ingestion<\/strong> with idempotent job design.<\/li>\n<li>Maintain a <strong>document registry<\/strong> (e.g., in BigQuery) with source URI, hash, last indexed timestamp.<\/li>\n<li>Have rollback plans for schema changes (e.g., duplicate data store for A\/B testing).<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Operations best practices<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Centralize dashboards for:<\/li>\n<li>indexing lag<\/li>\n<li>query errors<\/li>\n<li>request latency<\/li>\n<li>top failing queries<\/li>\n<li>Run periodic relevance reviews with stakeholders.<\/li>\n<li>Document operational ownership: who responds to indexing failures and relevance regressions.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Governance\/tagging\/naming best practices<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Use consistent naming:<\/li>\n<li><code>ekg-search-dev<\/code>, <code>ekg-search-prod<\/code><\/li>\n<li>bucket prefixes by domain (<code>policies\/<\/code>, <code>runbooks\/<\/code>)<\/li>\n<li>Label resources with:<\/li>\n<li><code>env<\/code>, <code>team<\/code>, <code>cost_center<\/code>, <code>data_classification<\/code><\/li>\n<li>Define a content lifecycle:<\/li>\n<li>draft \u2192 approved \u2192 deprecated \u2192 archived<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">12. Security Considerations<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Identity and access model<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Use <strong>Cloud IAM<\/strong> to control:<\/li>\n<li>who can administer data stores\/apps<\/li>\n<li>who can query APIs<\/li>\n<li>For enterprise repositories, ensure <strong>ACL mapping<\/strong> is correct so results are permission-trimmed.<\/li>\n<\/ul>\n\n\n\n<blockquote>\n<p><strong>Key security principle:<\/strong> Search is a data exfiltration surface. If a user can query it, they can potentially discover sensitive facts unless permission trimming and metadata controls are correct.<\/p>\n<\/blockquote>\n\n\n\n<h3 class=\"wp-block-heading\">Encryption<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Google Cloud services typically encrypt data at rest and in transit by default.<\/li>\n<li>If you require <strong>customer-managed encryption keys (CMEK)<\/strong>, verify whether the underlying service (Vertex AI Search and Conversation \/ Cloud Search) supports it for your resource types and locations:<\/li>\n<li>https:\/\/cloud.google.com\/vertex-ai-search-and-conversation\/docs (verify)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Network exposure<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>API endpoints are accessed over Google APIs.<\/li>\n<li>For strict environments:<\/li>\n<li>Evaluate private access patterns (Private Google Access, VPC-SC if supported)<\/li>\n<li>Restrict egress from clients and only allow required endpoints<\/li>\n<li>Use organization policies where appropriate<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Secrets handling<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Do not store tokens or credentials in code.<\/li>\n<li>Use <strong>Secret Manager<\/strong> for API keys (if used) and service account keys (prefer keyless).<\/li>\n<li>Prefer <strong>Workload Identity<\/strong> for workloads running on Google Cloud.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Audit\/logging<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Enable and retain audit logs for admin operations where available.<\/li>\n<li>Treat query logs as potentially sensitive (queries can contain PII or confidential project names).<\/li>\n<li>Redact or minimize logged fields; align with privacy policy.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Compliance considerations<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Data residency: confirm the data store location and where content is processed.<\/li>\n<li>Retention: define retention policy for source documents and any indexed representations.<\/li>\n<li>Access reviews: periodically review who can administer and query the system.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Common security mistakes<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Indexing sensitive content without permission trimming validation<\/li>\n<li>Letting broad groups query the index with no governance<\/li>\n<li>Logging full query strings and user identifiers without approvals<\/li>\n<li>Using a single shared service account for everything with overly broad permissions<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Secure deployment recommendations<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Use separate projects per environment and per domain if needed.<\/li>\n<li>Use groups for IAM bindings, not individuals.<\/li>\n<li>Create a formal onboarding process for new repositories\/content sources.<\/li>\n<li>Maintain a \u201csensitive content exclusion\u201d policy and automated checks.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">13. Limitations and Gotchas<\/h2>\n\n\n\n<p>Because Enterprise Knowledge Graph is often implemented through another product, limitations depend on the chosen service. Common gotchas include:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Not a standalone service:<\/strong> \u201cEnterprise Knowledge Graph\u201d may not appear as a separate Google Cloud product with its own API.<\/li>\n<li><strong>Location constraints:<\/strong> Some resource types use <code>global<\/code> or have limited regions (verify).<\/li>\n<li><strong>Connector limitations:<\/strong> Not all repositories are supported; some require custom ingestion.<\/li>\n<li><strong>Format constraints:<\/strong> Document parsing supports only certain formats; large files or unusual encodings may fail.<\/li>\n<li><strong>Indexing latency:<\/strong> Index freshness is not instantaneous; plan SLAs and user expectations.<\/li>\n<li><strong>ACL complexity:<\/strong> Mapping repository permissions to identity is often the hardest part operationally.<\/li>\n<li><strong>Schema evolution:<\/strong> Changing metadata\/schema can require reindexing or migration.<\/li>\n<li><strong>Cost surprises:<\/strong> High query volume and frequent reindexing can become the main cost drivers.<\/li>\n<li><strong>Observability gaps:<\/strong> Some managed services provide limited low-level tuning visibility; plan for black-box constraints.<\/li>\n<li><strong>Vendor-specific relevance behavior:<\/strong> ML ranking can change with product updates; regression testing matters.<\/li>\n<li><strong>Migration challenges:<\/strong> If you later change search providers, exporting indexes\/learned relevance may not be portable.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">14. Comparison with Alternatives<\/h2>\n\n\n\n<p>Enterprise Knowledge Graph needs can be met through managed enterprise search, dedicated graph databases, or self-managed search stacks.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Comparison table<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table>\n<thead>\n<tr>\n<th>Option<\/th>\n<th>Best For<\/th>\n<th>Strengths<\/th>\n<th>Weaknesses<\/th>\n<th>When to Choose<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><strong>Vertex AI Search and Conversation (Google Cloud)<\/strong><\/td>\n<td>Managed enterprise search \/ retrieval with AI capabilities<\/td>\n<td>Managed indexing + serving; integrates with Google Cloud; good for search-centric KG outcomes<\/td>\n<td>Less control than self-managed; service constraints; pricing tied to usage<\/td>\n<td>You want a managed path to enterprise retrieval and \u201cknowledge graph-like\u201d discovery<\/td>\n<\/tr>\n<tr>\n<td><strong>Google Cloud Search (Google Workspace)<\/strong><\/td>\n<td>Search across Workspace and connected repos<\/td>\n<td>Strong Workspace integration; enterprise search UX patterns<\/td>\n<td>Tied to Workspace\/admin model; customization limits<\/td>\n<td>You\u2019re primarily a Workspace shop and need enterprise search across Google Drive\/Gmail\/etc.<\/td>\n<\/tr>\n<tr>\n<td><strong>Self-managed graph DB (e.g., Neo4j on GCE\/GKE)<\/strong><\/td>\n<td>True graph modeling and algorithms<\/td>\n<td>Explicit relationships, graph queries, algorithms<\/td>\n<td>You must operate it; scaling and HA complexity; security\/integration effort<\/td>\n<td>You need graph traversal\/pathfinding and explicit relationship queries<\/td>\n<\/tr>\n<tr>\n<td><strong>Self-managed search (OpenSearch\/Elasticsearch)<\/strong><\/td>\n<td>Full control over indexing and retrieval<\/td>\n<td>Highly customizable; mature ecosystem<\/td>\n<td>Operational burden; relevance tuning complexity; permission trimming is hard<\/td>\n<td>You need deep control and can staff operations<\/td>\n<\/tr>\n<tr>\n<td><strong>AWS Neptune<\/strong><\/td>\n<td>Managed graph database in AWS<\/td>\n<td>Native graph DB; managed service<\/td>\n<td>Not Google Cloud; migration and multi-cloud complexity<\/td>\n<td>Your platform is AWS and graph queries are primary<\/td>\n<\/tr>\n<tr>\n<td><strong>Azure AI Search + Graph patterns<\/strong><\/td>\n<td>Enterprise search on Azure<\/td>\n<td>Azure-native integrations<\/td>\n<td>Not Google Cloud; feature differences<\/td>\n<td>Your platform is Azure and you want managed search there<\/td>\n<\/tr>\n<tr>\n<td><strong>RAG over BigQuery + custom embeddings<\/strong><\/td>\n<td>Tailored AI apps with structured context<\/td>\n<td>Full control; can integrate tightly with your domain data<\/td>\n<td>You must build retrieval, ranking, security trimming, evaluation<\/td>\n<td>You have strong ML\/data engineering teams and need bespoke behavior<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">15. Real-World Example<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Enterprise example: Global bank compliance knowledge discovery<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> Compliance teams need to quickly map internal policies to regulatory controls and locate evidence documents across multiple repositories. Auditors require proof that only authorized personnel accessed certain documents.<\/li>\n<li><strong>Proposed architecture:<\/strong><\/li>\n<li>Store approved policies and evidence artifacts in controlled Cloud Storage buckets (or connect existing repositories).<\/li>\n<li>Maintain a BigQuery table of metadata: control ID, policy owner, effective date, classification, and links to evidence.<\/li>\n<li>Use Vertex AI Search and Conversation to index content with metadata and enable permission-aware retrieval.<\/li>\n<li>Integrate search into an internal compliance portal with SSO and strict IAM.<\/li>\n<li>Centralize logs and audit trails in Cloud Logging with controlled retention.<\/li>\n<li><strong>Why this service was chosen:<\/strong> Managed enterprise retrieval reduces operational burden; entity\/metadata understanding improves relevance; permission trimming reduces leakage risk (when correctly configured).<\/li>\n<li><strong>Expected outcomes:<\/strong><\/li>\n<li>Reduced audit preparation time<\/li>\n<li>Faster evidence retrieval<\/li>\n<li>Stronger governance and access visibility<\/li>\n<li>Higher user trust in search results<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Startup\/small-team example: SaaS support knowledge base + on-call runbooks<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> A 30-person startup has docs in a wiki and runbooks in a repo; support and engineering constantly ask the same questions.<\/li>\n<li><strong>Proposed architecture:<\/strong><\/li>\n<li>Export key docs to Cloud Storage nightly (or ingest from the canonical repo).<\/li>\n<li>Use a single Vertex AI Search data store for the curated knowledge set.<\/li>\n<li>Embed search in the internal admin portal; optionally integrate results into a chat workflow.<\/li>\n<li>Track top queries and \u201cno result\u201d queries to guide doc improvements.<\/li>\n<li><strong>Why this service was chosen:<\/strong> Fast to implement, minimal ops, scales as the company grows.<\/li>\n<li><strong>Expected outcomes:<\/strong><\/li>\n<li>Faster incident response<\/li>\n<li>Lower support load on engineers<\/li>\n<li>Better onboarding experience<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">16. FAQ<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\n<p><strong>Is \u201cEnterprise Knowledge Graph\u201d a standalone Google Cloud product?<\/strong><br\/>\n   Often, no. It is commonly described as a capability behind Google\u2019s enterprise search\/AI offerings. For implementation, teams typically use Vertex AI Search and Conversation and\/or Google Cloud Search. Verify the current product landscape in official docs.<\/p>\n<\/li>\n<li>\n<p><strong>What\u2019s the difference between a knowledge graph and enterprise search?<\/strong><br\/>\n   A knowledge graph focuses on entities and relationships. Enterprise search focuses on retrieval and ranking. In practice, enterprise search can <em>use<\/em> knowledge graph techniques to improve results.<\/p>\n<\/li>\n<li>\n<p><strong>Do I need a graph database to build an Enterprise Knowledge Graph?<\/strong><br\/>\n   Not always. If your goal is enterprise retrieval and discovery, managed enterprise search may be sufficient. If you need explicit relationship queries and graph algorithms, a graph database may be better.<\/p>\n<\/li>\n<li>\n<p><strong>Can I use Cloud Storage as the source of truth?<\/strong><br\/>\n   Yes, for documents it\u2019s a common pattern. But you still need governance (naming, metadata, lifecycle, and permissions).<\/p>\n<\/li>\n<li>\n<p><strong>How do I ensure users can\u2019t see restricted documents in search?<\/strong><br\/>\n   Use permission trimming and validate with test users. Always run negative tests. The exact configuration depends on the underlying service and connector\/import method.<\/p>\n<\/li>\n<li>\n<p><strong>How do I model metadata like owner, department, and effective date?<\/strong><br\/>\n   Use the schema\/metadata features supported by your search\/indexing service, and\/or maintain a separate metadata registry (often in BigQuery) that feeds enrichment.<\/p>\n<\/li>\n<li>\n<p><strong>How do I keep the index fresh when documents change?<\/strong><br\/>\n   Use scheduled imports, incremental updates (if supported), or event-driven pipelines (Pub\/Sub + Cloud Run\/Functions). Define freshness SLAs.<\/p>\n<\/li>\n<li>\n<p><strong>Is this suitable for regulated workloads?<\/strong><br\/>\n   Potentially, but you must verify data residency, encryption, audit logging, and access control requirements for the specific service and location you choose.<\/p>\n<\/li>\n<li>\n<p><strong>How do I measure search quality?<\/strong><br\/>\n   Track top queries, click-through rate, \u201cno results\u201d queries, and time-to-click. Run periodic relevance evaluations with stakeholders.<\/p>\n<\/li>\n<li>\n<p><strong>What\u2019s the most common failure mode in production?<\/strong><br\/>\n   Incorrect or incomplete permission trimming and stale content. Both erode trust quickly.<\/p>\n<\/li>\n<li>\n<p><strong>Can I integrate this with an internal chatbot?<\/strong><br\/>\n   Yes\u2014commonly via a retrieval step that fetches relevant documents\/snippets for grounding. Ensure citations, access control, and answer validation.<\/p>\n<\/li>\n<li>\n<p><strong>Do I need to preprocess documents?<\/strong><br\/>\n   Often you get better results if documents have clear titles, headings, and consistent terminology. For complex content, enrichment can help.<\/p>\n<\/li>\n<li>\n<p><strong>What content should I exclude?<\/strong><br\/>\n   Highly sensitive data, secrets, and anything not intended for broad discovery unless you have strong access controls and a clear business requirement.<\/p>\n<\/li>\n<li>\n<p><strong>How do I handle multiple languages?<\/strong><br\/>\n   Verify language support for indexing and query understanding in official docs. Consider separate data stores or language metadata fields.<\/p>\n<\/li>\n<li>\n<p><strong>Can I migrate from another enterprise search platform?<\/strong><br\/>\n   Yes, but plan for reindexing, schema mapping, ACL mapping, and relevance regression testing. Learned relevance signals may not be portable.<\/p>\n<\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">17. Top Online Resources to Learn Enterprise Knowledge Graph<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table>\n<thead>\n<tr>\n<th>Resource Type<\/th>\n<th>Name<\/th>\n<th>Why It Is Useful<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Official documentation<\/td>\n<td>Vertex AI Search and Conversation docs \u2014 https:\/\/cloud.google.com\/vertex-ai-search-and-conversation\/docs<\/td>\n<td>Primary reference for building enterprise search experiences in Google Cloud<\/td>\n<\/tr>\n<tr>\n<td>Official pricing<\/td>\n<td>Vertex AI Search and Conversation pricing \u2014 https:\/\/cloud.google.com\/vertex-ai-search-and-conversation\/pricing<\/td>\n<td>Understand current SKUs and cost drivers<\/td>\n<\/tr>\n<tr>\n<td>Official API reference<\/td>\n<td>Discovery Engine API overview\/reference (Vertex AI Search) \u2014 https:\/\/cloud.google.com\/vertex-ai-search-and-conversation\/docs\/reference<\/td>\n<td>API paths, request\/response formats, auth<\/td>\n<\/tr>\n<tr>\n<td>Official console<\/td>\n<td>Google Cloud Console \u2014 https:\/\/console.cloud.google.com\/<\/td>\n<td>Create and manage data stores\/apps<\/td>\n<\/tr>\n<tr>\n<td>Official docs<\/td>\n<td>Cloud Storage docs \u2014 https:\/\/cloud.google.com\/storage\/docs<\/td>\n<td>Source repository basics, lifecycle, IAM patterns<\/td>\n<\/tr>\n<tr>\n<td>Official docs<\/td>\n<td>Cloud IAM docs \u2014 https:\/\/cloud.google.com\/iam\/docs<\/td>\n<td>Roles, service accounts, least privilege<\/td>\n<\/tr>\n<tr>\n<td>Official docs<\/td>\n<td>Cloud Logging docs \u2014 https:\/\/cloud.google.com\/logging\/docs<\/td>\n<td>Observability and auditing patterns<\/td>\n<\/tr>\n<tr>\n<td>Official documentation<\/td>\n<td>Google Cloud Search developer docs \u2014 https:\/\/developers.google.com\/cloud-search<\/td>\n<td>Workspace\/enterprise search option; connectors and indexing<\/td>\n<\/tr>\n<tr>\n<td>Pricing tool<\/td>\n<td>Google Cloud Pricing Calculator \u2014 https:\/\/cloud.google.com\/products\/calculator<\/td>\n<td>Build a deployment estimate<\/td>\n<\/tr>\n<tr>\n<td>Architecture guidance<\/td>\n<td>Google Cloud Architecture Center \u2014 https:\/\/cloud.google.com\/architecture<\/td>\n<td>Reference architectures and best practices (search for \u201csearch\u201d, \u201cRAG\u201d, \u201centerprise search\u201d)<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">18. Training and Certification Providers<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table>\n<thead>\n<tr>\n<th>Institute<\/th>\n<th>Suitable Audience<\/th>\n<th>Likely Learning Focus<\/th>\n<th>Mode<\/th>\n<th>Website URL<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>DevOpsSchool.com<\/td>\n<td>Engineers, DevOps\/SRE, platform teams<\/td>\n<td>Cloud\/DevOps fundamentals, CI\/CD, operations (verify course catalog)<\/td>\n<td>Check website<\/td>\n<td>https:\/\/www.devopsschool.com\/<\/td>\n<\/tr>\n<tr>\n<td>ScmGalaxy.com<\/td>\n<td>Developers, build\/release engineers<\/td>\n<td>SCM, DevOps tooling, automation (verify course catalog)<\/td>\n<td>Check website<\/td>\n<td>https:\/\/www.scmgalaxy.com\/<\/td>\n<\/tr>\n<tr>\n<td>CLoudOpsNow.in<\/td>\n<td>Cloud ops practitioners<\/td>\n<td>Cloud operations and practical implementation (verify course catalog)<\/td>\n<td>Check website<\/td>\n<td>https:\/\/www.cloudopsnow.in\/<\/td>\n<\/tr>\n<tr>\n<td>SreSchool.com<\/td>\n<td>SREs, operations, reliability engineers<\/td>\n<td>SRE practices, monitoring, incident management (verify course catalog)<\/td>\n<td>Check website<\/td>\n<td>https:\/\/www.sreschool.com\/<\/td>\n<\/tr>\n<tr>\n<td>AiOpsSchool.com<\/td>\n<td>Ops + data\/ML practitioners<\/td>\n<td>AIOps concepts, monitoring with ML, automation (verify course catalog)<\/td>\n<td>Check website<\/td>\n<td>https:\/\/www.aiopsschool.com\/<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">19. Top Trainers<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table>\n<thead>\n<tr>\n<th>Platform\/Site<\/th>\n<th>Likely Specialization<\/th>\n<th>Suitable Audience<\/th>\n<th>Website URL<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>RajeshKumar.xyz<\/td>\n<td>Cloud\/DevOps training content (verify offerings)<\/td>\n<td>Beginners to intermediate engineers<\/td>\n<td>https:\/\/rajeshkumar.xyz\/<\/td>\n<\/tr>\n<tr>\n<td>devopstrainer.in<\/td>\n<td>DevOps and cloud training (verify offerings)<\/td>\n<td>DevOps engineers, platform teams<\/td>\n<td>https:\/\/www.devopstrainer.in\/<\/td>\n<\/tr>\n<tr>\n<td>devopsfreelancer.com<\/td>\n<td>Freelance DevOps guidance\/services (treat as resource; verify)<\/td>\n<td>Teams seeking practical help and training<\/td>\n<td>https:\/\/www.devopsfreelancer.com\/<\/td>\n<\/tr>\n<tr>\n<td>devopssupport.in<\/td>\n<td>DevOps support\/training resources (verify)<\/td>\n<td>Operations and support teams<\/td>\n<td>https:\/\/www.devopssupport.in\/<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">20. Top Consulting Companies<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table>\n<thead>\n<tr>\n<th>Company<\/th>\n<th>Likely Service Area<\/th>\n<th>Where They May Help<\/th>\n<th>Consulting Use Case Examples<\/th>\n<th>Website URL<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>cotocus.com<\/td>\n<td>Cloud\/DevOps consulting (verify)<\/td>\n<td>Platform engineering, automation, operations<\/td>\n<td>Build ingestion pipelines, secure IAM patterns, operational monitoring for search workloads<\/td>\n<td>https:\/\/cotocus.com\/<\/td>\n<\/tr>\n<tr>\n<td>DevOpsSchool.com<\/td>\n<td>Training + consulting (verify)<\/td>\n<td>Cloud\/DevOps enablement, process and tooling<\/td>\n<td>Set up CI\/CD for ingestion code, observability, environment separation<\/td>\n<td>https:\/\/www.devopsschool.com\/<\/td>\n<\/tr>\n<tr>\n<td>DEVOPSCONSULTING.IN<\/td>\n<td>DevOps consulting (verify)<\/td>\n<td>DevOps practices, cloud operations<\/td>\n<td>Implement IaC, monitoring\/alerting, rollout strategies for enterprise search integrations<\/td>\n<td>https:\/\/www.devopsconsulting.in\/<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">21. Career and Learning Roadmap<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">What to learn before this service<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Google Cloud fundamentals: projects, billing, IAM, networking basics<\/li>\n<li>Cloud Storage basics: buckets, IAM policies, object lifecycle<\/li>\n<li>API fundamentals: OAuth tokens, service accounts, REST<\/li>\n<li>Search basics: indexing, ranking, relevance, facets<\/li>\n<li>Data governance basics: ownership, classification, retention<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">What to learn after this service<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Production RAG design (retrieval evaluation, grounding, citations, safety)<\/li>\n<li>Data engineering for enrichment: Dataflow, Pub\/Sub, Cloud Run<\/li>\n<li>Metadata governance: Dataplex, Data Catalog patterns<\/li>\n<li>Security hardening: org policies, audit strategies, least privilege, VPC-SC (where supported)<\/li>\n<li>Testing search quality: offline evaluation sets and regression testing<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Job roles that use it<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Cloud Solutions Architect<\/li>\n<li>Data Engineer \/ Analytics Engineer<\/li>\n<li>Platform Engineer \/ SRE (operating ingestion and reliability)<\/li>\n<li>Security Engineer (access control and audit)<\/li>\n<li>ML Engineer (retrieval + evaluation + grounding)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Certification path (if available)<\/h3>\n\n\n\n<p>There is not typically a dedicated \u201cEnterprise Knowledge Graph\u201d certification. Practical paths include:\n&#8211; Google Cloud Associate Cloud Engineer (foundation)\n&#8211; Professional Cloud Architect (architecture)\n&#8211; Professional Data Engineer (data pipelines and governance)\n&#8211; Vertex AI \/ ML learning paths (for retrieval + AI applications)<\/p>\n\n\n\n<p>(Verify the latest Google Cloud certification offerings: https:\/\/cloud.google.com\/learn\/certification)<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Project ideas for practice<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Build an internal runbook search portal with access control and query analytics<\/li>\n<li>Index product documentation + changelogs and build a \u201crelease impact\u201d search tool<\/li>\n<li>Create a policy-to-control mapping registry in BigQuery and enrich indexed docs with control IDs<\/li>\n<li>Implement event-driven reindexing for a doc repository with Pub\/Sub notifications<\/li>\n<li>Build evaluation datasets for top queries and run monthly relevance regression checks<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">22. Glossary<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Entity:<\/strong> A real-world \u201cthing\u201d like a person, service, product, policy, or customer.<\/li>\n<li><strong>Relationship:<\/strong> A link between entities (owns, depends-on, references, part-of).<\/li>\n<li><strong>Knowledge Graph:<\/strong> A graph representation of entities and relationships, often with attributes.<\/li>\n<li><strong>Indexing:<\/strong> Processing and storing content in a structure optimized for retrieval.<\/li>\n<li><strong>Facet:<\/strong> A filter category (e.g., department, doc type) derived from metadata.<\/li>\n<li><strong>Permission trimming:<\/strong> Restricting search results to only what the querying identity is allowed to access.<\/li>\n<li><strong>Data store (enterprise search):<\/strong> A managed container holding indexed content and configuration (term varies by product).<\/li>\n<li><strong>Serving configuration:<\/strong> A named configuration used by a query endpoint (e.g., default search settings).<\/li>\n<li><strong>Freshness SLA:<\/strong> A defined maximum delay between a source update and when it becomes searchable.<\/li>\n<li><strong>RAG (Retrieval-Augmented Generation):<\/strong> An AI pattern where relevant documents are retrieved and used to ground generated answers.<\/li>\n<li><strong>CMEK:<\/strong> Customer-managed encryption keys using Cloud KMS (support depends on service\/resource type).<\/li>\n<li><strong>ADC (Application Default Credentials):<\/strong> Google\u2019s standard method for applications to obtain credentials.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">23. Summary<\/h2>\n\n\n\n<p><strong>Enterprise Knowledge Graph<\/strong> in <strong>Google Cloud<\/strong> is best viewed as an <strong>AI and ML capability<\/strong> that organizes enterprise information into entities and relationships to improve discovery, relevance, and (when used) grounded answers\u2014while enforcing permissions. It is often delivered through services like <strong>Vertex AI Search and Conversation<\/strong> and <strong>Google Cloud Search<\/strong>, rather than as a standalone \u201cEnterprise Knowledge Graph\u201d product.<\/p>\n\n\n\n<p>Key takeaways:\n&#8211; Use it when you need <strong>permission-aware enterprise retrieval<\/strong> across messy, siloed knowledge.\n&#8211; The biggest success factors are <strong>metadata discipline<\/strong>, <strong>ACL correctness<\/strong>, and <strong>freshness operations<\/strong>.\n&#8211; Costs are driven by <strong>indexing volume and query volume<\/strong>\u2014model both early and monitor continuously.\n&#8211; Security must be designed up front because search can become a powerful data exfiltration channel if misconfigured.<\/p>\n\n\n\n<p><strong>Next learning step:<\/strong> Follow the official Vertex AI Search and Conversation documentation and extend the lab into a production pattern by adding metadata enrichment, permission trimming validation, and query quality evaluation.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>AI and ML<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[53,51],"tags":[],"class_list":["post-553","post","type-post","status-publish","format-standard","hentry","category-ai-and-ml","category-google-cloud"],"_links":{"self":[{"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/posts\/553","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/comments?post=553"}],"version-history":[{"count":0,"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/posts\/553\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/media?parent=553"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/categories?post=553"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/tags?post=553"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}