<?xml version="1.0" encoding="UTF-8" standalone="no"?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:media="http://search.yahoo.com/mrss/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" version="2.0">

<channel>
	<title>Microsoft Community at Perficient, Inc.</title>
	<atom:link href="https://blogs.perficient.com/feed/" rel="self" type="application/rss+xml"/>
	<link>https://blogs.perficient.com/</link>
	<description>Perficient is one of only 40 Microsoft National Systems Integrators. We are a national IT consulting firm serving the world's most successful and innovative companies.</description>
	<lastBuildDate>Wed, 02 Sep 2026 20:48:11 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1</generator>

<image>
	<url>https://blogs.perficient.com/wp-content/uploads/2026/03/cropped-Perficient-Favicon-512-150x150.png</url>
	<title>Perficient Blogs</title>
	<link>https://blogs.perficient.com/</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">30508587</site>	<item>
		<title>The Future of Salesforce Isn’t Just AI. It’s How AI Changes Delivery.</title>
		<link>https://blogs.perficient.com/the-future-of-salesforce-isnt-just-ai-its-how-ai-changes-delivery/</link>
		
		<dc:creator><![CDATA[Editorial Team]]></dc:creator>
		<pubDate>Wed, 02 Sep 2026 20:48:11 +0000</pubDate>
				<category><![CDATA[News and Events]]></category>
		<guid isPermaLink="false">https://blogs.perficient.com/?p=392346</guid>

					<description><![CDATA[<p>Every company at Dreamforce will be talking about AI. Agentforce. AI agents. Automation. Productivity.  The conversation has moved beyond whether AI has potential. Most organizations already understand the&#8230;</p>
<p>The post <a href="https://blogs.perficient.com/the-future-of-salesforce-isnt-just-ai-its-how-ai-changes-delivery/">The Future of Salesforce Isn’t Just AI. It’s How AI Changes Delivery.</a> appeared first on <a href="https://blogs.perficient.com">Perficient Blogs</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><span data-contrast="auto">Every company at Dreamforce will be talking about AI. Agentforce. AI agents. Automation. Productivity.</span><span data-ccp-props="{}"> </span></p>
<p><span data-contrast="auto">The conversation has moved beyond whether AI has potential. Most organizations already understand the opportunity. The real challenge is turning AI investments into measurable business outcomes.</span><span data-ccp-props="{}"> </span></p>
<p><span data-contrast="auto">That’s where many companies get stuck.</span><span data-ccp-props="{}"> </span></p>
<p><span data-contrast="auto">Not because they lack technology or ideas, but because the traditional delivery model can’t keep pace with the speed today&#8217;s business environment demands. </span><span data-ccp-props="{}"> </span></p>
<p><span data-contrast="auto">Too many Salesforce initiatives take longer than expected, cost more than planned, and delay value realization. AI may have changed what’s possible, but many organizations are still implementing Salesforce the same way they did five years ago.</span><span data-ccp-props="{}"> </span></p>
<p><span data-contrast="auto">At a time when executive teams are demanding faster ROI, that approach no longer works.</span><span data-ccp-props="{}"> </span></p>
<h2><span data-contrast="none">A Different Era of Salesforce Delivery </span><span data-ccp-props="{&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;335559738&quot;:360,&quot;335559739&quot;:80}"> </span></h2>
<p><span data-contrast="auto">At Perficient, we believe the biggest opportunity in AI isn’t simply building AI-powered experiences. It’s transforming how those experiences get delivered.</span><span data-ccp-props="{}"> </span></p>
<p><span data-contrast="auto">That’s why we’ve fundamentally reimagined our Salesforce delivery model around AI. </span><span data-ccp-props="{}"> </span></p>
<p><span data-contrast="auto">Rather than adding AI to existing processes, we’ve embedded agentic intelligence throughout the software development lifecycle, accelerating discovery, design, development, testing, and deployment.</span><span data-ccp-props="{}"> </span></p>
<p><span data-contrast="auto">The result isn’t incremental improvement but a fundamentally different way to delivery Salesforce transformation.</span><span data-ccp-props="{}"> </span></p>
<p><span data-contrast="auto">Organizations experience the difference from Day 1:</span><span data-ccp-props="{}"> </span></p>
<ul>
<li><b><span data-contrast="auto">Lower cost</span></b><span data-contrast="auto">, with predictable engagement models focused on outcomes rather than hours. In one recent engagement, our approach helped a technology client avoid more than $1M in anticipated services costs.</span><span data-ccp-props="{}"> </span></li>
<li><b><span data-contrast="auto">Faster time to value</span></b><span data-contrast="auto">, with delivery timelines accelerated by 30-50%.</span><span data-ccp-props="{}"> </span></li>
<li><b><span data-contrast="auto">Proven business impact</span></b><span data-contrast="auto">, accelerating everything from proposal development to implementation and helping clients realize value sooner.</span><span data-ccp-props="{}"> </span></li>
</ul>
<p><span data-contrast="auto">This is why Perficient has become the Salesforce partner organizations turn to when speed, cost, or complexity are on the table.</span><span data-ccp-props="{}"> </span></p>
<p><span data-contrast="auto">When executive expectations are high. When timelines are aggressive. When AI initiatives need to move beyond pilots and into production. When enterprise complexity threatens to slow progress.</span><span data-ccp-props="{}"> </span></p>
<p><span data-contrast="auto">We help organizations move from vision to value without compromising the governance, scalability, or sophistication required by global enterprises. </span><span data-ccp-props="{}"> </span></p>
<h2><span data-contrast="none">The Next Frontier: Accelerating Business Outcomes</span><span data-ccp-props="{&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;335559738&quot;:360,&quot;335559739&quot;:80}"> </span></h2>
<p><span data-contrast="auto">Technology alone doesn’t create competitive advantage. The ability to implement, scale, and operationalize it does.</span><span data-ccp-props="{}"> </span></p>
<p><span data-contrast="auto">Because we’ve transformed how Salesforce gets delivered, we’re able to help clients tackle some of their most important business priorities faster, whether that’s deploying production-ready Agentforce experiences, modernizing revenue operations, or activating customer data to power more personalized engagement across channels.</span><span data-ccp-props="{}"> </span></p>
<p><span data-contrast="auto">Our expertise spans the Salesforce platforms where organizations are making their biggest investments and expecting their biggest returns.</span><span data-ccp-props="{}"> </span></p>
<h2><span data-contrast="none">Building the Agentic Front Office</span><span data-ccp-props="{&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;335559738&quot;:360,&quot;335559739&quot;:80}"> </span></h2>
<p><span data-contrast="auto">One example of that vision is what we call the </span><a href="https://www.perficient.com/ai-first-solutions/ai/agentic-front-office"><span data-contrast="none">Agentic Front Office</span></a><span data-contrast="auto">. </span><span data-ccp-props="{}"> </span></p>
<p><span data-contrast="auto">We believe organizations are entering a new era where employees spend less time navigating systems and more time directing outcomes.</span><span data-ccp-props="{}"> </span></p>
<p><span data-contrast="auto">Instead of manually searching for information, triggering workflows, or coordinating across disconnected platforms, AI agents will orchestrate much of that work behind the scenes. Salesforce evolves from a system of record into an intelligence and orchestration layer that provides marketing, sales, and service interactions. </span><span data-ccp-props="{}"> </span></p>
<p><span data-contrast="auto">The result is a front office that can move faster, respond smarter, and create more personalized experiences throughout the customer lifecycle.</span><span data-ccp-props="{}"> </span></p>
<h2><span data-contrast="none">Headless 360: Reimagining the Experience Layer</span><span data-ccp-props="{&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;335559738&quot;:360,&quot;335559739&quot;:80}"> </span></h2>
<p><span data-contrast="auto">We’re also helping organizations rethink where those experiences live. </span><span data-ccp-props="{}"> </span></p>
<p><span data-contrast="auto">As a </span><b><span data-contrast="auto">Salesforce Headless 360 Launch Partner</span></b><span data-contrast="auto">, Perficient helps clients design customer experiences around users, workflows, and AI agents rather than traditional application boundaries. </span><span data-ccp-props="{}"> </span></p>
<p><span data-contrast="auto">The question is no longer, “What systems should users work in?” It’s become “What’s the fastest path to the right outcome?”</span><span data-ccp-props="{}"> </span></p>
<p><span data-contrast="auto">Whether that experience happens inside Salesforce, a custom application, or a digital channel, Salesforce serves as the data, workflow, and orchestration engine that powers it all.</span><span data-ccp-props="{}"> </span></p>
<h2><span data-contrast="none">See the Difference at Dreamforce</span><span data-ccp-props="{&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;335559738&quot;:360,&quot;335559739&quot;:80}"> </span></h2>
<p><span data-contrast="auto">This year, our Dreamforce story isn’t simply about AI. </span><span data-ccp-props="{}"> </span></p>
<p><span data-contrast="auto">It’s about what happens when AI transforms how Salesforce gets delivered and helping organizations move from idea to implementation faster, reducing the time between investment and value, and proving there’s a better way to build, scale, and optimize Salesforce in the age of AI.</span><span data-ccp-props="{}"> </span></p>
<p><span data-contrast="auto">If you’re looking for a partner that can help you accelerate outcomes, reduce complexity, and operationalize AI at enterprise scale, we’d love to show you what’s possible. Because the future isn’t just AI-powered experiences – the future is AI-powered delivery. And that future is already here. </span><span data-ccp-props="{}"> </span></p>
<p><a href="https://www2.perficient.com/dreamforce-2026"><span data-contrast="none">Connect with us at Dreamforce</span></a><span data-contrast="auto"> at one of our various events or speaking engagements:</span><span data-ccp-props="{}"> </span></p>
<ul>
<li><span data-contrast="auto"><strong>Executive Strategy Sessions &amp; Client Meetings</strong> | Available throughout Dreamforce </span><span data-ccp-props="{}"> </span></li>
<li><span data-contrast="auto"><strong>Welcome Reception</strong> | Monday, September 14</span><span data-ccp-props="{}"> </span></li>
<li><span data-contrast="auto"><strong>Agentforce Champions Breakfast Panel</strong> | Tuesday, September 15</span><span data-ccp-props="{}"> </span></li>
<li><span data-contrast="auto"><strong>TMT Happy Hour</strong> | Tuesday, September 15</span><span data-ccp-props="{}"> </span></li>
<li><span data-contrast="auto"><strong>Demo Open House</strong> | Wednesday, September 16</span><span data-ccp-props="{}"> </span></li>
<li><strong>TMT Commercial Pre-Dreamfest Happy Hour</strong> | Wednesday, September 16</li>
<li><span data-contrast="auto"><strong>Agentic Front Office From Pilot to Scale with Agentforce Session</strong> | Thursday, September 17</span><span data-ccp-props="{}"> </span></li>
</ul>
<p>The post <a href="https://blogs.perficient.com/the-future-of-salesforce-isnt-just-ai-its-how-ai-changes-delivery/">The Future of Salesforce Isn’t Just AI. It’s How AI Changes Delivery.</a> appeared first on <a href="https://blogs.perficient.com">Perficient Blogs</a>.</p>
]]></content:encoded>
					
		
		
			<media:content medium="image" url="https://blogs.perficient.com/wp-content/uploads/2026/09/Dreamforce-2025-1024x683.jpg"/>
<post-id xmlns="com-wordpress:feed-additions:1">392346</post-id>	</item>
		<item>
		<title>RAG on AWS Bedrock vs Oracle Cloud: Architecture, Trade-offs, and When to Choose Each</title>
		<link>https://blogs.perficient.com/rag-on-aws-bedrock-vs-oracle-cloud-architecture-trade-offs-and-when-to-choose-each/</link>
		
		<dc:creator><![CDATA[Venkata Sreeram Murthy Gonella]]></dc:creator>
		<pubDate>Tue, 01 Sep 2026 17:00:21 +0000</pubDate>
				<category><![CDATA[Technical Expertise]]></category>
		<guid isPermaLink="false">https://blogs.perficient.com/?p=392335</guid>

					<description><![CDATA[<p>Series: Enterprise GenAI &#38; RAG Architecture — Part 4 of 5  Two Very Different Approaches to Enterprise RAG In Part 3, we covered Azure —&#8230;</p>
<p>The post <a href="https://blogs.perficient.com/rag-on-aws-bedrock-vs-oracle-cloud-architecture-trade-offs-and-when-to-choose-each/">RAG on AWS Bedrock vs Oracle Cloud: Architecture, Trade-offs, and When to Choose Each</a> appeared first on <a href="https://blogs.perficient.com">Perficient Blogs</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><em><span class="TextRun SCXW192786497 BCX0" lang="EN-US" xml:lang="EN-US" data-contrast="none"><span class="NormalTextRun SCXW192786497 BCX0"><strong>Series</strong>: </span></span><span class="TextRun SCXW192786497 BCX0" lang="EN-US" xml:lang="EN-US" data-contrast="none"><span class="NormalTextRun SCXW192786497 BCX0">Enterprise GenAI &amp; RAG Architecture — Part 4 of 5</span></span><span class="EOP Selected SCXW192786497 BCX0" data-ccp-props="{&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559738&quot;:60,&quot;335559739&quot;:60}"> </span></em></p>
<h2><strong>Two Very Different Approaches to Enterprise RAG</strong></h2>
<p>In <a href="https://blogs.perficient.com/building-enterprise-rag-on-azure-gpt-4o-azure-ai-search-azure-devops-end-to-end/" target="_blank" rel="noopener">Part 3</a>, we covered Azure — the natural choice for Microsoft-heavy enterprises. Today we explore two more platforms: AWS Bedrock and Oracle Cloud Infrastructure (OCI). Each has a distinct architectural philosophy and a clear &#8216;best fit&#8217; use case.</p>
<p><strong>AWS Bedrock: </strong>Maximum flexibility. The broadest model catalog in the industry. Built for teams that want to experiment with multiple LLMs and use managed services to minimize operational overhead.</p>
<p><strong>OCI Vector Search: </strong>Maximum efficiency for Oracle customers. Native vector support directly in Oracle Database 23ai — no separate vector database needed. SQL-native vector queries from day one.</p>
<blockquote><p>Choosing a cloud for RAG is not about which is &#8216;best&#8217;. It is about which fits your existing infrastructure, team skills, and cost model.</p></blockquote>
<h2><strong>AWS Implementation — Amazon Bedrock + OpenSearch</strong></h2>
<h3><strong>AWS Services</strong></h3>
<table width="100%">
<thead>
<tr>
<td><strong>Requirement</strong></td>
<td><strong>AWS Service</strong></td>
<td><strong>Notes</strong></td>
</tr>
</thead>
<tbody>
<tr>
<td>LLM</td>
<td>Amazon Bedrock</td>
<td>Claude 3.5 Sonnet, Llama 3, Mistral, Titan — one API</td>
</tr>
<tr>
<td>Embeddings</td>
<td>Amazon Titan Embeddings V2</td>
<td>1024-dim vectors, native Bedrock integration</td>
</tr>
<tr>
<td>Vector Store</td>
<td>Amazon OpenSearch Service</td>
<td>k-NN plugin with HNSW algorithm</td>
</tr>
<tr>
<td>Storage</td>
<td>Amazon S3</td>
<td>Source documents, ingestion staging</td>
</tr>
<tr>
<td>Compute</td>
<td>AWS Lambda (Python)</td>
<td>Serverless, event-driven, auto-scaling</td>
</tr>
<tr>
<td>Orchestration</td>
<td>AWS Step Functions</td>
<td>Visual workflow: Extract → Chunk → Embed → Store</td>
</tr>
<tr>
<td>CI/CD</td>
<td>AWS CodePipeline + CodeBuild</td>
<td>Source → Build → Test → Deploy</td>
</tr>
<tr>
<td>Monitoring</td>
<td>Amazon CloudWatch</td>
<td>Logs, metrics, alarms, dashboards</td>
</tr>
<tr>
<td>Secrets</td>
<td>AWS Secrets Manager + IAM Roles</td>
<td>IAM-native, no credential management needed</td>
</tr>
</tbody>
</table>
<h3><strong>AWS Architecture Flow</strong></h3>
<ul>
<li>Documents in S3 trigger a Lambda function via S3 Event Notification</li>
<li>AWS Step Functions orchestrates the pipeline: Extract → Chunk → Embed → Store</li>
<li>Chunking Lambda uses LangChain RecursiveCharacterTextSplitter (512 tokens, 50-token overlap)</li>
<li>Amazon Bedrock Titan Embeddings V2 generates a 1024-dim vector per chunk</li>
<li>OpenSearch k-NN index stores chunk text + vector + metadata using HNSW algorithm</li>
<li>RAG app (Lambda + API Gateway): embed query → OpenSearch k-NN → build prompt → call Bedrock Claude → return answer</li>
<li>CloudWatch captures all logs, latency metrics, and fires alerts on anomalies</li>
</ul>
<h3><strong>AWS Bedrock — The Multi-Model Advantage</strong></h3>
<p>The biggest differentiator of AWS Bedrock is its model catalog. No other platform offers this breadth through a single unified API:</p>
<table width="100%">
<thead>
<tr>
<td><strong>Model Family</strong></td>
<td><strong>Provider</strong></td>
<td><strong>Best For</strong></td>
</tr>
</thead>
<tbody>
<tr>
<td>Claude 3.5 Sonnet / Haiku</td>
<td>Anthropic</td>
<td>Complex reasoning, long documents, coding</td>
</tr>
<tr>
<td>Llama 3.1 / 3.2</td>
<td>Meta (open source)</td>
<td>Cost-sensitive deployments, fine-tuning</td>
</tr>
<tr>
<td>Mistral Large / Small</td>
<td>Mistral AI</td>
<td>European data residency requirements</td>
</tr>
<tr>
<td>Amazon Titan Text</td>
<td>AWS</td>
<td>AWS-native, predictable pricing</td>
</tr>
<tr>
<td>Cohere Command</td>
<td>Cohere</td>
<td>Enterprise search, RAG-optimised</td>
</tr>
</tbody>
</table>
<blockquote><p>Bedrock lets you A/B test different LLMs with zero infrastructure changes. Switch Claude to Llama by changing one line — the API contract stays identical.</p></blockquote>
<h3><strong>Bedrock Knowledge Bases — Managed RAG</strong></h3>
<p>For teams that want to move fast, AWS Bedrock Knowledge Bases is the fastest path to production RAG:</p>
<ul>
<li>Point it at an S3 bucket — AWS handles chunking, embedding, and OpenSearch automatically</li>
<li>No infrastructure to manage — fully serverless, auto-scaling</li>
<li>Integrated with all Bedrock LLMs — one API call returns a grounded answer with citations</li>
<li>Trade-off: less control over chunking strategy, embedding model, and retrieval tuning</li>
</ul>
<p>Use the managed option for prototypes and internal tools. Use the custom Lambda + OpenSearch path for production systems where retrieval quality tuning is critical.</p>
<p><strong>AWS CodePipeline Testing</strong></p>
<table width="100%">
<thead>
<tr>
<td><strong>Stage</strong></td>
<td><strong>What Runs</strong></td>
<td><strong>Tools</strong></td>
</tr>
</thead>
<tbody>
<tr>
<td>Source</td>
<td>Fetch from Code Commit or GitHub on push</td>
<td>Git</td>
</tr>
<tr>
<td>Build</td>
<td>Install: pytest, ragas, deepeval, promptfoo, langsmith</td>
<td>CodeBuild</td>
</tr>
<tr>
<td>Unit Tests</td>
<td>Extractor functions, chunking logic, prompt templates</td>
<td>PyTest</td>
</tr>
<tr>
<td>RAGAS Evaluation</td>
<td>Precision ≥ 0.80, Faithfulness ≥ 0.85, Relevance ≥ 0.80</td>
<td>RAGAS</td>
</tr>
<tr>
<td>Bedrock Evaluation Jobs</td>
<td>AWS-native: accuracy, robustness, toxicity scoring</td>
<td>AWS Bedrock</td>
</tr>
<tr>
<td>LangSmith Tracing</td>
<td>Full chain trace, latency profile, error surfacing</td>
<td>LangSmith</td>
</tr>
<tr>
<td>Prompt Regression</td>
<td>Golden Q&amp;A dataset, compare to baseline</td>
<td>PromptFoo</td>
</tr>
<tr>
<td>Deploy</td>
<td>Canary: 10% traffic → monitor → full promotion</td>
<td>Lambda / ECS</td>
</tr>
</tbody>
</table>
<h3><strong>OCI Implementation — Oracle Database 23ai as Your Vector DB</strong></h3>
<p>Oracle Cloud Infrastructure takes a fundamentally different approach. Instead of adding a new vector database service alongside your existing infrastructure, OCI embeds vector capabilities directly into Oracle Database 23ai.</p>
<blockquote><p><strong>If your enterprise already runs Oracle ERP, Oracle databases, or Oracle Fusion middleware — you already have a production-grade vector database. You just need to enable it.</strong></p></blockquote>
<h3><strong>OCI Services</strong></h3>
<table width="100%">
<thead>
<tr>
<td><strong>Requirement</strong></td>
<td><strong>OCI Service</strong></td>
<td><strong>Notes</strong></td>
</tr>
</thead>
<tbody>
<tr>
<td>LLM</td>
<td>OCI Generative AI Service</td>
<td>Cohere Command R+, Llama 3 — hosted in OCI regions</td>
</tr>
<tr>
<td>Embeddings</td>
<td>OCI Embed Models (Cohere)</td>
<td>embed-english-v3.0, 1024 dimensions</td>
</tr>
<tr>
<td>Vector Database</td>
<td>Oracle DB 23ai — VECTOR data type</td>
<td>SQL-native — no separate service needed</td>
</tr>
<tr>
<td>Storage</td>
<td>OCI Object Storage</td>
<td>Source documents, ingestion staging</td>
</tr>
<tr>
<td>Compute</td>
<td>OCI Functions (Python)</td>
<td>Serverless, triggered by Object Storage events</td>
</tr>
<tr>
<td>CI/CD</td>
<td>OCI DevOps Pipelines</td>
<td>Code repos, build runners, deployment pipelines</td>
</tr>
<tr>
<td>Monitoring</td>
<td>OCI Logging &amp; Monitoring</td>
<td>Structured logs, metrics, anomaly detection</td>
</tr>
<tr>
<td>Secrets</td>
<td>OCI Vault</td>
<td>Keys, tokens, connection strings</td>
</tr>
</tbody>
</table>
<h3><strong>OCI Architecture Flow</strong></h3>
<ul>
<li>Documents uploaded to OCI Object Storage trigger an OCI Function via OCI Events Service</li>
<li>Function extracts text and sends to chunking logic (Python-based splitter)</li>
<li>OCI Generative AI Embed Models generate 1024-dim vector per chunk</li>
<li>Chunk text + vector stored directly in Oracle DB 23ai using the native VECTOR column type</li>
<li>RAG app: embed query → SQL VECTOR_DISTANCE() search → build prompt → call OCI GenAI → return answer</li>
</ul>
<h3><strong>OCI&#8217;s Killer Feature — SQL-Native Vector Search</strong></h3>
<p>This is what makes OCI genuinely unique. Vector search in Oracle DB 23ai is just a SQL query:</p>
<pre>SELECT chunk_text,

       VECTOR_DISTANCE(embedding, :query_vector, COSINE) AS similarity_score

FROM   documents_chunks

WHERE  category = 'HR'

ORDER  BY similarity_score

FETCH  FIRST 5 ROWS ONLY;

</pre>
<p>Notice the WHERE clause — you can combine traditional SQL filters with vector similarity in a single query. This enables hybrid filtering that other vector databases require complex workarounds to achieve.</p>
<table width="100%">
<thead>
<tr>
<td><strong>OCI Advantage</strong></td>
<td><strong>Business Impact</strong></td>
</tr>
</thead>
<tbody>
<tr>
<td>No separate vector DB service</td>
<td>Eliminates one entire service to provision, scale, and secure</td>
</tr>
<tr>
<td>SQL-native vector queries</td>
<td>Existing Oracle DBAs can manage and query the vector store immediately</td>
</tr>
<tr>
<td>Row-level security</td>
<td>Oracle&#8217;s mature security model applies to vector data automatically</td>
</tr>
<tr>
<td>Existing Oracle licenses</td>
<td>Vector search at no additional service cost for current Oracle customers</td>
</tr>
<tr>
<td>Unified monitoring</td>
<td>Vector DB metrics alongside all other database metrics in one place</td>
</tr>
</tbody>
</table>
<h3><strong>AWS vs OCI — Side-by-Side Comparison</strong></h3>
<table width="100%">
<thead>
<tr>
<td><strong>Factor</strong></td>
<td><strong>AWS Bedrock</strong></td>
<td><strong>OCI Vector Search</strong></td>
</tr>
</thead>
<tbody>
<tr>
<td>LLM Choice</td>
<td>Broadest catalog: Claude, Llama, Mistral, Titan, Cohere</td>
<td>Cohere Command, Llama 3</td>
</tr>
<tr>
<td>Vector DB</td>
<td>Amazon OpenSearch — dedicated service</td>
<td>Oracle DB 23ai — built into existing DB</td>
</tr>
<tr>
<td>Setup Speed</td>
<td>Bedrock Knowledge Bases = minutes for MVP</td>
<td>Moderate — requires Oracle DB 23ai setup</td>
</tr>
<tr>
<td>Operational Cost</td>
<td>OpenSearch cluster + Lambda costs</td>
<td>Included in Oracle DB license for existing customers</td>
</tr>
<tr>
<td>Query Language</td>
<td>OpenSearch DSL / Python SDK</td>
<td>Standard SQL with VECTOR_DISTANCE()</td>
</tr>
<tr>
<td>Best For</td>
<td>Multi-model experiments, greenfield projects</td>
<td>Oracle shops, ERP integration, existing Oracle DBAs</td>
</tr>
<tr>
<td>Managed RAG</td>
<td>Yes — Bedrock Knowledge Bases</td>
<td>Not fully managed yet</td>
</tr>
</tbody>
</table>
<p><strong><em><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/27a1.png" alt="➡" class="wp-smiley" style="height: 1em; max-height: 1em;" />  In Part 5 — the final post — we cover the full testing strategy for RAG systems: the 4-layer testing pyramid, RAGAS metrics, hallucination detection, and the complete GenAI CI/CD pipeline.</em></strong></p>
<p>The post <a href="https://blogs.perficient.com/rag-on-aws-bedrock-vs-oracle-cloud-architecture-trade-offs-and-when-to-choose-each/">RAG on AWS Bedrock vs Oracle Cloud: Architecture, Trade-offs, and When to Choose Each</a> appeared first on <a href="https://blogs.perficient.com">Perficient Blogs</a>.</p>
]]></content:encoded>
					
		
		
			<media:content medium="image" url="https://blogs.perficient.com/wp-content/uploads/2026/09/iStock-691171106-1-1-1024x771.jpg"/>
<post-id xmlns="com-wordpress:feed-additions:1">392335</post-id>	</item>
		<item>
		<title>Governed AI in Banking Starts with Defining What Agents Can Do</title>
		<link>https://blogs.perficient.com/governed-ai-in-banking-starts-with-defining-what-agents-can-do/</link>
		
		<dc:creator><![CDATA[Tracy Julian]]></dc:creator>
		<pubDate>Tue, 01 Sep 2026 15:44:03 +0000</pubDate>
				<category><![CDATA[Technical Expertise]]></category>
		<category><![CDATA[Agentforce]]></category>
		<category><![CDATA[MCP Servers]]></category>
		<category><![CDATA[salesforce]]></category>
		<guid isPermaLink="false">https://blogs.perficient.com/?p=392332</guid>

					<description><![CDATA[<p>Agentic AI Needs an Operating Model Before It Reaches Systems of Record  AI is moving into the systems where banking work happens. That shift creates&#8230;</p>
<p>The post <a href="https://blogs.perficient.com/governed-ai-in-banking-starts-with-defining-what-agents-can-do/">Governed AI in Banking Starts with Defining What Agents Can Do</a> appeared first on <a href="https://blogs.perficient.com">Perficient Blogs</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2><b><span data-contrast="none">Agentic AI Needs an Operating Model Before It Reaches Systems of Record</span></b><span data-ccp-props="{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;335557856&quot;:16777215,&quot;335559738&quot;:264,&quot;335559739&quot;:132}"> </span></h2>
<p><span data-contrast="none">AI is moving into the systems where banking work happens. That shift creates a new operating requirement for financial institutions: define what an AI agent can access, what it can do, and how every action will be governed.</span><span data-ccp-props="{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;335557856&quot;:16777215,&quot;335559738&quot;:158,&quot;335559739&quot;:240}"> </span></p>
<p><span data-contrast="none">Model Context Protocol, or MCP, is part of that shift. </span><a href="https://www.anthropic.com/news/model-context-protocol"><span data-contrast="none">Anthropic</span></a><span data-contrast="none"> introduced MCP in November 2024 as an open standard for connecting AI assistants to systems where data lives, including business tools, development environments, and content repositories. Its purpose is to replace fragmented custom integrations with a consistent protocol for connecting AI systems to data sources and tools.</span><span data-ccp-props="{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;335557856&quot;:16777215,&quot;335559738&quot;:158,&quot;335559739&quot;:240}"> </span></p>
<p><span data-contrast="none">For financial services, governed AI in banking cannot stop at drafts, summaries, and recommendations. AI needs a secure way to retrieve customer context, interact with workflows, and operate inside systems of record. MCP can serve as a standardized execution layer that allows AI agents to retrieve context, invoke actions, and execute workflows within established policies and audit trails.</span></p>
<p>Before execution scales, banks need to define control.</p>
<h2><b><span data-contrast="none">Governed AI in Banking Starts with Execution Boundaries</span></b><span data-ccp-props="{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;335557856&quot;:16777215,&quot;335559738&quot;:264,&quot;335559739&quot;:132}"> </span></h2>
<p><span data-contrast="none">A banking agent may need account context for a service interaction. That does not mean it should update customer data, initiate a loan workflow, trigger a fraud review, or close a complaint. Each action has a different risk profile.</span><span data-ccp-props="{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;335557856&quot;:16777215,&quot;335559738&quot;:158,&quot;335559739&quot;:240}"> </span></p>
<p><span data-contrast="none">Before an AI agent acts inside a system of record, a bank should define six boundaries:</span><span data-ccp-props="{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;335557856&quot;:16777215,&quot;335559738&quot;:158,&quot;335559739&quot;:240}"> </span></p>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}" data-aria-posinset="1" data-aria-level="1"><b><span data-contrast="none">Data access:</span></b><span data-contrast="none"> What customer, account, transaction, case, or relationship data can the agent retrieve?</span><span data-ccp-props="{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;335557856&quot;:16777215,&quot;335559738&quot;:53,&quot;335559739&quot;:53}"> </span></li>
</ul>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}" data-aria-posinset="2" data-aria-level="1"><b><span data-contrast="none">Workflow rights:</span></b><span data-contrast="none"> What approved processes can the agent invoke?</span><span data-ccp-props="{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;335557856&quot;:16777215,&quot;335559738&quot;:53,&quot;335559739&quot;:53}"> </span></li>
</ul>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}" data-aria-posinset="3" data-aria-level="1"><b><span data-contrast="none">Human approval:</span></b><span data-contrast="none"> What actions require review before execution?</span><span data-ccp-props="{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;335557856&quot;:16777215,&quot;335559738&quot;:53,&quot;335559739&quot;:53}"> </span></li>
</ul>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}" data-aria-posinset="4" data-aria-level="1"><b><span data-contrast="none">Decision limits:</span></b><span data-contrast="none"> What tasks remain advisory because they involve credit, compliance, fraud, or customer harm risk?</span><span data-ccp-props="{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;335557856&quot;:16777215,&quot;335559738&quot;:53,&quot;335559739&quot;:53}"> </span></li>
</ul>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}" data-aria-posinset="5" data-aria-level="1"><b><span data-contrast="none">Exception handling:</span></b><span data-contrast="none"> What happens when data is incomplete, conflicting, stale, or high-risk?</span><span data-ccp-props="{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;335557856&quot;:16777215,&quot;335559738&quot;:53,&quot;335559739&quot;:53}"> </span></li>
</ul>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}" data-aria-posinset="6" data-aria-level="1"><b><span data-contrast="none">Evidence capture:</span></b><span data-contrast="none"> What gets logged for audit, compliance, model governance, and operational review?</span></li>
</ul>
<p><span data-contrast="none">These boundaries define the operating model for governed AI in banking. MCP can standardize how agents connect to enterprise capabilities, but the institution must decide what those agents are authorized to do.</span><span data-ccp-props="{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;335557856&quot;:16777215,&quot;335559738&quot;:158,&quot;335559739&quot;:240}"> </span></p>
<h2><b><span data-contrast="none">Where Execution Boundaries Become Enforceable</span></b><span data-ccp-props="{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335557856&quot;:16777215,&quot;335559685&quot;:0,&quot;335559737&quot;:0,&quot;335559738&quot;:264,&quot;335559739&quot;:132,&quot;335559740&quot;:279}"> </span></h2>
<p><span data-contrast="none">Execution boundaries only matter if they can be enforced inside daily workflows. For banks using Salesforce, the platform can serve as part of the control plane for agentic banking work, connecting identity, permissions, customer context, workflow logic, action history, and human review.</span></p>
<p>Salesforce can serve as an API-first foundation for modern banking delivery, providing a secure, auditable execution layer built for governance, guardrails, and human oversight.</p>
<p><span data-contrast="none">MCP extends that foundation by standardizing how agents connect to approved tools and resources. With </span><a href="https://trailhead.salesforce.com/content/learn/modules/mcp-for-agentforce-quick-look/discover-mcp-for-agentforce"><span data-contrast="none">Agentforce</span></a><span data-contrast="none">, organizations can register and manage MCP servers so agents can securely access approved tools and data. For banks, the server boundary is the control point: the agent should only see the capabilities its role is permitted to use.</span><span data-ccp-props="{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;335557856&quot;:16777215,&quot;335559738&quot;:158,&quot;335559739&quot;:240}"> </span></p>
<h2><b><span data-contrast="none">Governed MCP Requires Production-Level Discipline</span></b><span data-ccp-props="{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335557856&quot;:16777215,&quot;335559685&quot;:0,&quot;335559737&quot;:0,&quot;335559738&quot;:264,&quot;335559739&quot;:132,&quot;335559740&quot;:279}"> </span></h2>
<p><span data-contrast="none">Once execution boundaries are defined, banks need to translate them into controls that work inside daily operations.</span><span data-ccp-props="{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;335557856&quot;:16777215,&quot;335559738&quot;:158,&quot;335559739&quot;:240}"> </span></p>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="2" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}" data-aria-posinset="1" data-aria-level="1"><b><span data-contrast="none">Make agent identity explicit.</span></b><span data-contrast="none"> Define whether the agent acts for a service representative, advisor, operations team, compliance function, or automated process. Do not let it operate as a generic system user.</span><span data-ccp-props="{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;335557856&quot;:16777215,&quot;335559738&quot;:158,&quot;335559739&quot;:240}"> </span></li>
</ul>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="2" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}" data-aria-posinset="2" data-aria-level="1"><b><span data-contrast="auto">Scope permissions to the workflow.</span></b><span data-contrast="auto"> A servicing agent may retrieve account context. A lending agent may prepare a document checklist. A compliance agent may flag missing evidence. Each agent should access only what its role requires.</span><span data-ccp-props="{}"> </span></li>
</ul>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="2" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}" data-aria-posinset="3" data-aria-level="1"><b><span data-contrast="auto">Set enforceable decision thresholds. </span></b><span data-contrast="auto">Credit decisioning, fraud escalation, KYC and AML screening, complaint handling, and exception processing need clear stop points. Some actions can run automatically. Others should route to a person.</span><span data-ccp-props="{}"> </span></li>
</ul>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="2" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}" data-aria-posinset="4" data-aria-level="1"><b><span data-contrast="auto">Capture evidence during execution. </span></b><span data-contrast="auto">MCP-connected AI can generate change logs or audit trail entries as part of the action, reducing the need to reconstruct documentation later.</span><span data-ccp-props="{}"> </span></li>
</ul>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="2" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}" data-aria-posinset="5" data-aria-level="1"><b><span data-contrast="auto">Monitor after launch.</span></b><span data-contrast="auto"> Banks need visibility into agent performance, failures, overrides, and exception patterns so governance improves with real operating data.</span><span data-ccp-props="{}"> </span></li>
</ul>
<h2><b><span data-contrast="none">Regulatory Expectations Make Evidence Central</span></b><span data-ccp-props="{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335557856&quot;:16777215,&quot;335559685&quot;:0,&quot;335559737&quot;:0,&quot;335559738&quot;:264,&quot;335559739&quot;:132,&quot;335559740&quot;:279}"> </span></h2>
<p><span data-contrast="none">Financial institutions remain accountable for AI-enabled decisions and workflows. The </span><a href="https://www.consumerfinance.gov/compliance/circulars/circular-2022-03-adverse-action-notification-requirements-in-connection-with-credit-decisions-based-on-complex-algorithms/"><span data-contrast="none">Consumer Financial Protection Bureau</span></a><span data-contrast="none"> (CFPB) has stated that creditors using complex algorithms, including AI-driven credit models, must provide specific and accurate reasons for adverse action. Vague explanations that obscure the actual basis for a decision do not meet that standard. </span><span data-ccp-props="{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;335557856&quot;:16777215,&quot;335559738&quot;:158,&quot;335559739&quot;:240}"> </span></p>
<p><span data-contrast="none">In April 2026, the </span><a href="https://www.federalreserve.gov/supervisionreg/srletters/SR2602.htm"><span data-contrast="none">Federal Reserve, Office of the Comptroller of the Currency (OCC), and Federal Deposit Insurance Corporation (FDIC)</span></a><span data-contrast="none"> issued revised model risk management guidance that replaced SR 11-7 and emphasized risk-based governance, validation, monitoring, controls, and third-party considerations. The guidance notes that generative and agentic AI are still evolving, and it is expected to be most relevant to banking organizations with more than </span><a href="https://www.fdic.gov/news/financial-institution-letters/2026/agencies-revise-interagency-model-risk-management-guidance"><span data-contrast="none">$30 billion in total assets</span></a><span data-contrast="none">.</span><span data-ccp-props="{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;335557856&quot;:16777215,&quot;335559738&quot;:158,&quot;335559739&quot;:240}"> </span></p>
<p><b><span data-contrast="none">For banks, the regulatory signal points back to the same operating requirement: </span></b><span data-ccp-props="{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;335557856&quot;:16777215,&quot;335559738&quot;:158,&quot;335559739&quot;:240}"> </span></p>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="4" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}" data-aria-posinset="1" data-aria-level="1"><span data-contrast="none">Agentic AI in banking must be explainable, constrained, monitored, and auditable.</span><span data-ccp-props="{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335557856&quot;:16777215,&quot;335559737&quot;:0,&quot;335559738&quot;:158,&quot;335559739&quot;:240,&quot;335559740&quot;:279}"> </span></li>
</ul>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="4" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}" data-aria-posinset="2" data-aria-level="1"><span data-contrast="none">MCP creates a cleaner connection layer between AI and enterprise systems.</span><span data-ccp-props="{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335557856&quot;:16777215,&quot;335559737&quot;:0,&quot;335559738&quot;:158,&quot;335559739&quot;:240,&quot;335559740&quot;:279}"> </span></li>
</ul>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="4" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}" data-aria-posinset="3" data-aria-level="1"><span data-contrast="none">Salesforce provides the governed foundation for access, workflow, identity, and action history.</span><span data-ccp-props="{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335557856&quot;:16777215,&quot;335559737&quot;:0,&quot;335559738&quot;:158,&quot;335559739&quot;:240,&quot;335559740&quot;:279}"> </span></li>
</ul>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="4" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}" data-aria-posinset="4" data-aria-level="1"><span data-contrast="none">AI-First Engineering brings the delivery discipline to connect architecture, integration, testing, security, compliance, and adoption.</span><span data-ccp-props="{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335557856&quot;:16777215,&quot;335559737&quot;:0,&quot;335559738&quot;:158,&quot;335559739&quot;:240,&quot;335559740&quot;:279}"> </span></li>
</ul>
<p><span data-contrast="none">The institutions that get value from MCP will define safe execution before they scale governed AI in banking.</span></p>
<p>The post <a href="https://blogs.perficient.com/governed-ai-in-banking-starts-with-defining-what-agents-can-do/">Governed AI in Banking Starts with Defining What Agents Can Do</a> appeared first on <a href="https://blogs.perficient.com">Perficient Blogs</a>.</p>
]]></content:encoded>
					
		
		
			<media:content medium="image" url="https://blogs.perficient.com/wp-content/uploads/2026/08/Three-Colleagues-Working-on-Laptops-for-Governed-AI-in-Banking-1024x683.jpg"/>
<post-id xmlns="com-wordpress:feed-additions:1">392332</post-id>	</item>
		<item>
		<title>MCP Productivity in Banking Comes from Less Rework</title>
		<link>https://blogs.perficient.com/mcp-productivity-in-banking-comes-from-less-rework/</link>
		
		<dc:creator><![CDATA[Tracy Julian]]></dc:creator>
		<pubDate>Tue, 01 Sep 2026 15:43:47 +0000</pubDate>
				<category><![CDATA[Technical Expertise]]></category>
		<category><![CDATA[Agentforce]]></category>
		<category><![CDATA[MCP Servers]]></category>
		<category><![CDATA[salesforce]]></category>
		<guid isPermaLink="false">https://blogs.perficient.com/?p=392328</guid>

					<description><![CDATA[<p>Delivery Friction Turns Evidence Gaps Into Rework  AI productivity claims usually focus on speed: faster documentation, summaries, planning, and releases. In banking, speed only creates&#8230;</p>
<p>The post <a href="https://blogs.perficient.com/mcp-productivity-in-banking-comes-from-less-rework/">MCP Productivity in Banking Comes from Less Rework</a> appeared first on <a href="https://blogs.perficient.com">Perficient Blogs</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2><b><span data-contrast="auto">Delivery Friction Turns Evidence Gaps Into Rework</span></b><span data-ccp-props="{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;201341983&quot;:0,&quot;335559738&quot;:261,&quot;335559739&quot;:261,&quot;335559740&quot;:240}"> </span></h2>
<p><span data-contrast="auto">AI productivity claims usually focus on speed: faster documentation, summaries, planning, and releases. In banking, speed only creates value when the work still meets the standards of risk, compliance, security, operations, and audit.</span><span data-ccp-props="{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;201341983&quot;:0,&quot;335559738&quot;:210,&quot;335559739&quot;:210,&quot;335559740&quot;:240}"> </span></p>
<p><span data-contrast="auto">The real friction often starts as work moves from one team to the next:</span><span data-ccp-props="{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;201341983&quot;:0,&quot;335559738&quot;:210,&quot;335559739&quot;:210,&quot;335559740&quot;:240}"> </span></p>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="24" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}" data-aria-posinset="1" data-aria-level="1"><span data-contrast="auto">A developer closes a story, but release notes still need to be assembled from tickets, commits, and change records.</span><span data-ccp-props="{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;201341983&quot;:0,&quot;335559738&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}"> </span></li>
</ul>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="24" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}" data-aria-posinset="2" data-aria-level="1"><span data-contrast="auto">QA completes testing, but evidence still needs to be formatted for compliance review.</span><span data-ccp-props="{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;201341983&quot;:0,&quot;335559738&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}"> </span></li>
</ul>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="24" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}" data-aria-posinset="3" data-aria-level="1"><span data-contrast="auto">A product owner prepares for sprint planning, but prior sprint data must be rebuilt from status updates and carryover work.</span><span data-ccp-props="{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;201341983&quot;:0,&quot;335559738&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}"> </span></li>
</ul>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="24" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}" data-aria-posinset="4" data-aria-level="1"><span data-contrast="auto">A release is technically ready, but risk, security, operations, and business teams still need a complete record of what changed.</span><span data-ccp-props="{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;201341983&quot;:0,&quot;335559738&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}"> </span></li>
</ul>
<p><span data-contrast="auto">Those handoffs create room for error. A release note may not match the actual change. A compliance reviewer may ask for missing test results. A deployment may wait while teams track down an approval, dependency, or change record. What begins as missing context becomes rework.</span><span data-ccp-props="{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;201341983&quot;:0,&quot;335559738&quot;:210,&quot;335559739&quot;:210,&quot;335559740&quot;:240}"> </span></p>
<p><span data-contrast="auto">This is not administrative waste. In regulated delivery, coordination is part of the control environment. The problem is how much manual effort it takes to keep that environment moving. Many financial institutions face the same pattern: duplicated logic across channels, manual status tracking, and developers spending time integrating systems instead of building value.</span></p>
<h2><b><span data-contrast="auto">How MCP Productivity in Banking Reduces Rework</span></b><span data-ccp-props="{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559685&quot;:0,&quot;335559737&quot;:0,&quot;335559738&quot;:261,&quot;335559739&quot;:261,&quot;335559740&quot;:240}"> </span></h2>
<p><span data-contrast="auto">Model Context Protocol, or MCP, gives AI assistants a standard way to connect to enterprise systems and data sources. For banking delivery teams, the value is practical: AI can work from live, permissioned context instead of disconnected prompts, stale exports, or manually assembled status reports.</span><span data-ccp-props="{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;201341983&quot;:0,&quot;335559738&quot;:210,&quot;335559739&quot;:210,&quot;335559740&quot;:240}"> </span></p>
<p><span data-contrast="auto">That is where MCP productivity in banking starts to create value: by reducing delivery friction, giving AI agents standardized access to enterprise context, and invoking approved capabilities through governed systems. In a Salesforce environment, that context can include delivery activity, customer data, </span><span data-contrast="auto">workflow history, approvals, and related records.</span><span data-ccp-props="{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559685&quot;:0,&quot;335559737&quot;:0,&quot;335559738&quot;:210,&quot;335559739&quot;:210,&quot;335559740&quot;:240}"> </span></p>
<p><span data-contrast="auto">Salesforce can serve as the system of action where delivery context, customer data, and workflow activity and approval history are governed. Agentforce extends that foundation with an MCP client, allowing organizations to register and manage MCP servers so agents can access approved tools and data through a managed experience. </span><span data-ccp-props="{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559685&quot;:0,&quot;335559737&quot;:0,&quot;335559738&quot;:210,&quot;335559739&quot;:210,&quot;335559740&quot;:240}"> </span></p>
<p><span data-contrast="auto">The result is a cleaner evidence flow. Delivery artifacts can be generated from governed workflow data instead of rebuilt from scattered updates after the fact. An MCP-connected agent can pull from approved sources, apply a consistent structure, flag missing evidence, and route the output for review.</span><span data-ccp-props="{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559685&quot;:0,&quot;335559737&quot;:0,&quot;335559738&quot;:210,&quot;335559739&quot;:210,&quot;335559740&quot;:240}"> </span></p>
<p><span data-contrast="auto">A human still owns the final artifact. The difference is that teams spend less time searching, reconciling, and rebuilding context before the next handoff can happen.</span><span data-ccp-props="{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559685&quot;:0,&quot;335559737&quot;:0,&quot;335559738&quot;:210,&quot;335559739&quot;:210,&quot;335559740&quot;:240}"> </span></p>
<h2><b><span data-contrast="auto">How to Measure MCP Productivity in Banking</span></b><span data-ccp-props="{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559685&quot;:0,&quot;335559737&quot;:0,&quot;335559738&quot;:261,&quot;335559739&quot;:261,&quot;335559740&quot;:240}"> </span></h2>
<p><span data-contrast="auto">Organizations implementing MCP-enabled workflows, often see measurable reductions in manual effort in areas such as:</span></p>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="25" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}" data-aria-posinset="1" data-aria-level="1"><b><span data-contrast="auto">Release notes and sprint summaries:</span></b><span data-contrast="auto"> Drafted in minutes instead of one to three days of manual aggregation.</span><span data-ccp-props="{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;201341983&quot;:0,&quot;335559738&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}"> </span></li>
</ul>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="25" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}" data-aria-posinset="2" data-aria-level="1"><b><span data-contrast="auto">QA and compliance documentation:</span></b><span data-contrast="auto"> Completed 25 to 44 percent faster, with more consistent artifacts.</span><span data-ccp-props="{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;201341983&quot;:0,&quot;335559738&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}"> </span></li>
</ul>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="25" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}" data-aria-posinset="3" data-aria-level="1"><b><span data-contrast="auto">Sprint planning preparation:</span></b><span data-contrast="auto"> Reduced from 30 to 45 minutes of manual assembly to minutes using prior sprint data.</span><span data-ccp-props="{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;201341983&quot;:0,&quot;335559738&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}"> </span></li>
</ul>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="25" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}" data-aria-posinset="4" data-aria-level="1"><b><span data-contrast="auto">Delivery flow:</span></b><span data-contrast="auto"> 20 to 35 percent improvement in cycle time, throughput, and predictability.</span><span data-ccp-props="{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;201341983&quot;:0,&quot;335559738&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}"> </span></li>
</ul>
<p><span data-contrast="auto">The delivery flow improvement is the number to study. It shows whether work is moving through the system with fewer delays, fewer missing inputs, and fewer avoidable review cycles.</span><span data-ccp-props="{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;201341983&quot;:0,&quot;335559738&quot;:210,&quot;335559739&quot;:210,&quot;335559740&quot;:240}"> </span></p>
<p><span data-contrast="auto">Leaders should evaluate MCP productivity in banking by mapping where work stalls today:</span><span data-ccp-props="{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;201341983&quot;:0,&quot;335559738&quot;:210,&quot;335559739&quot;:210,&quot;335559740&quot;:240}"> </span></p>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="26" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}" data-aria-posinset="1" data-aria-level="1"><span data-contrast="auto">Where do teams manually recreate status?</span><span data-ccp-props="{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;201341983&quot;:0,&quot;335559738&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}"> </span></li>
</ul>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="26" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}" data-aria-posinset="2" data-aria-level="1"><span data-contrast="auto">Where is compliance evidence missing or inconsistent?</span><span data-ccp-props="{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;201341983&quot;:0,&quot;335559738&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}"> </span></li>
</ul>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="26" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}" data-aria-posinset="3" data-aria-level="1"><span data-contrast="auto">Which release steps depend on one person assembling information?</span><span data-ccp-props="{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;201341983&quot;:0,&quot;335559738&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}"> </span></li>
</ul>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="26" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}" data-aria-posinset="4" data-aria-level="1"><span data-contrast="auto">Which workflows require the same data to be collected more than once?</span><span data-ccp-props="{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;201341983&quot;:0,&quot;335559738&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}"> </span></li>
</ul>
<p><span data-contrast="auto">A use case that only makes one person faster may stay local. A use case that reduces review cycles, rework, evidence gaps, or queue time can improve the delivery system.</span><span data-ccp-props="{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;201341983&quot;:0,&quot;335559738&quot;:210,&quot;335559739&quot;:210,&quot;335559740&quot;:240}"> </span></p>
<p><span data-contrast="auto">That is the larger opportunity behind</span> <span data-contrast="auto">MCP productivity in banking. Salesforce provides the workflow foundation. MCP connects agents to approved systems and context. Perficient’s AI-First Engineering brings the discipline to integrate governance, identity, testing, compliance, and adoption into production. The result is less rework, less reconstruction, and more predictable flow.</span><span data-ccp-props="{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;201341983&quot;:0,&quot;335559738&quot;:210,&quot;335559739&quot;:210,&quot;335559740&quot;:240}"> </span></p>
<p>The post <a href="https://blogs.perficient.com/mcp-productivity-in-banking-comes-from-less-rework/">MCP Productivity in Banking Comes from Less Rework</a> appeared first on <a href="https://blogs.perficient.com">Perficient Blogs</a>.</p>
]]></content:encoded>
					
		
		
			<media:content medium="image" url="https://blogs.perficient.com/wp-content/uploads/2026/08/two-engineers-MCP-productivity-in-banking-1024x683.jpg"/>
<post-id xmlns="com-wordpress:feed-additions:1">392328</post-id>	</item>
		<item>
		<title>The Next Phase of Payments: From Domestic Success to Global Scale</title>
		<link>https://blogs.perficient.com/the-next-phase-of-payments-from-domestic-success-to-global-scale/</link>
		
		<dc:creator><![CDATA[Carl Aridas]]></dc:creator>
		<pubDate>Fri, 28 Aug 2026 15:18:12 +0000</pubDate>
				<category><![CDATA[Technical Expertise]]></category>
		<guid isPermaLink="false">https://blogs.perficient.com/?p=392317</guid>

					<description><![CDATA[<p>Introduction In a recent blog, we explored how Brazil’s domestic instant payment platform, Pix, is reshaping digital commerce. This article builds on that discussion by&#8230;</p>
<p>The post <a href="https://blogs.perficient.com/the-next-phase-of-payments-from-domestic-success-to-global-scale/">The Next Phase of Payments: From Domestic Success to Global Scale</a> appeared first on <a href="https://blogs.perficient.com">Perficient Blogs</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h3>Introduction</h3>
<p>In a recent <a href="https://blogs.perficient.com/pix-how-brazils-instant-payment-revolution-is-reshaping-digital-commerce/">blog</a>, we explored how Brazil’s domestic instant payment platform, Pix, is reshaping digital commerce. This article builds on that discussion by examining the next opportunity for payment leaders: extending the convenience of domestic payment platforms across borders.</p>
<p>In speaking with payment rails executives globally, we were asked to examine how a domestic-only payment platform can expand to offer outbound cross-border QR-payments. For payment leaders, this expansion requires more than enabling international payments. It requires the right partnerships to extend global reach maintaining security, scalability, compliance, and a familiar customer experience.</p>
<h2>How Modern Payment Platforms Scale Internationally</h2>
<p>Many payment rails executives will immediately think of <a href="https://wero-wallet.eu/">Wero</a>, which, for readers who are unfamiliar, is a pan-European mobile payment system launched by the European Payments Initiative (EPI). Wero allows users to send and receive money instantly using a phone number or QR code, without entering the recipient’s International Bank Account Number, or IBAN.</p>
<p>Money moves directly from bank account to bank account via Single Euro Payments Area (SEPA) instant payments. However, Wero did not start as a domestic-only platform that later expanded across borders. According to the <a href="https://epicompany.eu/media-insights/wero-successfully-positioned-itself-on-payments/">EPI</a>, Wero was designed as a pan-European payment solution from the outset, with a phased rollout beginning in Belgium, France, and Germany in 2024.</p>
<p>Another example payment rails executives are encouraged to consider is barq, a Saudi financial application. <a href="https://www.startupresearcher.com/news/barq-becomes-region-s-fastest-growing-digital-wallet">Startup Researcher</a> reports that barq reached 1 million users within 21 days of launch and surpassed 10 million users within 17 months. Barq recently expanded from domestic payments to outbound cross-border QR payments through an integration with Alipay+, Ant International’s global payment gateway.</p>
<p>According to the <a href="https://www.alipayplus.com/news/detail/barq-launches-global-cross-border-qr-payments-via-alipayplus/">April 2026 announcement</a> from Alipay+, the agreement makes barq the first Alipay+ payment partner in the Middle East to enable outbound cross-border QR payments for more than 12 million users from Saudi Arabia across more than 220 markets worldwide.</p>
<p>The integration shows the value of partnerships. Rather than building individual connections in each country, barq leverages the Alipay+ infrastructure to offer its customers widespread acceptance across international markets.</p>
<h2>Supporting Secure Payment Growth</h2>
<p>As payment platforms expand their services, they need technology that supports secure and reliable payment processing. In September 2024, <a href="https://www.mastercard.com/news/eemea/en/newsroom/press-releases/en/2024/september/barq-signs-agreement-with-mastercard-to-empower-businesses-with-advanced-payment-acceptance-technology/">Mastercard</a> announced an agreement with barq to provide payment acceptance solutions through Mastercard Gateway. This technology supports recurring and scheduled payment needs, including subscriptions, instalment plans, bill payments, and automatic transactions that do not require the customer to be present on the website or app. These capabilities provide greater convenience, speed, and security for merchants and users.</p>
<p>Mastercard Gateway provides the payment processing and fraud prevention capabilities behind the barq’s expanding payment services. Behind these customer-facing capabilities, a broader cloud foundation supports growing transaction volumes, real-time performance, and continuous availability.</p>
<h3>Scaling the Payment Platform Through Cloud</h3>
<p>While Mastercard Gateway powers the customer&#8217;s payment experience, Google Cloud provides the underlying technology foundation that enables the platform to scale securely, process transactions reliably, and support continued innovation.</p>
<p>Google Cloud provides a scalable, secure foundation that supports millions of active wallet users while helping the platform meet evolving AI, compliance, and data security requirements.</p>
<p>Google Kubernetes Engine (GKE) supports real-time container orchestration. GKE automates, monitors, and scales financial microservices. Together, Google Cloud and GKE give technology teams the flexibility to deploy updates quickly, respond immediately to changing customer needs, and maintain performance as transaction volume grows.</p>
<h3>From Local Platforms to Global Payment Ecosystems</h3>
<p>Digital wallets are becoming part of a more connected global payments ecosystem. As acceptance networks expand across markets, payment providers have an opportunity to extend familiar payment experiences into new regions while giving merchants more ways to serve international customers.</p>
<p>Participating in this ecosystem requires secure payment capabilities, connections to global networks, and cloud infrastructure that supports real-time transactions at scale. Together, these elements allow payment providers to pursue international growth while maintaining the speed, reliability, and convenience users expect.</p>
<h3>Conclusion</h3>
<p>Consumers increasingly expect their preferred payment methods to work across markets, while merchants seek efficient ways to serve international customers. Meeting both expectations takes a connected ecosystem of secure payment capabilities, global acceptance networks, and scalable cloud infrastructure.</p>
<p>Strategic partnerships help digital wallet providers bring these components together and pursue international growth without building and managing separate connections in every market.</p>
<p>As a Google and Mastercard partner with payment technology and cloud expertise, we help providers build the connected ecosystems needed to scale securely across borders. <a href="https://www.perficient.com/contact-us"><em>Contact us</em></a> to discuss your cross-border payment strategy.</p>
<p>The post <a href="https://blogs.perficient.com/the-next-phase-of-payments-from-domestic-success-to-global-scale/">The Next Phase of Payments: From Domestic Success to Global Scale</a> appeared first on <a href="https://blogs.perficient.com">Perficient Blogs</a>.</p>
]]></content:encoded>
					
		
		
			<media:content medium="image" url="https://blogs.perficient.com/wp-content/uploads/2026/08/iStock-1215620268-1-1024x683.jpg"/>
<post-id xmlns="com-wordpress:feed-additions:1">392317</post-id>	</item>
		<item>
		<title>Accelerating Data Warehouse Modernization with Snowflake AIM</title>
		<link>https://blogs.perficient.com/accelerating-data-warehouse-modernization-with-snowflake-aim/</link>
		
		<dc:creator><![CDATA[Vivek Nigam]]></dc:creator>
		<pubDate>Fri, 28 Aug 2026 14:57:14 +0000</pubDate>
				<category><![CDATA[Technical Expertise]]></category>
		<category><![CDATA[Snowflake]]></category>
		<guid isPermaLink="false">https://blogs.perficient.com/?p=392321</guid>

					<description><![CDATA[<p>How AI-Powered Automation Is Transforming Enterprise Migrations to Snowflake Data warehouse modernization has long been one of the most complex initiatives organizations undertake. While moving&#8230;</p>
<p>The post <a href="https://blogs.perficient.com/accelerating-data-warehouse-modernization-with-snowflake-aim/">Accelerating Data Warehouse Modernization with Snowflake AIM</a> appeared first on <a href="https://blogs.perficient.com">Perficient Blogs</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>How AI-Powered Automation Is Transforming Enterprise Migrations to Snowflake</h2>
<p><span style="font-size: 16px">Data warehouse modernization has long been one of the most complex initiatives organizations undertake. While moving data itself is often straightforward, migrating decades of embedded business logic, stored procedures, ETL workflows, reporting dependencies, and platform-specific SQL introduces significant cost, risk, and complexity.</span></p>
<div>
<div class="___be36l80 fbotcpb fy77jfu f6dzj5z">
<div class="fai-CopilotMessage r1f6yzd6 ___1fjo9g7 f1g2tzg5 fgct6un fy77jfu f2c7lf3" tabindex="0" role="article" aria-labelledby="copilot-message-_r_7fk_-title copilot-message-_r_7fk_" data-tabster="{&quot;groupper&quot;:{&quot;tabbability&quot;:2},&quot;focusable&quot;:{}}">
<div id="copilot-message-_r_7fk_" class="fai-CopilotMessage__content r1izxv8h ___7qar2c0 fcthzvy" dir="auto">
<div dir="auto">
<div class="___1vve6yh f22iagw f1vx9l62 f122n59 f3bhgqh f1mnxvew fly5x3f">
<div class="___j4vmuw0 f22iagw f1vx9l62 f1869bpl fly5x3f fbc6vix">
<div tabindex="-1" data-testid="loading-message">
<div id="response-id_r_7fi_" class="___1yop6mf f336tjw f9ijwd5 fz7g6wx fod5ikn f1s184ao">
<div class="___1peis63 f22iagw f1063pyq f6jr5hl f1c88k3p">
<div class="___4htdyp0 fz7g6wx fy77jfu">
<div class="___1j4t0a1 f1lmfglv f1abmfm4" dir="auto" aria-hidden="false" data-testid="markdown-reply" data-message-id="261a223f-bf45-4539-95fd-4c25c532bca8" data-message-type="Chat">
<div class="___nfp7g60 f22iagw f1vx9l62 fkmyikg fk15e71 f1k953kz f137keqj f1rncccw f1stllg3 f1w4kmmc f1tric3v f10dk5ic fx8cdsv f16nlwsl f1eookvz fhjrts3 fqugt2f f18d18k8 f1v1vhmp f1hdmul3 f198vjnp f2dshw1 fjpjndq fnmj2pj ffrrb40 f1mon110 fhajzam fimndk6 fxv4dng fb1rn9k f59wlhv f1xmfh30 f18yf5o5 fmr6chf fw8qy2q ff161sd f1qr7t77 f1yyogn1 foogchg fp5872b f1tpb8gf f1hdgrc8 f1vatr43 frkxccd f9pdzkb f158oiaz ft5kggy f5l4ui7 f13j03li f18xdoka f8off4e f1go6zfc f128n2ra f1jpxw2j f1lwd9n0 fy0b8hm f1g2633v fx4kvgi fkvolse f1gxrt3a f1os76ua f1js9cnw f1g87ej0 freluf8 f1yggaq6 f2i3chp f1151osp florpoh f35kzfz ftp9m57 f1e288vi fz62hnz fixvuys f1nmofwh fc1c6mv f18a2er7 fhvkrdl fhxnn68 f1oce4bo fvhlfan f7tc0t0 f1ngf1n2 ffrzq6x f1yjiq2m f1aqdgql f1huvaf f10ij78l f1k94sa4 fkmfumq f1jvzkyl f1eu24ob f1xbfc1f fmf0lwf f107dsy8 f3w566c f4648sl f13zpkng f7unjfp f8p1rz fzu6h1w f1i1bi6h f1smo7hi f1sk1xod f1kgogdq f1gjktkp ft608jz f1o9wiiv fg3xr24 fhd155k f1b8gl2e fg4b9ou flb4lo fdicbfk fgwcyh1 f1jbds0d f1fb9uea f1stuka4 fcrtu6g fwqh0xn f11w66yg f6e0e65 f1vvgu0 f1607507 fgct6un f1ec1nbe fg3fpv7 f1m9bycv f1ntoah8 f1b694rt faql4r2 fpjuhzh fmavl6h f1d9bsk fmzhlt0 f145l92p fwkyaqm f129obh1 f19la9g f127w39w fr0ux9m fxhidck f1cu4h9j f1wnbo7v f1eueg4z fy9c24f f1h2o91j f1iw08fq f19n0e5">
<p>Many migration projects begin with aggressive timelines and optimistic budgets only to encounter challenges associated with undocumented business rules, proprietary SQL dialects, legacy ETL tools, and extensive testing requirements. As a result, organizations frequently spend more time validating migrated workloads than performing the migration itself.</p>
<p>Snowflake AIM (AI-driven Modernization and Virtualization) was designed to address these challenges. By combining deterministic code conversion, AI-assisted remediation, automated testing, data migration, and validation capabilities into a unified platform, AIM helps organizations accelerate migration initiatives while reducing manual effort and project risk.</p>
<p>In this article, we&#8217;ll explore how Snowflake AIM works, its key architectural components, and how organizations can use it to modernize legacy data warehouse environments more efficiently.</p>
<h2>What Is Snowflake AIM?</h2>
<p>Snowflake AIM is an AI-powered modernization platform that supports the migration of database code, data, ETL workflows, and reporting assets from legacy environments to Snowflake.</p>
<p>Rather than functioning as a standalone migration utility, AIM operates as a skill within Cortex Code (CoCo), Snowflake&#8217;s AI-powered coding assistant. AIM orchestrates the migration lifecycle, combining multiple technologies and services into a single guided workflow.</p>
<p>Organizations can use AIM for three primary modernization scenarios:</p>
<h3>Data Warehouse Modernization</h3>
<p>The platform&#8217;s primary use case is end-to-end migration from systems such as:</p>
<ul>
<li>Microsoft SQL Server</li>
<li>Amazon Redshift</li>
<li>Oracle</li>
<li>PostgreSQL</li>
<li>Teradata</li>
<li>Azure Synapse</li>
<li>BigQuery</li>
<li>And other supported data platforms</li>
</ul>
<p>AIM automates code conversion, testing, data migration, validation, and deployment activities throughout the migration process.</p>
<h3>Teradata Virtualization</h3>
<p>For organizations under time pressure due to licensing or infrastructure constraints, AIM can virtualize Teradata workloads without requiring an immediate code rewrite.</p>
<p>Applications continue submitting Teradata SQL while AIM translates requests and executes them against Snowflake in real time. This allows organizations to quickly transition off legacy infrastructure while modernizing at a pace that aligns with business priorities.</p>
<h3>Spark Workload Modernization</h3>
<p>Snowflake also supports modernization of Spark workloads through the Snowpark Migration Accelerator (SMA), helping organizations convert Spark applications into Snowpark-based implementations that leverage Snowflake&#8217;s native platform capabilities.</p>
<h2>Key Components of the Snowflake AIM Platform</h2>
<p>Snowflake AIM combines several complementary technologies that work together throughout the modernization lifecycle.</p>
<h3>SnowConvert</h3>
<p>SnowConvert serves as the deterministic conversion engine.</p>
<p>Unlike generative AI systems, SnowConvert uses rules-based translation to convert source SQL dialects into Snowflake-native SQL. It handles:</p>
<ul>
<li>Data type mapping</li>
<li>Syntax conversion</li>
<li>DDL translation</li>
<li>Stored procedures and functions</li>
<li>Object dependency handling</li>
</ul>
<p>By relying on deterministic conversion first, organizations gain consistency, traceability, and repeatability across large-scale migrations.</p>
<h3>CoCo</h3>
<p>CoCo (previously Cortex Code) acts as the orchestration layer.</p>
<p>It manages migration workflows, applies AI-assisted remediation when deterministic conversion is insufficient, coordinates testing activities, and guides users through the migration process using conversational interactions.</p>
<h3>AIM DMV</h3>
<p>AIM DMV (Data Migration and Validation) handles the movement and validation of data.</p>
<p>Using a distributed architecture, AIM DMV can migrate large datasets while providing validation capabilities that compare source and target environments throughout the migration process.</p>
<h3>Rule Engine</h3>
<p>One of AIM&#8217;s most differentiated capabilities is its Rule Engine.</p>
<p>As migration teams resolve conversion issues, AIM captures reusable patterns and stores them as project-wide rules. These rules can then be applied across thousands of similar objects, reducing repetitive manual work and accelerating future remediation efforts.</p>
<h3>Assessment Services</h3>
<p>Assessment capabilities analyze dependencies, evaluate migration complexity, identify opportunities for object exclusion, and generate deployment sequencing recommendations to help teams plan migrations more effectively.</p>
<p>Together, these components provide a structured approach that combines the predictability of rules-based conversion with the flexibility of AI-assisted remediation.</p>
<h2>An End-to-End Modernization Workflow</h2>
<p>Snowflake AIM organizes migrations into six primary phases that guide organizations from initial discovery through deployment.</p>
<h3>1. Connect</h3>
<p>AIM establishes a secure connection to source systems and validates connectivity.</p>
<h3>2. Initialize</h3>
<p>Project structures and migration metadata are created and tracked throughout the modernization effort.</p>
<h3>3. Register</h3>
<p>Source code and metadata are extracted directly from databases or imported from existing SQL repositories.</p>
<h3>4. Convert</h3>
<p>SnowConvert performs deterministic translation, generating Snowflake-compatible code and identifying areas requiring further review through Error, Warning, and Issue (EWI) classifications.</p>
<h3>5. Assess</h3>
<p>AIM evaluates dependencies, migration complexity, deployment sequencing, dynamic SQL usage, and ETL modernization readiness.</p>
<h3>6. Migrate</h3>
<p>Converted objects are deployed, data is migrated and validated, ETL workflows are modernized, and downstream dependencies are updated.</p>
<p>A key advantage of AIM is its ability to persist project state throughout the migration process. Teams can resume work across sessions without losing context, enabling more efficient collaboration on large modernization initiatives.</p>
<h2>Why Snowflake Uses a Hybrid Conversion Approach</h2>
<p>One of the most impactful aspects of AIM is its two-layer conversion model.</p>
<h3>Deterministic Conversion First</h3>
<p>SnowConvert handles the majority of migration work through grammar-based translation rules.</p>
<p>This approach delivers:</p>
<ul>
<li>Consistent results</li>
<li>Transparent mappings</li>
<li>Repeatable outcomes</li>
<li>Faster processing of large workloads</li>
</ul>
<h3>AI-Assisted Remediation Second</h3>
<p>When deterministic conversion encounters unsupported patterns or ambiguity, AIM leverages AI to evaluate and remediate remaining issues.</p>
<p>The platform can:</p>
<ul>
<li>Diagnose migration failures</li>
<li>Generate conversion alternatives</li>
<li>Re-deploy code</li>
<li>Execute validation tests</li>
<li>Iterate until acceptable results are achieved</li>
</ul>
<p>This architecture helps organizations benefit from AI innovation while maintaining governance and reducing the risk of unnecessary AI-generated changes.</p>
<h2>Built-In Validation Reduces Migration Risk</h2>
<p>Successful migrations require more than code conversion. Converted workloads must behave identically to their source counterparts.</p>
<p>Snowflake AIM addresses this through an automated testing and validation framework.</p>
<h3>Automated Test Generation</h3>
<p>AIM can generate test scenarios using:</p>
<ul>
<li>Query history</li>
<li>Application usage patterns</li>
<li>Source code analysis</li>
<li>AI-generated test cases</li>
</ul>
<h3>Baseline Capture</h3>
<p>The platform captures expected behavior from source environments and stores those results as validation baselines.</p>
<h3>Output Comparison</h3>
<p>Converted Snowflake objects are executed against identical test inputs and compared to baseline results.</p>
<p>This enables validation of:</p>
<ul>
<li>Stored procedures</li>
<li>Functions</li>
<li>Multiple result sets</li>
<li>Input/output parameters</li>
<li>Data-modifying operations</li>
</ul>
<h3>Isolated Testing with Zero-Copy Clones</h3>
<p>Snowflake-side testing leverages zero-copy clones, allowing teams to validate workloads against production-scale data without introducing permanent changes or affecting production environments.</p>
<p>The result is a significantly higher level of confidence during migration cutovers.</p>
<h2>Enterprise-Scale Data Migration and Validation</h2>
<p>Beyond code modernization, AIM provides a scalable architecture for data movement and validation.</p>
<p>The platform:</p>
<ul>
<li>Partitions large workloads automatically</li>
<li>Supports parallel processing through distributed workers</li>
<li>Uses Parquet-based data transfer pipelines</li>
<li>Enables fault-tolerant retry mechanisms</li>
<li>Supports incremental synchronization strategies</li>
</ul>
<p>AIM also provides three levels of data validation:</p>
<h3>Level 1: Schema Validation</h3>
<p>Validates:</p>
<ul>
<li>Column structures</li>
<li>Data types</li>
<li>Nullability</li>
<li>Schema compatibility</li>
</ul>
<h3>Level 2: Metrics Validation</h3>
<p>Compares:</p>
<ul>
<li>Row counts</li>
<li>Null counts</li>
<li>Aggregate statistics</li>
<li>Column-level metrics</li>
</ul>
<h3>Level 3: Row-Level Validation</h3>
<p>Performs detailed record-by-record comparisons between source and target environments.</p>
<p>This layered validation approach helps organizations balance speed with confidence while reducing migration risk.</p>
<h2>Accelerating Migrations with Reusable Migration Intelligence</h2>
<p>Traditional migration projects often scale linearly. Every issue requires another manual fix.</p>
<p>AIM&#8217;s Rule Engine changes that dynamic.</p>
<p>When migration teams resolve a conversion issue, AIM captures the remediation pattern and makes it available across the project.</p>
<p>As migrations progress:</p>
<ul>
<li>Previously solved issues become reusable assets</li>
<li>Teams spend less time resolving repeat patterns</li>
<li>AI remediation becomes more efficient</li>
<li>Large projects gain increasing automation over time</li>
</ul>
<p>Instead of repeatedly solving the same problems, organizations build institutional migration intelligence that compounds throughout the initiative.</p>
<p>For complex migrations involving thousands of objects, this can significantly reduce both effort and project duration.</p>
<h2>Virtualization vs. Modernization: Choosing the Right Path</h2>
<p>Organizations considering Teradata migration often face a strategic decision.</p>
<h3>When Virtualization Makes Sense</h3>
<p>Virtualization is ideal when organizations:</p>
<ul>
<li>Face near-term license renewal deadlines</li>
<li>Need rapid migration with minimal disruption</li>
<li>Cannot risk immediate rewrites of business-critical applications</li>
<li>Require faster time-to-value</li>
</ul>
<p>Benefits include:</p>
<ul>
<li>Minimal code changes</li>
<li>Rapid deployment</li>
<li>Immediate infrastructure modernization</li>
<li>Reduced licensing exposure</li>
</ul>
<h3>When Full Modernization Makes Sense</h3>
<p>Modernization is ideal when organizations want:</p>
<ul>
<li>Snowflake-native performance</li>
<li>Long-term architectural optimization</li>
<li>Simplified operations</li>
<li>Lower ongoing platform complexity</li>
</ul>
<p>In many cases, organizations begin with virtualization to quickly exit a legacy platform and subsequently modernize workloads over time.</p>
<p>Virtualization becomes the bridge, while modernization remains the long-term destination.</p>
<h2>Common Use Cases for Snowflake AIM</h2>
<p>Snowflake AIM delivers the strongest value in scenarios involving:</p>
<h3>SQL Server Modernization</h3>
<p>Organizations migrating SQL Server workloads benefit from comprehensive support across code conversion, testing, SSIS modernization, validation, and deployment.</p>
<h3>Amazon Redshift Migration</h3>
<p>AIM helps accelerate migration from Redshift environments while minimizing manual remediation work.</p>
<h3>Teradata Modernization and License Exit Strategies</h3>
<p>Organizations facing Teradata renewal pressures can use virtualization and modernization capabilities to accelerate platform transitions.</p>
<h3>ETL Modernization</h3>
<p>AIM supports conversion of:</p>
<ul>
<li>SSIS packages</li>
<li>Informatica PowerCenter workflows</li>
</ul>
<p>enabling broader modernization initiatives that extend beyond database workloads.</p>
<h3>Large Stored Procedure Estates</h3>
<p>Organizations with extensive procedural code benefit from AIM&#8217;s Rule Engine, automated testing framework, and AI-assisted remediation capabilities.</p>
<h2>Quantifying the Business Impact</h2>
<p>Migration projects are often measured by three factors:</p>
<ul>
<li>Time</li>
<li>Cost</li>
<li>Risk</li>
</ul>
<p>Snowflake AIM was designed to improve all three.</p>
<p>Based on typical migration scenarios, organizations may achieve:</p>
<ul>
<li>Up to <strong>77% reduction in migration effort</strong></li>
<li>Up to <strong>70% reduction in project timelines</strong></li>
<li>Significant reductions in required staffing levels</li>
<li>Faster delivery of business value</li>
<li>More predictable project execution</li>
</ul>
<p>Platform-wide modernization metrics include:</p>
<ul>
<li><strong>2+ billion lines of code converted</strong></li>
<li><strong>46+ billion database objects processed</strong></li>
<li><strong>95%+ average conversion rates</strong></li>
<li><strong>88% reduction in average migration timelines</strong></li>
</ul>
<p>These outcomes allow teams to focus less on manual migration activities and more on delivering analytical and business value on Snowflake.</p>
<h2>Why AI Matters in Modernization</h2>
<p>Historically, migration tools focused primarily on code translation.</p>
<p>However, translation alone rarely represents the most difficult aspect of modernization.</p>
<p>The greatest challenges often arise afterward:</p>
<ul>
<li>Resolving exceptions</li>
<li>Validating business logic</li>
<li>Coordinating testing efforts</li>
<li>Managing dependencies</li>
<li>Scaling remediation across thousands of assets</li>
</ul>
<p>Snowflake AIM addresses these challenges by combining deterministic conversion with AI-assisted remediation, validation, and workflow orchestration.</p>
<p>This hybrid approach allows organizations to accelerate migrations while maintaining transparency, governance, and confidence throughout the modernization lifecycle.</p>
<h2>Conclusion</h2>
<p>Enterprise data warehouse modernization remains a complex undertaking, but advances in automation and AI are fundamentally changing how migration projects are delivered.</p>
<p>Snowflake AIM provides a unified framework for assessing, converting, testing, validating, and modernizing legacy workloads while reducing the time, cost, and risk traditionally associated with large-scale migration initiatives.</p>
<p>Whether organizations are modernizing SQL Server, Redshift, Teradata, or complex ETL estates, AIM helps simplify the journey by combining deterministic conversion, AI-assisted remediation, scalable data migration, and built-in validation into a single modernization experience.</p>
<p>As organizations continue to accelerate cloud adoption, platforms like Snowflake AIM are helping transform data warehouse migration from a multi-year initiative into a more predictable, scalable, and business-focused modernization program.</p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<p>The post <a href="https://blogs.perficient.com/accelerating-data-warehouse-modernization-with-snowflake-aim/">Accelerating Data Warehouse Modernization with Snowflake AIM</a> appeared first on <a href="https://blogs.perficient.com">Perficient Blogs</a>.</p>
]]></content:encoded>
					
		
		
			<media:content medium="image" url="https://blogs.perficient.com/wp-content/uploads/2026/05/Copy-of-Emma_S_Snowflake_Premier-1.png"/>
<post-id xmlns="com-wordpress:feed-additions:1">392321</post-id>	</item>
		<item>
		<title>Perficient Achieves AWS AI Competency, Accelerating AI-Powered Business Transformation</title>
		<link>https://blogs.perficient.com/perficient-achieves-aws-ai-competency-accelerating-ai-powered-business-transformation/</link>
		
		<dc:creator><![CDATA[Editorial Team]]></dc:creator>
		<pubDate>Thu, 27 Aug 2026 15:28:57 +0000</pubDate>
				<category><![CDATA[News and Events]]></category>
		<category><![CDATA[Technical Expertise]]></category>
		<category><![CDATA[AI]]></category>
		<category><![CDATA[AWS]]></category>
		<category><![CDATA[aws competency]]></category>
		<guid isPermaLink="false">https://blogs.perficient.com/?p=392301</guid>

					<description><![CDATA[<p>Perficient is proud to announce that we have achieved the AWS AI Competency in the Generative AI Consulting Services / Agentic AI Consulting Services category.&#8230;</p>
<p>The post <a href="https://blogs.perficient.com/perficient-achieves-aws-ai-competency-accelerating-ai-powered-business-transformation/">Perficient Achieves AWS AI Competency, Accelerating AI-Powered Business Transformation</a> appeared first on <a href="https://blogs.perficient.com">Perficient Blogs</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Perficient is proud to announce that we have achieved the <a href="https://aws.amazon.com/ai/generative-ai/partners/">AWS AI Competency</a> in the Generative AI Consulting Services / Agentic AI Consulting Services category. This designation recognizes Amazon Web Services (AWS) Partners with demonstrated technical expertise and proven customer success delivering artificial intelligence solutions on AWS.</p>
<p>This achievement reinforces our commitment to helping clients harness the power of AI to drive innovation, improve operational efficiency, and create exceptional customer experiences. As organizations increase their AI investments, we bring together deep industry expertise, strategic consulting, and advanced cloud capabilities to deliver measurable business outcomes at scale.</p>
<h3>Recognized for Proven AI Expertise</h3>
<p>The AWS AI Competency validates Perficient&#8217;s ability to design, build, and deploy AI-powered solutions that address complex business challenges across industries. The designation highlights our experience helping clients leverage AWS AI services, including Amazon Bedrock, Amazon SageMaker, and Amazon Q, to:</p>
<ul>
<li>Accelerate generative AI adoption and innovation</li>
<li>Modernize customer and employee experiences with intelligent solutions</li>
<li>Automate business processes and workflows</li>
<li>Enhance data-driven decision making</li>
<li>Scale AI initiatives securely and responsibly</li>
</ul>
<p>AWS AI Competency Partners undergo a rigorous validation process that evaluates technical proficiency, customer success, and adherence AWS best practices, including the AWS Well-Architected Framework. Achieving this distinction demonstrates our ability to deliver transformative AI solutions that help organizations realize value faster.</p>
<h3>Strengthening Our Collaboration with AWS</h3>
<p>Perficient and AWS share a commitment to helping organizations unlock meaningful business outcomes through emerging technologies. Achieving the AWS AI Competency further strengthens our collaboration and positions us to help clients adopt and scale AI with confidence.</p>
<blockquote><p>&#8220;Perficient achieving the AI Competency is an incredible achievement,&#8221; said Steve Holstad, VP of AWS Practice at Perficient. &#8220;Perficient and AWS are both deeply invested in helping clients unlock business outcomes through AI, making this a perfect time to strengthen our collaboration. We greatly appreciate the partnership and are excited for what&#8217;s ahead.&#8221;</p></blockquote>
<h3>Delivering AI Innovation Across Industries</h3>
<p>Organizations across every industry are exploring how AI can improve productivity, enhance customer engagement, and create competitive advantage. Perficient helps clients navigate this evolving landscape by combining AI strategy, cloud engineering, data modernization, and industry expertise to deliver practical solutions aligned to business objectives.</p>
<p>From generative AI applications and intelligent automation to advanced analytics and machine learning initiatives, we help clients move from experimentation to enterprise-scale adoption.</p>
<p>This expertise is already delivering measurable results for clients. For example, <a href="https://www.perficient.com/Outcomes/Top-Three-Life-Insurance-Carrier">Perficient helped a leading U.S. life insurer modernize its customer service knowledge platform</a> with an AWS-powered generative AI solution. The platform scaled to more than 1,100 active users, answered over 110,000 insurance policy questions in its first three months, and helped reduce customer service call handling times by 13%.</p>
<p>In another engagement, <a href="https://www.perficient.com/outcomes/multinational-manufacturing-conglomerate">Perficient helped a global manufacturing leader deploy generative AI-powered customer service capabilities</a> on AWS that deflected 975,000 customer interactions in the first year, generating approximately $25 million in annual cost savings while improving support experiences at scale.</p>
<h3>Looking Ahead</h3>
<p>As an <a href="https://aws.amazon.com/ai/partners/">AWS AI Competency Partner</a>, Perficient is well positioned to help clients accelerate their AI journeys and transform ambitious ideas into measurable business outcomes.</p>
<p>We are honored to receive this recognition and look forward to continuing our work with AWS to help organizations innovate responsibly, scale confidently, and capture the full potential of AI.</p>
<p>Learn more about <a href="https://www.perficient.com/partners/aws">Perficient&#8217;s AWS capabilities</a> and how we help organizations drive business transformation through cloud and AI innovation.</p>
<p>The post <a href="https://blogs.perficient.com/perficient-achieves-aws-ai-competency-accelerating-ai-powered-business-transformation/">Perficient Achieves AWS AI Competency, Accelerating AI-Powered Business Transformation</a> appeared first on <a href="https://blogs.perficient.com">Perficient Blogs</a>.</p>
]]></content:encoded>
					
		
		
			<media:content medium="image" url="https://blogs.perficient.com/wp-content/uploads/2026/08/PRFT-Blog_Image-1024x683.jpg"/>
<post-id xmlns="com-wordpress:feed-additions:1">392301</post-id>	</item>
		<item>
		<title>From the Air Force to Customer Success, Tauni Crefeld Champions Personal Growth</title>
		<link>https://blogs.perficient.com/from-the-air-force-to-customer-success-tauni-crefeld-champions-personal-growth/</link>
		
		<dc:creator><![CDATA[Culture Team]]></dc:creator>
		<pubDate>Wed, 26 Aug 2026 16:07:15 +0000</pubDate>
				<category><![CDATA[Life at Perficient]]></category>
		<category><![CDATA[Company Culture]]></category>
		<category><![CDATA[People of Perficient]]></category>
		<category><![CDATA[Women in Technology]]></category>
		<guid isPermaLink="false">https://blogs.perficient.com/?p=392242</guid>

					<description><![CDATA[<p>At Perficient, meaningful impact often comes from how people show up, connect, and support one another. In our Women in Technology (WiT) ERG Spotlight Series,&#8230;</p>
<p>The post <a href="https://blogs.perficient.com/from-the-air-force-to-customer-success-tauni-crefeld-champions-personal-growth/">From the Air Force to Customer Success, Tauni Crefeld Champions Personal Growth</a> appeared first on <a href="https://blogs.perficient.com">Perficient Blogs</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>At Perficient, meaningful impact often comes from how people show up, connect, and support one another. In our <a href="https://www.perficient.com/about/culture-community" target="_blank" rel="noopener">Women in Technology (WiT) ERG</a> Spotlight Series, we’re featuring women across the company who make a difference in the technology industry.</p>
<p><img fetchpriority="high" decoding="async" data-attachment-id="392296" data-permalink="https://blogs.perficient.com/from-the-air-force-to-customer-success-tauni-crefeld-champions-personal-growth/tauni-crefeld-headshot-image/" data-orig-file="https://blogs.perficient.com/wp-content/uploads/2026/08/Tauni-Crefeld-Headshot-Image.jpg" data-orig-size="350,489" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;JULIO BE&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1682008114&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;,&quot;alt&quot;:&quot;&quot;}" data-image-title="" data-image-description="" data-image-caption="" data-large-file="https://blogs.perficient.com/wp-content/uploads/2026/08/Tauni-Crefeld-Headshot-Image.jpg" class="size-medium wp-image-392296 alignright" src="https://blogs.perficient.com/wp-content/uploads/2026/08/Tauni-Crefeld-Headshot-Image-215x300.jpg" alt="" width="215" height="300" srcset="https://blogs.perficient.com/wp-content/uploads/2026/08/Tauni-Crefeld-Headshot-Image-215x300.jpg 215w, https://blogs.perficient.com/wp-content/uploads/2026/08/Tauni-Crefeld-Headshot-Image.jpg 350w" sizes="(max-width: 215px) 100vw, 215px" />Our first profile features <strong>Tauni Crefeld</strong>, Head of Customer Success, who makes an impact through leadership, problem-solving, and a deep commitment to helping people succeed. Whether she’s coaching teams through complex delivery challenges or sparking conversations through storytelling, Tauni brings a thoughtful, people-first approach to everything she does.</p>
<p>In our <a href="https://blogs.perficient.com/tag/people-of-perficient/" target="_blank" rel="noopener">People of Perficient</a> profile, Tauni shares her approach to leadership, what drives her work, and how her experiences — from the Air Force to consulting — continue to shape her perspective today.</p>
<h3><strong>What is your role at Perficient?  </strong></h3>
<p>At Perficient, my technical title is Head of Customer Success. I focus on helping ensure our complex and fixed-fee projects are successful.</p>
<p>I think about the role in three areas. The first is making sure projects are set up for success by reviewing estimates, solutions, and contracts — I read every fixed-fee percent complete contract before approval to make sure it’s set up correctly. Second is supporting and coaching teams during delivery of fixed-fee and complex projects. The third is helping teams successfully close projects while maintaining strong client relationships.</p>
<h3><strong>How have you grown as a leader throughout your career? </strong></h3>
<p><img decoding="async" data-attachment-id="392297" data-permalink="https://blogs.perficient.com/from-the-air-force-to-customer-success-tauni-crefeld-champions-personal-growth/tauni-3/" data-orig-file="https://blogs.perficient.com/wp-content/uploads/2026/08/tauni-3.jpeg" data-orig-size="2000,1501" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;,&quot;alt&quot;:&quot;&quot;}" data-image-title="" data-image-description="" data-image-caption="" data-large-file="https://blogs.perficient.com/wp-content/uploads/2026/08/tauni-3-1024x769.jpeg" class="size-medium wp-image-392297 alignright" src="https://blogs.perficient.com/wp-content/uploads/2026/08/tauni-3-300x225.jpeg" alt="" width="300" height="225" srcset="https://blogs.perficient.com/wp-content/uploads/2026/08/tauni-3-300x225.jpeg 300w, https://blogs.perficient.com/wp-content/uploads/2026/08/tauni-3-1024x769.jpeg 1024w, https://blogs.perficient.com/wp-content/uploads/2026/08/tauni-3-768x576.jpeg 768w, https://blogs.perficient.com/wp-content/uploads/2026/08/tauni-3-1536x1153.jpeg 1536w, https://blogs.perficient.com/wp-content/uploads/2026/08/tauni-3.jpeg 2000w" sizes="(max-width: 300px) 100vw, 300px" />My first job was in the Air Force. I was Air Force Security Police at three different military bases. I came in as a lieutenant and oversaw 40 people, all men, almost all older than me.</p>
<p>So, when you come in as a 21-year-old female, and you’re in charge but don’t know anything yet, you have to listen and find a way to lead. You learn quickly how to get along, build relationships, and lead by influence because despite what you see in movies, you can’t just come in and start giving orders. It will not work.</p>
<h3><strong>When you were walking into that room as a 21-year-old, what was your headspace?  </strong></h3>
<p>It took about a week to even understand things.</p>
<p>I went on a training run with a senior lieutenant. We were out in the missile fields of North Dakota, in the middle of nowhere, going from launch facility to launch facility. He would make radio calls back to base control and show me exactly what to say. Then, he’d have me try it.</p>
<p>When I did, there would just be silence — no response.</p>
<p>He would take the mic back, say the exact same thing, and they would respond to him. After the tour of duty, we went back and asked base command why they hadn’t responded to me. And they said, “There are no female lieutenants here, so we thought it was a prank.”</p>
<p>There were things like that from the beginning. Walking into a room of 40 people is already intimidating, but walking in with that context makes it a little harder. I kept a veneer up for a couple of days trying to maintain this idea of what a “professional leader” should look like. And then I just dropped it. I knew it wouldn&#8217;t work.</p>
<p>I started asking questions, listening, and learning: “Tell me what you do. Tell me your role. How does this work?” From there, they adapted to me, and I adapted to them. It was an evolution, but I had to let go of that façade of what I thought leadership should look like.</p>
<h3><strong>How did your approach to leadership translate from the military into consulting? </strong></h3>
<p><img decoding="async" data-attachment-id="392310" data-permalink="https://blogs.perficient.com/from-the-air-force-to-customer-success-tauni-crefeld-champions-personal-growth/tauni-5/" data-orig-file="https://blogs.perficient.com/wp-content/uploads/2026/08/tauni-5-e1787754185594.jpeg" data-orig-size="1500,2000" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;,&quot;alt&quot;:&quot;&quot;}" data-image-title="Tauni 5" data-image-description="" data-image-caption="" data-large-file="https://blogs.perficient.com/wp-content/uploads/2026/08/tauni-5-e1787754185594-768x1024.jpeg" class="size-medium wp-image-392310 alignright" src="https://blogs.perficient.com/wp-content/uploads/2026/08/tauni-5-e1787754185594-225x300.jpeg" alt="Tauni 5" width="225" height="300" srcset="https://blogs.perficient.com/wp-content/uploads/2026/08/tauni-5-e1787754185594-225x300.jpeg 225w, https://blogs.perficient.com/wp-content/uploads/2026/08/tauni-5-e1787754185594-768x1024.jpeg 768w, https://blogs.perficient.com/wp-content/uploads/2026/08/tauni-5-e1787754185594-1152x1536.jpeg 1152w, https://blogs.perficient.com/wp-content/uploads/2026/08/tauni-5-e1787754185594.jpeg 1500w" sizes="(max-width: 225px) 100vw, 225px" />After my military career, I spent almost 25 years at another consulting company. I started in an entry-level analyst role and worked my way up to managing director by taking on bigger and bigger projects.</p>
<p>I focused more on delivery than sales and made myself valuable through delivery and fixing messy teams. I didn’t go around doing traditional “selling,” but I sold through strong delivery. And I always say that good delivery can be a great sales tool.</p>
<p>At Perficient, I have a title, but I don&#8217;t use it much. Instead, I approach teams by saying, “I’m here to help.” I don’t rely on positional authority. People are open to help and want their projects to succeed.</p>
<h3><strong>What motivates you throughout the day?</strong></h3>
<p>Two things motivate me. I love coaching people. The people I’ve met here are incredibly smart and receptive to feedback. They’re eager to learn, and I love helping them grow.</p>
<p>The other thing I love is fixing problems. I even have a book called <a href="https://www.amazon.com/Fixer-forging-unstoppable-teams/dp/B0DQR982ZC" target="_blank" rel="noopener"><em>The Fixer</em></a>. I like going into messy situations, figuring out what’s wrong, and changing the dynamics so teams can deliver well. My goal is always to make things better for everybody involved.</p>
<h3><strong>What do you enjoy the most about working with different teams and cultures?</strong></h3>
<p>I love working with people around the world. I speak Spanish, and I love connecting with our colleagues in Latin America and using the language whenever I can.</p>
<p>The best thing about meeting so many different people is that everyone brings a different perspective to what we’re doing. When I meet a new team, I don’t ever include my title. I ask questions, listen, and try to understand their situation first. I like learning and listening. You can’t fix a problem if you don’t understand what’s going on.</p>
<h3><strong>In your time at Perficient, how have you engaged with the Women in Technology ERG?</strong></h3>
<p><img loading="lazy" decoding="async" data-attachment-id="392311" data-permalink="https://blogs.perficient.com/from-the-air-force-to-customer-success-tauni-crefeld-champions-personal-growth/tauni_own-your-path_take-3/" data-orig-file="https://blogs.perficient.com/wp-content/uploads/2026/08/Tauni_Own-Your-Path_Take-3.jpg" data-orig-size="2000,1500" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;,&quot;alt&quot;:&quot;&quot;}" data-image-title="" data-image-description="" data-image-caption="" data-large-file="https://blogs.perficient.com/wp-content/uploads/2026/08/Tauni_Own-Your-Path_Take-3-1024x768.jpg" class="size-medium wp-image-392311 alignright" src="https://blogs.perficient.com/wp-content/uploads/2026/08/Tauni_Own-Your-Path_Take-3-300x225.jpg" alt="" width="300" height="225" srcset="https://blogs.perficient.com/wp-content/uploads/2026/08/Tauni_Own-Your-Path_Take-3-300x225.jpg 300w, https://blogs.perficient.com/wp-content/uploads/2026/08/Tauni_Own-Your-Path_Take-3-1024x768.jpg 1024w, https://blogs.perficient.com/wp-content/uploads/2026/08/Tauni_Own-Your-Path_Take-3-768x576.jpg 768w, https://blogs.perficient.com/wp-content/uploads/2026/08/Tauni_Own-Your-Path_Take-3-1536x1152.jpg 1536w, https://blogs.perficient.com/wp-content/uploads/2026/08/Tauni_Own-Your-Path_Take-3.jpg 2000w" sizes="auto, (max-width: 300px) 100vw, 300px" />I was invited to speak about my book, <a href="https://www.amazon.com/Own-Your-Path-Career-Roadmap/dp/B0FPXM3VRD" target="_blank" rel="noopener"><em>Own Your Path</em></a>, which focuses on driving your career forward. The Women in Technology ERG has also hosted a book club around it, and I’ve attended several sessions with them.</p>
<p>I had all of these stories in my head, so I started writing them down. I figured that a lot of the young women that I’d worked with back at my other company would be the ones who read it.</p>
<p>The whole goal of these stories is to help people, so the stories are very solution-oriented — the same way I try to fix projects: Find all the commonalities and structural problems and then find ways to overcome them. So, it&#8217;s amazing to see people read it and take some of those learnings to heart. That makes me so happy because that&#8217;s the whole point of the book.</p>
<h3><strong>How can we elevate women working in technology?</strong></h3>
<p><img loading="lazy" decoding="async" data-attachment-id="392303" data-permalink="https://blogs.perficient.com/from-the-air-force-to-customer-success-tauni-crefeld-champions-personal-growth/tauni-2/" data-orig-file="https://blogs.perficient.com/wp-content/uploads/2026/08/tauni-2.jpeg" data-orig-size="1501,2000" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;,&quot;alt&quot;:&quot;&quot;}" data-image-title="" data-image-description="" data-image-caption="" data-large-file="https://blogs.perficient.com/wp-content/uploads/2026/08/tauni-2-769x1024.jpeg" class="size-medium wp-image-392303 alignright" src="https://blogs.perficient.com/wp-content/uploads/2026/08/tauni-2-225x300.jpeg" alt="" width="225" height="300" srcset="https://blogs.perficient.com/wp-content/uploads/2026/08/tauni-2-225x300.jpeg 225w, https://blogs.perficient.com/wp-content/uploads/2026/08/tauni-2-769x1024.jpeg 769w, https://blogs.perficient.com/wp-content/uploads/2026/08/tauni-2-768x1023.jpeg 768w, https://blogs.perficient.com/wp-content/uploads/2026/08/tauni-2-1153x1536.jpeg 1153w, https://blogs.perficient.com/wp-content/uploads/2026/08/tauni-2.jpeg 1501w" sizes="auto, (max-width: 225px) 100vw, 225px" />One thing I appreciate about WiT is that it’s not exclusive to women. I have seen men participate in those meetings, and that&#8217;s important. The only way women can be elevated is if we get everyone in the conversation.</p>
<p>I made it to the level that I did because I had good sponsors and supporters, all of whom happened to be male. I did have good women mentors, but it was the men who were able to push me forward because they have more positional authority. Right now, in the world we live in, it&#8217;s the men who are still in those top positions.</p>
<p>We need to get the men in the conversation. Women can&#8217;t solve this on their own because a lot of the challenges are structural.</p>
<h3><strong>What advice do you have for women working in tech?</strong></h3>
<p>Women listen a lot, and we’re very good at it. But many of us are not good at advocating for ourselves.</p>
<p>If there&#8217;s a skill that you want to learn or a position you want to grow into, then tell people. Tell people what you want. Otherwise, they may guide you in a different direction.</p>
<p>You have to decide what&#8217;s right for you and push ahead. They don&#8217;t know what you want. Only you do.</p>
<p><a href="https://blogs.perficient.com/tag/people-of-perficient/" target="_blank" rel="noopener"><strong>SEE MORE PEOPLE OF PERFICIENT</strong></a></p>
<p>It’s no secret that our success is because of our people. Across teams, technologies, and time zones, our colleagues collaborate to build AI-first solutions that hold up in the real world and deliver outcomes that matter. We’re always looking for unfiltered, unconventional, and unshakable problem-solvers who turn bold thinking into results. Join us and be part of a culture defined by curiosity, ownership, and impact.</p>
<p>Visit our <a href="https://www.perficient.com/careers" target="_blank" rel="noopener"><strong>Careers page</strong></a> to explore open roles and learn more about what it’s like to work at Perficient. Join our <a href="https://careers.perficient.com/en/sites/CX_1/join-talent-community" target="_blank" rel="noopener"><strong>talent community</strong></a> for career tips, job openings, company updates, and more!</p>
<p>Go inside <a href="https://blogs.perficient.com/category/corporate-responsibility-culture/culture-and-community/life-at-perficient/"><strong>Life at Perficient</strong></a> and connect with us on <a href="https://www.linkedin.com/company/perficient/" target="_blank" rel="noopener"><strong>LinkedIn</strong></a>, <a href="https://www.youtube.com/channel/UCRUC3AbkGIH4Wud_PgKovug" target="_blank" rel="noopener"><strong>YouTube</strong></a>, <a href="https://x.com/perficient" target="_blank" rel="noopener"><strong>X</strong></a>, <a href="https://www.facebook.com/perficient/" target="_blank" rel="noopener"><strong>Facebook</strong></a>, and <a href="https://www.instagram.com/perficient" target="_blank" rel="noopener"><strong>Instagram</strong></a>.</p>
<p>The post <a href="https://blogs.perficient.com/from-the-air-force-to-customer-success-tauni-crefeld-champions-personal-growth/">From the Air Force to Customer Success, Tauni Crefeld Champions Personal Growth</a> appeared first on <a href="https://blogs.perficient.com">Perficient Blogs</a>.</p>
]]></content:encoded>
					
		
		
			<media:content medium="image" url="https://blogs.perficient.com/wp-content/uploads/2026/08/tauni-6-1-1024x768.jpeg"/>
<post-id xmlns="com-wordpress:feed-additions:1">392242</post-id>	</item>
		<item>
		<title>Building Enterprise RAG on Azure: GPT-4o + Azure AI Search + Azure DevOps — End to End</title>
		<link>https://blogs.perficient.com/building-enterprise-rag-on-azure-gpt-4o-azure-ai-search-azure-devops-end-to-end/</link>
		
		<dc:creator><![CDATA[Venkata Sreeram Murthy Gonella]]></dc:creator>
		<pubDate>Mon, 24 Aug 2026 15:46:42 +0000</pubDate>
				<category><![CDATA[Technical Expertise]]></category>
		<guid isPermaLink="false">https://blogs.perficient.com/?p=392270</guid>

					<description><![CDATA[<p>Series: Enterprise GenAI &#38; RAG Architecture — Part 3 of 5  Why Azure is the Natural Home for Enterprise RAG  If your organization runs on&#8230;</p>
<p>The post <a href="https://blogs.perficient.com/building-enterprise-rag-on-azure-gpt-4o-azure-ai-search-azure-devops-end-to-end/">Building Enterprise RAG on Azure: GPT-4o + Azure AI Search + Azure DevOps — End to End</a> appeared first on <a href="https://blogs.perficient.com">Perficient Blogs</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><em><span class="TextRun SCXW192786497 BCX0" lang="EN-US" xml:lang="EN-US" data-contrast="none"><span class="NormalTextRun SCXW192786497 BCX0"><strong>Series</strong>: </span></span><span class="TextRun SCXW192786497 BCX0" lang="EN-US" xml:lang="EN-US" data-contrast="none"><span class="NormalTextRun SCXW192786497 BCX0">Enterprise GenAI &amp; RAG Architecture — Part 3 of 5</span></span><span class="EOP Selected SCXW192786497 BCX0" data-ccp-props="{&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559738&quot;:60,&quot;335559739&quot;:60}"> </span></em></p>
<h2><b><span data-contrast="none">Why Azure is the Natural Home for Enterprise RAG</span></b><span data-ccp-props="{&quot;335559738&quot;:400,&quot;335559739&quot;:200}"> </span></h2>
<p><span data-contrast="auto">If your organization runs on Microsoft — SharePoint, Teams, Azure AD, Microsoft 365 — then Azure is your natural RAG platform. Every data source your employees use daily connects natively, without custom connectors or complex authentication flows.</span><span data-ccp-props="{&quot;335559738&quot;:80,&quot;335559739&quot;:80}"> </span></p>
<p><span data-contrast="auto">Azure also provides something no other cloud currently matches: Azure AI Search with hybrid search — combining traditional BM25 keyword matching, vector similarity, and a semantic ranker in a single query. For enterprise content (policies, documentation, technical specs), this hybrid approach consistently outperforms pure vector search.</span></p>
<blockquote><p><span class="TextRun SCXW125859040 BCX0" lang="EN-US" xml:lang="EN-US" data-contrast="none"><span class="NormalTextRun SCXW125859040 BCX0">A</span><span class="NormalTextRun SCXW125859040 BCX0">zure</span><span class="NormalTextRun SCXW125859040 BCX0"> AI Search&#8217;s semantic ranker uses a cross-encoder model to re-rank results after </span><span class="NormalTextRun SCXW125859040 BCX0">initial</span><span class="NormalTextRun SCXW125859040 BCX0"> retrieval — dramatically improving precision for complex, multi-concept queries.</span></span></p></blockquote>
<p><b><span data-contrast="none">Azure Services at a Glance</span></b><span data-ccp-props="{&quot;335559738&quot;:400,&quot;335559739&quot;:200}"> </span></p>
<table data-tablestyle="MsoNormalTable" data-tablelook="0">
<tbody>
<tr>
<td data-celllook="69905"><b><span data-contrast="none">Requirement</span></b><span data-ccp-props="{&quot;335559738&quot;:60,&quot;335559739&quot;:60}"> </span></td>
<td data-celllook="69905"><b><span data-contrast="none">Azure Service</span></b><span data-ccp-props="{&quot;335559738&quot;:60,&quot;335559739&quot;:60}"> </span></td>
<td data-celllook="69905"><b><span data-contrast="none">Notes</span></b><span data-ccp-props="{&quot;335559738&quot;:60,&quot;335559739&quot;:60}"> </span></td>
</tr>
<tr>
<td data-celllook="69905"><span data-contrast="auto">LLM</span><span data-ccp-props="{&quot;335559738&quot;:60,&quot;335559739&quot;:60}"> </span></td>
<td data-celllook="69905"><span data-contrast="auto">Azure OpenAI — GPT-4o</span><span data-ccp-props="{&quot;335559738&quot;:60,&quot;335559739&quot;:60}"> </span></td>
<td data-celllook="69905"><span data-contrast="auto">Latest model, 128k context window</span><span data-ccp-props="{&quot;335559738&quot;:60,&quot;335559739&quot;:60}"> </span></td>
</tr>
<tr>
<td data-celllook="69905"><span data-contrast="auto">Embeddings</span><span data-ccp-props="{&quot;335559738&quot;:60,&quot;335559739&quot;:60}"> </span></td>
<td data-celllook="69905"><span data-contrast="auto">text-embedding-3-small</span><span data-ccp-props="{&quot;335559738&quot;:60,&quot;335559739&quot;:60}"> </span></td>
<td data-celllook="69905"><span data-contrast="auto">1536 dimensions, best cost/quality ratio</span><span data-ccp-props="{&quot;335559738&quot;:60,&quot;335559739&quot;:60}"> </span></td>
</tr>
<tr>
<td data-celllook="69905"><span data-contrast="auto">Vector Database</span><span data-ccp-props="{&quot;335559738&quot;:60,&quot;335559739&quot;:60}"> </span></td>
<td data-celllook="69905"><span data-contrast="auto">Azure AI Search</span><span data-ccp-props="{&quot;335559738&quot;:60,&quot;335559739&quot;:60}"> </span></td>
<td data-celllook="69905"><span data-contrast="auto">Hybrid: BM25 + Vector + Semantic Ranker</span><span data-ccp-props="{&quot;335559738&quot;:60,&quot;335559739&quot;:60}"> </span></td>
</tr>
<tr>
<td data-celllook="69905"><span data-contrast="auto">Storage</span><span data-ccp-props="{&quot;335559738&quot;:60,&quot;335559739&quot;:60}"> </span></td>
<td data-celllook="69905"><span data-contrast="auto">Azure Blob Storage</span><span data-ccp-props="{&quot;335559738&quot;:60,&quot;335559739&quot;:60}"> </span></td>
<td data-celllook="69905"><span data-contrast="auto">Source documents staged here</span><span data-ccp-props="{&quot;335559738&quot;:60,&quot;335559739&quot;:60}"> </span></td>
</tr>
<tr>
<td data-celllook="69905"><span data-contrast="auto">Compute / Workflow</span><span data-ccp-props="{&quot;335559738&quot;:60,&quot;335559739&quot;:60}"> </span></td>
<td data-celllook="69905"><span data-contrast="auto">Azure Functions (Python)</span><span data-ccp-props="{&quot;335559738&quot;:60,&quot;335559739&quot;:60}"> </span></td>
<td data-celllook="69905"><span data-contrast="auto">Serverless, event-driven processing</span><span data-ccp-props="{&quot;335559738&quot;:60,&quot;335559739&quot;:60}"> </span></td>
</tr>
<tr>
<td data-celllook="69905"><span data-contrast="auto">CI/CD</span><span data-ccp-props="{&quot;335559738&quot;:60,&quot;335559739&quot;:60}"> </span></td>
<td data-celllook="69905"><span data-contrast="auto">Azure DevOps (ADO)</span><span data-ccp-props="{&quot;335559738&quot;:60,&quot;335559739&quot;:60}"> </span></td>
<td data-celllook="69905"><span data-contrast="auto">Pipelines, Repos, Boards — all integrated</span><span data-ccp-props="{&quot;335559738&quot;:60,&quot;335559739&quot;:60}"> </span></td>
</tr>
<tr>
<td data-celllook="69905"><span data-contrast="auto">Monitoring</span><span data-ccp-props="{&quot;335559738&quot;:60,&quot;335559739&quot;:60}"> </span></td>
<td data-celllook="69905"><span data-contrast="auto">Application Insights</span><span data-ccp-props="{&quot;335559738&quot;:60,&quot;335559739&quot;:60}"> </span></td>
<td data-celllook="69905"><span data-contrast="auto">Latency, errors, usage telemetry</span><span data-ccp-props="{&quot;335559738&quot;:60,&quot;335559739&quot;:60}"> </span></td>
</tr>
<tr>
<td data-celllook="69905"><span data-contrast="auto">Secrets Management</span><span data-ccp-props="{&quot;335559738&quot;:60,&quot;335559739&quot;:60}"> </span></td>
<td data-celllook="69905"><span data-contrast="auto">Azure Key Vault</span><span data-ccp-props="{&quot;335559738&quot;:60,&quot;335559739&quot;:60}"> </span></td>
<td data-celllook="69905"><span data-contrast="auto">API keys, connection strings, tokens</span><span data-ccp-props="{&quot;335559738&quot;:60,&quot;335559739&quot;:60}"> </span></td>
</tr>
</tbody>
</table>
<h2><b><span data-contrast="none">The Azure RAG Architecture — Step by Step</span></b><span data-ccp-props="{&quot;335559738&quot;:400,&quot;335559739&quot;:200}"> </span></h2>
<h3><b><span data-contrast="none">Data Ingestion Flow</span></b><span data-ccp-props="{&quot;335559738&quot;:220,&quot;335559739&quot;:100}"> </span></h3>
<ul>
<li><span data-contrast="auto">Documents uploaded to Azure Blob Storage trigger an Azure Function automatically</span><span data-ccp-props="{&quot;335559738&quot;:60,&quot;335559739&quot;:60}"> </span></li>
<li><span data-contrast="auto">The Function extracts text using PyMuPDF (PDFs), python-docx (Word), or Graph API (SharePoint)</span><span data-ccp-props="{&quot;335559738&quot;:60,&quot;335559739&quot;:60}"> </span></li>
<li><span data-contrast="auto">Text is cleaned, normalized, and split into 512-token chunks with 50-token overlap</span><span data-ccp-props="{&quot;335559738&quot;:60,&quot;335559739&quot;:60}"> </span></li>
<li><span data-contrast="auto">Each chunk is sent to Azure OpenAI text-embedding-3-small — returns a 1536-dim vector</span><span data-ccp-props="{&quot;335559738&quot;:60,&quot;335559739&quot;:60}"> </span></li>
<li><span data-contrast="auto">Chunk text + vector + metadata (source, page, date) is upserted into Azure AI Search index</span><span data-ccp-props="{&quot;335559738&quot;:60,&quot;335559739&quot;:60}"> </span></li>
</ul>
<h3><b><span data-contrast="none">Query Flow (Every User Question)</span></b><span data-ccp-props="{&quot;335559738&quot;:220,&quot;335559739&quot;:100}"> </span></h3>
<ul>
<li><span data-contrast="auto">User submits a question through the RAG application (web app, Teams bot, or API)</span><span data-ccp-props="{&quot;335559738&quot;:60,&quot;335559739&quot;:60}"> </span></li>
<li><span data-contrast="auto">Question is embedded using the same text-embedding-3-small model</span><span data-ccp-props="{&quot;335559738&quot;:60,&quot;335559739&quot;:60}"> </span></li>
<li><span data-contrast="auto">Azure AI Search runs a hybrid query: BM25 keyword match + vector similarity + semantic reranker</span><span data-ccp-props="{&quot;335559738&quot;:60,&quot;335559739&quot;:60}"> </span></li>
<li><span data-contrast="auto">Top 5 most relevant chunks are returned with their source metadata</span><span data-ccp-props="{&quot;335559738&quot;:60,&quot;335559739&quot;:60}"> </span></li>
<li><span data-contrast="auto">Chunks are injected into a structured prompt and sent to Azure OpenAI GPT-4o</span><span data-ccp-props="{&quot;335559738&quot;:60,&quot;335559739&quot;:60}"> </span></li>
<li><span data-contrast="auto">GPT-4o generates a grounded answer — constrained to the retrieved context only</span><span data-ccp-props="{&quot;335559738&quot;:60,&quot;335559739&quot;:60}"> </span></li>
<li><span data-contrast="auto">Answer is returned to the user with source citations</span><span data-ccp-props="{&quot;335559738&quot;:60,&quot;335559739&quot;:60}"> </span></li>
</ul>
<blockquote><p><span class="TextRun SCXW249187617 BCX0" lang="EN-US" xml:lang="EN-US" data-contrast="none"><span class="NormalTextRun ContextualSpellingAndGrammarErrorV2Themed SCXW249187617 BCX0">Always</span><span class="NormalTextRun SCXW249187617 BCX0"> instruct </span><span class="NormalTextRun SCXW249187617 BCX0">LLM</span><span class="NormalTextRun SCXW249187617 BCX0"> to answer ONLY from the provided context and to say &#8216;I don&#8217;t have that information&#8217; when the context </span><span class="NormalTextRun SCXW249187617 BCX0">doesn&#8217;t</span> <span class="NormalTextRun SCXW249187617 BCX0">contain</span><span class="NormalTextRun SCXW249187617 BCX0"> the answer</span><span class="NormalTextRun SCXW249187617 BCX0">.  </span><span class="NormalTextRun SCXW249187617 BCX0">This keeps responses grounded in verified source material and reduces unsupported AI-generated content.</span></span></p></blockquote>
<h2><b><span data-contrast="none">Azure AI Search — Why Hybrid Mode Is Critical</span></b><span data-ccp-props="{&quot;335559685&quot;:431,&quot;335559738&quot;:100,&quot;335559739&quot;:100}"> </span></h2>
<p><span data-contrast="auto">Pure vector search is powerful, but it has a known weakness: exact keyword matching. If a user types an exact product code like &#8216;PRD-2024-XA7&#8217;, vector search may not surface the right document because the embedding captures semantic meaning — not exact strings.</span> <span data-contrast="auto">Azure AI Search solves this with hybrid mode:</span></p>
<table data-tablestyle="MsoNormalTable" data-tablelook="0">
<tbody>
<tr>
<td data-celllook="69905"><b><span data-contrast="none">Search Mode</span></b><span data-ccp-props="{&quot;335559738&quot;:60,&quot;335559739&quot;:60}"> </span></td>
<td data-celllook="69905"><b><span data-contrast="none">Strengths</span></b><span data-ccp-props="{&quot;335559738&quot;:60,&quot;335559739&quot;:60}"> </span></td>
<td data-celllook="69905"><b><span data-contrast="none">Weaknesses</span></b><span data-ccp-props="{&quot;335559738&quot;:60,&quot;335559739&quot;:60}"> </span></td>
</tr>
<tr>
<td data-celllook="69905"><span data-contrast="auto">BM25 Keyword</span><span data-ccp-props="{&quot;335559738&quot;:60,&quot;335559739&quot;:60}"> </span></td>
<td data-celllook="69905"><span data-contrast="auto">Exact term matching, product codes, IDs</span><span data-ccp-props="{&quot;335559738&quot;:60,&quot;335559739&quot;:60}"> </span></td>
<td data-celllook="69905"><span data-contrast="auto">No semantic understanding</span><span data-ccp-props="{&quot;335559738&quot;:60,&quot;335559739&quot;:60}"> </span></td>
</tr>
<tr>
<td data-celllook="69905"><span data-contrast="auto">Vector Search</span><span data-ccp-props="{&quot;335559738&quot;:60,&quot;335559739&quot;:60}"> </span></td>
<td data-celllook="69905"><span data-contrast="auto">Semantic similarity, paraphrasing, intent</span><span data-ccp-props="{&quot;335559738&quot;:60,&quot;335559739&quot;:60}"> </span></td>
<td data-celllook="69905"><span data-contrast="auto">Poor exact string matching</span><span data-ccp-props="{&quot;335559738&quot;:60,&quot;335559739&quot;:60}"> </span></td>
</tr>
<tr>
<td data-celllook="69905"><span data-contrast="auto">Hybrid (BM25 + Vector)</span><span data-ccp-props="{&quot;335559738&quot;:60,&quot;335559739&quot;:60}"> </span></td>
<td data-celllook="69905"><span data-contrast="auto">Best of both worlds — semantic + exact</span><span data-ccp-props="{&quot;335559738&quot;:60,&quot;335559739&quot;:60}"> </span></td>
<td data-celllook="69905"><span data-contrast="auto">Slightly higher latency</span><span data-ccp-props="{&quot;335559738&quot;:60,&quot;335559739&quot;:60}"> </span></td>
</tr>
<tr>
<td data-celllook="69905"><span data-contrast="auto">+ Semantic Ranker</span><span data-ccp-props="{&quot;335559738&quot;:60,&quot;335559739&quot;:60}"> </span></td>
<td data-celllook="69905"><span data-contrast="auto">Re-ranks results with deep learning cross-encoder</span><span data-ccp-props="{&quot;335559738&quot;:60,&quot;335559739&quot;:60}"> </span></td>
<td data-celllook="69905"><span data-contrast="auto">Additional cost per query</span><span data-ccp-props="{&quot;335559738&quot;:60,&quot;335559739&quot;:60}"> </span></td>
</tr>
</tbody>
</table>
<p><span class="TextRun SCXW210519792 BCX0" lang="EN-US" xml:lang="EN-US" data-contrast="auto"><span class="NormalTextRun SCXW210519792 BCX0">For enterprise use cases — especially HR policies, compliance documents, and technical specs — always enable hybrid mode with the semantic ranker.</span></span><span class="EOP Selected SCXW210519792 BCX0" data-ccp-props="{&quot;335559738&quot;:80,&quot;335559739&quot;:80}"> </span></p>
<h2><b><span data-contrast="none">Azure DevOps CI/CD Pipeline for RAG</span></b><span data-ccp-props="{&quot;335559738&quot;:400,&quot;335559739&quot;:200}"> </span></h2>
<p><span data-contrast="auto">A production RAG system needs automated testing on every code change. Here is the complete Azure DevOps pipeline:</span><span data-ccp-props="{&quot;335559738&quot;:80,&quot;335559739&quot;:80}"> </span></p>
<table data-tablestyle="MsoNormalTable" data-tablelook="0">
<tbody>
<tr>
<td data-celllook="69905"><b><span data-contrast="none">Pipeline Stage</span></b><span data-ccp-props="{&quot;335559738&quot;:60,&quot;335559739&quot;:60}"> </span></td>
<td data-celllook="69905"><b><span data-contrast="none">What Runs</span></b><span data-ccp-props="{&quot;335559738&quot;:60,&quot;335559739&quot;:60}"> </span></td>
<td data-celllook="69905"><b><span data-contrast="none">Pass Criteria</span></b><span data-ccp-props="{&quot;335559738&quot;:60,&quot;335559739&quot;:60}"> </span></td>
</tr>
<tr>
<td data-celllook="69905"><span data-contrast="auto">Stage 1: Unit Tests</span><span data-ccp-props="{&quot;335559738&quot;:60,&quot;335559739&quot;:60}"> </span></td>
<td data-celllook="69905"><span data-contrast="auto">PyTest — chunking logic, extractor functions, prompt templates</span><span data-ccp-props="{&quot;335559738&quot;:60,&quot;335559739&quot;:60}"> </span></td>
<td data-celllook="69905"><span data-contrast="auto">All tests green</span><span data-ccp-props="{&quot;335559738&quot;:60,&quot;335559739&quot;:60}"> </span></td>
</tr>
<tr>
<td data-celllook="69905"><span data-contrast="auto">Stage 2: Embedding Validation</span><span data-ccp-props="{&quot;335559738&quot;:60,&quot;335559739&quot;:60}"> </span></td>
<td data-celllook="69905"><span data-contrast="auto">Verify 1536 dimensions, similarity scores &gt; 0.80 for related chunks</span><span data-ccp-props="{&quot;335559738&quot;:60,&quot;335559739&quot;:60}"> </span></td>
<td data-celllook="69905"><span data-contrast="auto">Dimensions correct, scores pass</span><span data-ccp-props="{&quot;335559738&quot;:60,&quot;335559739&quot;:60}"> </span></td>
</tr>
<tr>
<td data-celllook="69905"><span data-contrast="auto">Stage 3: Integration Tests</span><span data-ccp-props="{&quot;335559738&quot;:60,&quot;335559739&quot;:60}"> </span></td>
<td data-celllook="69905"><span data-contrast="auto">Azure AI Search connectivity, Azure OpenAI API health</span><span data-ccp-props="{&quot;335559738&quot;:60,&quot;335559739&quot;:60}"> </span></td>
<td data-celllook="69905"><span data-contrast="auto">All connections healthy</span><span data-ccp-props="{&quot;335559738&quot;:60,&quot;335559739&quot;:60}"> </span></td>
</tr>
<tr>
<td data-celllook="69905"><span data-contrast="auto">Stage 4: RAGAS Evaluation</span><span data-ccp-props="{&quot;335559738&quot;:60,&quot;335559739&quot;:60}"> </span></td>
<td data-celllook="69905"><span data-contrast="auto">Context Precision, Context Recall, Faithfulness, Answer Relevance</span><span data-ccp-props="{&quot;335559738&quot;:60,&quot;335559739&quot;:60}"> </span></td>
<td data-celllook="69905"><span data-contrast="auto">All metrics ≥ threshold</span><span data-ccp-props="{&quot;335559738&quot;:60,&quot;335559739&quot;:60}"> </span></td>
</tr>
<tr>
<td data-celllook="69905"><span data-contrast="auto">Stage 5: Prompt Regression</span><span data-ccp-props="{&quot;335559738&quot;:60,&quot;335559739&quot;:60}"> </span></td>
<td data-celllook="69905"><span data-contrast="auto">PromptFoo — test 50+ golden Q&amp;A pairs against baseline</span><span data-ccp-props="{&quot;335559738&quot;:60,&quot;335559739&quot;:60}"> </span></td>
<td data-celllook="69905"><span data-contrast="auto">No degradation detected</span><span data-ccp-props="{&quot;335559738&quot;:60,&quot;335559739&quot;:60}"> </span></td>
</tr>
<tr>
<td data-celllook="69905"><span data-contrast="auto">Stage 6: Security Tests</span><span data-ccp-props="{&quot;335559738&quot;:60,&quot;335559739&quot;:60}"> </span></td>
<td data-celllook="69905"><span data-contrast="auto">Prompt injection, PII leakage, OWASP LLM Top 10</span><span data-ccp-props="{&quot;335559738&quot;:60,&quot;335559739&quot;:60}"> </span></td>
<td data-celllook="69905"><span data-contrast="auto">Zero critical findings</span><span data-ccp-props="{&quot;335559738&quot;:60,&quot;335559739&quot;:60}"> </span></td>
</tr>
<tr>
<td data-celllook="69905"><span data-contrast="auto">Stage 7: Deploy</span><span data-ccp-props="{&quot;335559738&quot;:60,&quot;335559739&quot;:60}"> </span></td>
<td data-celllook="69905"><span data-contrast="auto">Blue/Green to Azure Container Apps or App Service</span><span data-ccp-props="{&quot;335559738&quot;:60,&quot;335559739&quot;:60}"> </span></td>
<td data-celllook="69905"><span data-contrast="auto">Smoke tests pass</span><span data-ccp-props="{&quot;335559738&quot;:60,&quot;335559739&quot;:60}"> </span></td>
</tr>
</tbody>
</table>
<h3><b><span data-contrast="none">RAGAS Thresholds for the Azure Pipeline</span></b><span data-ccp-props="{&quot;335559738&quot;:220,&quot;335559739&quot;:100}"> </span></h3>
<table data-tablestyle="MsoNormalTable" data-tablelook="0">
<tbody>
<tr>
<td data-celllook="69905"><b><span data-contrast="none">RAGAS Metric</span></b><span data-ccp-props="{&quot;335559738&quot;:60,&quot;335559739&quot;:60}"> </span></td>
<td data-celllook="69905"><b><span data-contrast="none">Minimum Threshold</span></b><span data-ccp-props="{&quot;335559738&quot;:60,&quot;335559739&quot;:60}"> </span></td>
<td data-celllook="69905"><b><span data-contrast="none">What It Measures</span></b><span data-ccp-props="{&quot;335559738&quot;:60,&quot;335559739&quot;:60}"> </span></td>
</tr>
<tr>
<td data-celllook="69905"><span data-contrast="auto">Context Precision</span><span data-ccp-props="{&quot;335559738&quot;:60,&quot;335559739&quot;:60}"> </span></td>
<td data-celllook="69905"><span data-contrast="auto">≥ 0.80</span><span data-ccp-props="{&quot;335559738&quot;:60,&quot;335559739&quot;:60}"> </span></td>
<td data-celllook="69905"><span data-contrast="auto">Are retrieved chunks actually relevant to the question?</span><span data-ccp-props="{&quot;335559738&quot;:60,&quot;335559739&quot;:60}"> </span></td>
</tr>
<tr>
<td data-celllook="69905"><span data-contrast="auto">Context Recall</span><span data-ccp-props="{&quot;335559738&quot;:60,&quot;335559739&quot;:60}"> </span></td>
<td data-celllook="69905"><span data-contrast="auto">≥ 0.75</span><span data-ccp-props="{&quot;335559738&quot;:60,&quot;335559739&quot;:60}"> </span></td>
<td data-celllook="69905"><span data-contrast="auto">Were all necessary facts retrieved from the knowledge base?</span><span data-ccp-props="{&quot;335559738&quot;:60,&quot;335559739&quot;:60}"> </span></td>
</tr>
<tr>
<td data-celllook="69905"><span data-contrast="auto">Faithfulness</span><span data-ccp-props="{&quot;335559738&quot;:60,&quot;335559739&quot;:60}"> </span></td>
<td data-celllook="69905"><span data-contrast="auto">≥ 0.85</span><span data-ccp-props="{&quot;335559738&quot;:60,&quot;335559739&quot;:60}"> </span></td>
<td data-celllook="69905"><span data-contrast="auto">Is the LLM answer grounded in context only? (Hallucination score)</span><span data-ccp-props="{&quot;335559738&quot;:60,&quot;335559739&quot;:60}"> </span></td>
</tr>
<tr>
<td data-celllook="69905"><span data-contrast="auto">Answer Relevance</span><span data-ccp-props="{&quot;335559738&quot;:60,&quot;335559739&quot;:60}"> </span></td>
<td data-celllook="69905"><span data-contrast="auto">≥ 0.80</span><span data-ccp-props="{&quot;335559738&quot;:60,&quot;335559739&quot;:60}"> </span></td>
<td data-celllook="69905"><span data-contrast="auto">Does the answer actually address what was asked?</span><span data-ccp-props="{&quot;335559738&quot;:60,&quot;335559739&quot;:60}"> </span></td>
</tr>
</tbody>
</table>
<blockquote><p>If any RAGAS metric falls below threshold, the pipeline fails and the deployment is blocked. This is your automated quality gate for every release.</p></blockquote>
<h2><b><span data-contrast="none">Security Considerations on Azure</span></b><span data-ccp-props="{&quot;335559738&quot;:400,&quot;335559739&quot;:200}"> </span></h2>
<p><span data-contrast="auto">Azure provides a mature security stack for RAG systems:</span><span data-ccp-props="{&quot;335559738&quot;:80,&quot;335559739&quot;:80}"> </span></p>
<ul>
<li><span data-contrast="auto">Azure Key Vault — store all API keys, connection strings, secrets — never in code or config files</span><span data-ccp-props="{&quot;335559738&quot;:60,&quot;335559739&quot;:60}"> </span></li>
<li><span data-contrast="auto">Azure AD (Entra ID) — use Managed Identity for Function-to-Service authentication — no credentials needed</span><span data-ccp-props="{&quot;335559738&quot;:60,&quot;335559739&quot;:60}"> </span></li>
<li><span data-contrast="auto">Azure AI Search — role-based access control via Azure RBAC — restrict who can query which indexes</span><span data-ccp-props="{&quot;335559738&quot;:60,&quot;335559739&quot;:60}"> </span></li>
<li><span data-contrast="auto">Private Endpoints — keep all service communication inside your VNet — no public internet exposure</span><span data-ccp-props="{&quot;335559738&quot;:60,&quot;335559739&quot;:60}"> </span></li>
<li><span data-contrast="auto">Azure Defender for AI — detect anomalous query patterns, prompt injection attempts</span><span data-ccp-props="{&quot;335559738&quot;:60,&quot;335559739&quot;:60}"> </span></li>
</ul>
<p><b><span data-contrast="auto">Managed Identity over API Keys: </span></b><span data-contrast="auto">Configure Azure Functions to authenticate to Azure OpenAI and Azure AI Search via Managed Identity. This eliminates credential rotation risk entirely.</span><span data-ccp-props="{&quot;335559738&quot;:80,&quot;335559739&quot;:80}"> </span></p>
<p><b><i><span data-contrast="none"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/27a1.png" alt="➡" class="wp-smiley" style="height: 1em; max-height: 1em;" />  In Part 4, we compare building RAG on AWS Bedrock vs Oracle Cloud Infrastructure — two very different approaches with distinct trade-offs for enterprise teams.</span></i></b><span data-ccp-props="{&quot;335559738&quot;:200,&quot;335559739&quot;:80}"> </span></p>
<p>The post <a href="https://blogs.perficient.com/building-enterprise-rag-on-azure-gpt-4o-azure-ai-search-azure-devops-end-to-end/">Building Enterprise RAG on Azure: GPT-4o + Azure AI Search + Azure DevOps — End to End</a> appeared first on <a href="https://blogs.perficient.com">Perficient Blogs</a>.</p>
]]></content:encoded>
					
		
		
			<media:content medium="image" url="https://blogs.perficient.com/wp-content/uploads/2026/08/iStock-2157036615-2-1-1024x576.jpg"/>
<post-id xmlns="com-wordpress:feed-additions:1">392270</post-id>	</item>
		<item>
		<title>Evaluating a RAG Pipeline Using Ragas</title>
		<link>https://blogs.perficient.com/evaluating-a-rag-pipeline-using-ragas/</link>
		
		<dc:creator><![CDATA[Spandana Vanamala]]></dc:creator>
		<pubDate>Sun, 23 Aug 2026 17:22:56 +0000</pubDate>
				<category><![CDATA[Technical Expertise]]></category>
		<guid isPermaLink="false">https://blogs.perficient.com/?p=392279</guid>

					<description><![CDATA[<p>What is RAG? RAG (Retrieval-Augmented Generation) is a technique that combines information retrieval with a Large Language Model (LLM) instead of asking an LLM to&#8230;</p>
<p>The post <a href="https://blogs.perficient.com/evaluating-a-rag-pipeline-using-ragas/">Evaluating a RAG Pipeline Using Ragas</a> appeared first on <a href="https://blogs.perficient.com">Perficient Blogs</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>What is RAG?</h2>
<p>RAG (Retrieval-Augmented Generation) is a technique that combines information retrieval with a Large Language Model (LLM) instead of asking an LLM to answer a question only from pretrained knowledge, RAG first retrieves relevant information from specific knowledge sources, the retrieved information is then provided to the LLM as context, which helps the LLM generate a more relevant and grounded answer.</p>
<p>Typical RAG flow:</p>
<p>User Question → Retrieve Relevant Chunks → Provide Context to LLM → Generate Answer</p>
<h2>Why Do We Need RAG Evaluation?</h2>
<p>Building RAG pipeline does not automatically guarantee that it will produce correct answers. There can be problems at different stages of the pipeline.</p>
<p><strong>For example:</strong></p>
<p><strong>Problem 1</strong> – Poor Retrieval</p>
<p>The question may be:</p>
<p>&#8220;What is the work-from-home policy?&#8221;</p>
<p>But the retriever may return chunks about leave policy instead.</p>
<p>The LLM now has incorrect or irrelevant context.</p>
<p><strong>Problem 2</strong> – Missing Information</p>
<p>The correct document may contain the answer, but the retrieval process may fail to retrieve the required chunk.</p>
<p>In this case, LLM may not have enough information to provide the correct answer.</p>
<p><strong>Problem 3</strong> – Unsupported Answer</p>
<p>The retrieved context may contain the correct information, but the LLM may generate an answer that includes information that isn&#8217;t present in the context.</p>
<p>This is commonly referred to as hallucination or lack of grounding.</p>
<p><strong>Problem 4</strong> – Irrelevant Answer</p>
<p>The retrieved context may be correct, and the answer may contain information, but it may not actually answer the user&#8217;s question.</p>
<p>Therefore, simply checking the final response manually isn&#8217;t enough.</p>
<p>We need a systematic way to evaluate different aspects of the RAG pipeline.</p>
<h2>What is Ragas?</h2>
<p>Ragas is an open-source framework for evaluating LLM applications, with strong support for Retrieval-Augmented Generation (RAG) pipelines.</p>
<p>Ragas provides evaluation metrics that help measure different aspects of a RAG system.</p>
<p>Instead of simply asking:</p>
<p>&#8220;Is this answer good?&#8221;</p>
<p>We can evaluate questions such as:</p>
<ul>
<li>Did we retrieve the right information?</li>
<li>Did we retrieve enough relevant information?</li>
<li>Is the generated answer supported by the retrieved context?</li>
<li>Does the answer address the user&#8217;s question?</li>
</ul>
<p>This allows us to identify where the RAG pipeline is performing well and where it needs improvement.</p>
<h2>What We Are Going to Build</h2>
<p>In this blog, we will use a PDF as the knowledge source. We will generate synthetic test data from the PDF using Ragas, run each generated question through the RAG pipeline, and use an LLM as a judge to evaluate the results.</p>
<p>We will evaluate four metrics: Answer Relevancy, Faithfulness, Context Precision, and Context Recall.</p>
<p>The overall flow is simple:</p>
<p>PDF →  Load PDF →  Chunk PDF →  Generate Test Data using Ragas  →  Run each question through RAG  →  LLM as Judge  →  Evaluation</p>
<h3>1. Install the Required Packages</h3>
<p>First, install the libraries required for this example.</p>
<p>pip install -U ragas langchain langchain-community langchain-openai langchain-text-splitters pypdf faiss-cpu python-dotenv</p>
<h3>2. Load the PDF</h3>
<p>Let&#8217;s assume our input document is called employee_handbook.pdf.<br />
We first load the PDF using PyPDFLoader.</p>
<p><img loading="lazy" decoding="async" data-attachment-id="392281" data-permalink="https://blogs.perficient.com/evaluating-a-rag-pipeline-using-ragas/ragas1/" data-orig-file="https://blogs.perficient.com/wp-content/uploads/2026/08/ragas1.png" data-orig-size="826,178" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;,&quot;alt&quot;:&quot;&quot;}" data-image-title="Ragas1" data-image-description="" data-image-caption="" data-large-file="https://blogs.perficient.com/wp-content/uploads/2026/08/ragas1.png" class="alignnone wp-image-392281 size-full" src="https://blogs.perficient.com/wp-content/uploads/2026/08/ragas1.png" alt="Ragas1" width="826" height="178" srcset="https://blogs.perficient.com/wp-content/uploads/2026/08/ragas1.png 826w, https://blogs.perficient.com/wp-content/uploads/2026/08/ragas1-300x65.png 300w, https://blogs.perficient.com/wp-content/uploads/2026/08/ragas1-768x166.png 768w" sizes="auto, (max-width: 826px) 100vw, 826px" /></p>
<h3>3. Chunk the PDF</h3>
<p>A PDF can contain a lot of information. We split it into smaller chunks so that the RAG application can retrieve the relevant information when a question is asked.</p>
<p><img loading="lazy" decoding="async" data-attachment-id="392282" data-permalink="https://blogs.perficient.com/evaluating-a-rag-pipeline-using-ragas/ragas2/" data-orig-file="https://blogs.perficient.com/wp-content/uploads/2026/08/ragas2.png" data-orig-size="864,251" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;,&quot;alt&quot;:&quot;&quot;}" data-image-title="Ragas2" data-image-description="" data-image-caption="" data-large-file="https://blogs.perficient.com/wp-content/uploads/2026/08/ragas2.png" class="alignnone wp-image-392282 size-full" src="https://blogs.perficient.com/wp-content/uploads/2026/08/ragas2.png" alt="Ragas2" width="864" height="251" srcset="https://blogs.perficient.com/wp-content/uploads/2026/08/ragas2.png 864w, https://blogs.perficient.com/wp-content/uploads/2026/08/ragas2-300x87.png 300w, https://blogs.perficient.com/wp-content/uploads/2026/08/ragas2-768x223.png 768w" sizes="auto, (max-width: 864px) 100vw, 864px" /></p>
<h3>4. Create the RAG Retriever</h3>
<p>For our simple example, we create embeddings for the chunks and store them in FAISS (can use any vector DB here). The retriever will use this store to find relevant chunks for each question.</p>
<p><img loading="lazy" decoding="async" data-attachment-id="392283" data-permalink="https://blogs.perficient.com/evaluating-a-rag-pipeline-using-ragas/ragas3/" data-orig-file="https://blogs.perficient.com/wp-content/uploads/2026/08/ragas3.png" data-orig-size="862,331" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;,&quot;alt&quot;:&quot;&quot;}" data-image-title="Ragas3" data-image-description="" data-image-caption="" data-large-file="https://blogs.perficient.com/wp-content/uploads/2026/08/ragas3.png" class="alignnone wp-image-392283 size-full" src="https://blogs.perficient.com/wp-content/uploads/2026/08/ragas3.png" alt="Ragas3" width="862" height="331" srcset="https://blogs.perficient.com/wp-content/uploads/2026/08/ragas3.png 862w, https://blogs.perficient.com/wp-content/uploads/2026/08/ragas3-300x115.png 300w, https://blogs.perficient.com/wp-content/uploads/2026/08/ragas3-768x295.png 768w" sizes="auto, (max-width: 862px) 100vw, 862px" /></p>
<h3>5. Generate Test Data Using Ragas</h3>
<p>This is one of the useful parts of Ragas.</p>
<p>Instead of manually creating questions from the PDF, Ragas can generate synthetic test data based on the document content.</p>
<p>For example, Ragas can generate questions such as:<br />
• What is the leave policy?<br />
• How many vacation days are available?<br />
• Who approves a leave request?</p>
<p>This gives us a test dataset that can be used to test our RAG pipeline.</p>
<p><img loading="lazy" decoding="async" data-attachment-id="392284" data-permalink="https://blogs.perficient.com/evaluating-a-rag-pipeline-using-ragas/ragas4/" data-orig-file="https://blogs.perficient.com/wp-content/uploads/2026/08/ragas4.png" data-orig-size="864,429" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;,&quot;alt&quot;:&quot;&quot;}" data-image-title="Ragas4" data-image-description="" data-image-caption="" data-large-file="https://blogs.perficient.com/wp-content/uploads/2026/08/ragas4.png" class="alignnone wp-image-392284 size-full" src="https://blogs.perficient.com/wp-content/uploads/2026/08/ragas4.png" alt="Ragas4" width="864" height="429" srcset="https://blogs.perficient.com/wp-content/uploads/2026/08/ragas4.png 864w, https://blogs.perficient.com/wp-content/uploads/2026/08/ragas4-300x149.png 300w, https://blogs.perficient.com/wp-content/uploads/2026/08/ragas4-768x381.png 768w" sizes="auto, (max-width: 864px) 100vw, 864px" /></p>
<h3>6. Run Each Question Through the RAG Pipeline</h3>
<p>Now we take each generated question and send it to our actual RAG application.</p>
<p>The RAG application retrieves relevant chunks and uses an LLM to generate the answer.</p>
<p><img loading="lazy" decoding="async" data-attachment-id="392285" data-permalink="https://blogs.perficient.com/evaluating-a-rag-pipeline-using-ragas/ragas5/" data-orig-file="https://blogs.perficient.com/wp-content/uploads/2026/08/ragas5.png" data-orig-size="864,622" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;,&quot;alt&quot;:&quot;&quot;}" data-image-title="Ragas5" data-image-description="" data-image-caption="" data-large-file="https://blogs.perficient.com/wp-content/uploads/2026/08/ragas5.png" class="alignnone wp-image-392285 size-full" src="https://blogs.perficient.com/wp-content/uploads/2026/08/ragas5.png" alt="Ragas5" width="864" height="622" srcset="https://blogs.perficient.com/wp-content/uploads/2026/08/ragas5.png 864w, https://blogs.perficient.com/wp-content/uploads/2026/08/ragas5-300x216.png 300w, https://blogs.perficient.com/wp-content/uploads/2026/08/ragas5-768x553.png 768w" sizes="auto, (max-width: 864px) 100vw, 864px" /></p>
<p>For each test question, we collect three important things:</p>
<ul>
<li>The question</li>
<li>The generated answer</li>
<li>The retrieved context</li>
</ul>
<p><img loading="lazy" decoding="async" data-attachment-id="392286" data-permalink="https://blogs.perficient.com/evaluating-a-rag-pipeline-using-ragas/ragas6/" data-orig-file="https://blogs.perficient.com/wp-content/uploads/2026/08/ragas6.png" data-orig-size="864,519" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;,&quot;alt&quot;:&quot;&quot;}" data-image-title="Ragas6" data-image-description="" data-image-caption="" data-large-file="https://blogs.perficient.com/wp-content/uploads/2026/08/ragas6.png" class="alignnone wp-image-392286 size-full" src="https://blogs.perficient.com/wp-content/uploads/2026/08/ragas6.png" alt="Ragas6" width="864" height="519" srcset="https://blogs.perficient.com/wp-content/uploads/2026/08/ragas6.png 864w, https://blogs.perficient.com/wp-content/uploads/2026/08/ragas6-300x180.png 300w, https://blogs.perficient.com/wp-content/uploads/2026/08/ragas6-768x461.png 768w" sizes="auto, (max-width: 864px) 100vw, 864px" /></p>
<h3>7. Use an LLM as a Judge</h3>
<p>Now comes the evaluation part.</p>
<p>We use LLM as a judge. Its job is not to generate the RAG answer. Its job is to evaluate the answer produced by the RAG application.</p>
<p>The judge looks at the question, answer, retrieved context, and reference information as required by the metric.</p>
<p><img loading="lazy" decoding="async" data-attachment-id="392287" data-permalink="https://blogs.perficient.com/evaluating-a-rag-pipeline-using-ragas/ragas7/" data-orig-file="https://blogs.perficient.com/wp-content/uploads/2026/08/ragas7.png" data-orig-size="864,301" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;,&quot;alt&quot;:&quot;&quot;}" data-image-title="Ragas7" data-image-description="" data-image-caption="" data-large-file="https://blogs.perficient.com/wp-content/uploads/2026/08/ragas7.png" class="alignnone wp-image-392287 size-full" src="https://blogs.perficient.com/wp-content/uploads/2026/08/ragas7.png" alt="Ragas7" width="864" height="301" srcset="https://blogs.perficient.com/wp-content/uploads/2026/08/ragas7.png 864w, https://blogs.perficient.com/wp-content/uploads/2026/08/ragas7-300x105.png 300w, https://blogs.perficient.com/wp-content/uploads/2026/08/ragas7-768x268.png 768w" sizes="auto, (max-width: 864px) 100vw, 864px" /></p>
<p><img loading="lazy" decoding="async" data-attachment-id="392288" data-permalink="https://blogs.perficient.com/evaluating-a-rag-pipeline-using-ragas/ragas8/" data-orig-file="https://blogs.perficient.com/wp-content/uploads/2026/08/ragas8.png" data-orig-size="864,671" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;,&quot;alt&quot;:&quot;&quot;}" data-image-title="Ragas8" data-image-description="" data-image-caption="" data-large-file="https://blogs.perficient.com/wp-content/uploads/2026/08/ragas8.png" class="alignnone wp-image-392288 size-full" src="https://blogs.perficient.com/wp-content/uploads/2026/08/ragas8.png" alt="Ragas8" width="864" height="671" srcset="https://blogs.perficient.com/wp-content/uploads/2026/08/ragas8.png 864w, https://blogs.perficient.com/wp-content/uploads/2026/08/ragas8-300x233.png 300w, https://blogs.perficient.com/wp-content/uploads/2026/08/ragas8-768x596.png 768w" sizes="auto, (max-width: 864px) 100vw, 864px" /></p>
<h3>8. Evaluate the RAG Using Four Metrics</h3>
<p>To evaluate the RAG pipeline, we will use four metrics that assess the quality of retrieved context and generated answers.</p>
<p><strong>    1. Answer Relevancy</strong><br />
What does it measure? Does the generated answer directly address the user’s question?</p>
<p>Example:<br />
Question: How many vacation days are available?<br />
Relevant answer: Employees receive 20 vacation days per year.</p>
<p>If the answer talks about unrelated employee benefits instead, the answer is less relevant.</p>
<p>In simple → Did the answer address the question?</p>
<p><strong>    2. Faithfulness</strong><br />
What does it measure? Is the answer supported by the retrieved context?</p>
<p>If the retrieved context says employees receive 20 vacation days, but the RAG answer says 30 days, the answer is not supported by the context.</p>
<p>In simple → Did I answer using the retrieved information?</p>
<p><strong>    3. Context Precision</strong><br />
What does it measure? Did we retrieve relevant information?</p>
<p>For a question about leave policy, we want the retriever to return leave-policy information rather than unrelated information such as parking or IT security.</p>
<p>In simple → Did I retrieve relevant information?</p>
<p><strong>    4. Context Recall</strong><br />
What does it measure? Did we retrieve all the important information needed to answer the question?</p>
<p>If the answer needs information A, B, and C but the retriever only finds A and B, some important information is missing.</p>
<p>In simple → Did I retrieve all the important information?</p>
<h3>9. Understand the Results</h3>
<p>Suppose we get the following scores, we can understand them simply:</p>
<p>Answer Relevancy = 0.91 → The answers are mostly relevant to the questions.<br />
Faithfulness = 1.0 → The answers are mostly supported by the retrieved context.<br />
Context Precision = 1.0 → Most retrieved information is relevant.<br />
Context Recall = 0.5 → Some important information may not have been retrieved.</p>
<p>The actual pass/fail threshold should be decided based on the requirements of your application.</p>
<h3>Conclusion</h3>
<p>Without an evaluation framework, we may test an RAG application by asking a few questions and manually checking the answers. Ragas provides a simple way to evaluate a RAG application using measurable metrics.</p>
<h3>References</h3>
<p>Ragas Documentation: https://docs.ragas.io/<br />
Ragas Test Data Generation: https://docs.ragas.io/en/stable/concepts/test_data_generation/<br />
Ragas Evaluation: https://docs.ragas.io/en/latest/references/evaluate/</p>
<p>The post <a href="https://blogs.perficient.com/evaluating-a-rag-pipeline-using-ragas/">Evaluating a RAG Pipeline Using Ragas</a> appeared first on <a href="https://blogs.perficient.com">Perficient Blogs</a>.</p>
]]></content:encoded>
					
		
		
			<media:content medium="image" url="https://blogs.perficient.com/wp-content/uploads/2026/08/iCloud_Containers-1024x576.jpg"/>
<post-id xmlns="com-wordpress:feed-additions:1">392279</post-id>	</item>
	</channel>
</rss><!--
Performance optimized by W3 Total Cache. Learn more: https://www.boldgrid.com/w3-total-cache/?utm_source=w3tc&utm_medium=footer_comment&utm_campaign=free_plugin


Served from: blogs.perficient.com @ 2026-09-02 17:19:02 by W3 Total Cache
-->