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

<channel>
	<title>Matthew Manela</title>
	<atom:link href="https://matthewmanela.com/feed/" rel="self" type="application/rss+xml" />
	<link>https://matthewmanela.com/</link>
	<description>Building high quality software and teams</description>
	<lastBuildDate>Sun, 16 Nov 2025 18:51:40 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>
	<item>
		<title>Software Engineering Lessons from a Fern</title>
		<link>https://matthewmanela.com/blog/software-engineering-lessons-from-a-fern/</link>
		
		<dc:creator><![CDATA[Matthew Manela]]></dc:creator>
		<pubDate>Sun, 16 Nov 2025 18:51:39 +0000</pubDate>
				<category><![CDATA[Software Development]]></category>
		<category><![CDATA[biology]]></category>
		<category><![CDATA[complexity]]></category>
		<category><![CDATA[ferns]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[technical debt]]></category>
		<guid isPermaLink="false">https://matthewmanela.com/?p=3640</guid>

					<description><![CDATA[<p>Within the forests of New Caledonia grows Tmesipteris oblanceolata, an innocuous plant that easily escapes notice due to its small size. However, this fern possesses a remarkable secret: it contains the largest genome ever recorded with over 160 billion base pairs, more than 50 times the size of the human genome. Plus, it’s an octoploid <a class="read-more" href="https://matthewmanela.com/blog/software-engineering-lessons-from-a-fern/">&#8230;&#160;<span class="meta-nav">&#8594;</span></a></p>
<p>The post <a href="https://matthewmanela.com/blog/software-engineering-lessons-from-a-fern/">Software Engineering Lessons from a Fern</a> appeared first on <a href="https://matthewmanela.com">Matthew Manela</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Within the forests of New Caledonia grows <a href="https://www.nytimes.com/2024/05/31/science/largest-genome-fern-plant.html"><em>Tmesipteris oblanceolata</em>,</a> an innocuous plant that easily escapes notice due to its small size. However, this fern possesses a remarkable secret: it contains the largest genome ever recorded with over 160 billion base pairs, more than 50 times the size of the human genome. Plus, it’s an <a href="https://en.wikipedia.org/wiki/Polyploidy">octoploid</a> species, reproducing with eight sets of chromosomes, in contrast to humans’ two.</p>



<p class="wp-block-paragraph">Its massive genome isn’t the product of design or advantage, but of <em>incidental complexity</em>, a slow accretion of viral DNA and chromosome duplications. Inhabiting a stable, low-competition ecological niche, this fern faced little pressure to streamline its genetics, so it remains as-is despite the challenges posed by such size: slower reproduction and higher energy requirements.</p>



<p class="wp-block-paragraph">Reading about this fern with a ridiculously large genome reminded me of the idea of managing software complexity discussed in Rich Hickey’s presentation, &#8220;<a href="https://www.youtube.com/watch?v=SxdOUGdseq4">Simple Made Easy</a>&#8221; (I am sure you all had the same thought). Hickey distinguishes between simplicity (the absence of unnecessary interleaving or complexity) and ease (solutions that are immediately accessible or require minimal mental effort). Quick solutions seem ideal in the short term but overreliance on taking the path of least resistance can lead to accumulation of incidental complexity. Gradually, systems become less maintainable and harder to reason about, resulting in slower project velocity.</p>



<p class="wp-block-paragraph">In nature, this fern exemplifies what can happen when complexity accrues unchecked. It survives due to its isolation, carrying the burden of an extraordinarily complex genome; a tolerance that most living organisms, and most software systems, cannot afford.</p>



<h2 class="wp-block-heading"><strong>Incidental vs Intrinsic Complexity</strong></h2>



<p class="wp-block-paragraph">In software, <em>intrinsic complexity</em> is the inherent difficulty of the domain: business rules, user requirements, or performance constraints. These challenges require thoughtful and novel solutions from engineers but even with strong engineering, they demand time and focus to learn and understand. Even the most well engineered software systems can seem daunting and confusing due to this.</p>



<p class="wp-block-paragraph">On the other hand, <em>incidental complexity</em> arises from the optional choices made during implementation that make the codebase harder to work with, like layered abstractions, nests of conditionals, and excessive caches. Such complexity is often the byproduct of opting for the <em>easy</em> and more immediate solution.</p>



<p class="wp-block-paragraph">Finding truly <em>simple</em> solutions is hard. They take time and may require revisiting core assumptions, <a href="https://notes.mtb.xyz/p/your-data-model-is-your-destiny">data models</a> and flows in the application. These solutions often lead to short-term velocity decreases in order to unlock longer term understandability and productivity.</p>



<h2 class="wp-block-heading"><strong>Selective Pressure in Software</strong></h2>



<p class="wp-block-paragraph">Just as selective pressure discourages excessive complexity among organisms through competition, software products compete against each other too. Products with limited competition or robust brand loyalty may withstand slow iteration or internal inefficiencies. However, most live in more competitive environments; customers will switch to a competitor’s product unless the software continually advances to offer new functionality at a high quality. Rival products that innovate and adapt quickly can erode your customer base. This is why it is important to stay focused on investing in the <em>simple</em> solutions, so your applications don’t get bogged down under their own weight.</p>



<p class="wp-block-paragraph">However, the realities of software products don’t always offer the privilege of taking the time to find the truly <em>simple</em> solutions right away. Given deadlines and immediate customer needs, engineers (who are often aware of what the <em>simple</em> solution is or that it can be found) must decide to make reasonable trade-offs to balance other priorities.</p>



<p class="wp-block-paragraph">For example, adopting the <em>easy</em> fix may be warranted to address urgent needs, customer issues or key deadlines. However, everyone must be aware of the cost paid in doing this. Increasing the system’s overall complexity, adding cognitive load and increasing the number of edge cases. Each <em>easy</em> fix adds incremental complexity and technical debt. This is akin to numerous examples in evolutionary biology where an organism accrues sets of mutations that enable short-term benefit but lead to disadvantage down the line like Darwin’s finches, for instance, whose beak sizes oscillate with the shifting pressures of drought and rain.</p>



<p class="wp-block-paragraph">A decision not to pursue the <em>simple</em> solution requires the team to acknowledge the impact (which I discussed in a <a href="https://matthewmanela.com/blog/technical-debt-and-your-sock-drawer/">previous post</a>) and decide if the team (and the product) can live with this lack of simplicity forever or must hard commit to a concrete follow up soon. Discerning which complexities are tolerable versus which require immediate work towards the <em>simple</em> solution is a crucial skill for sustaining development velocity and system health. The team must periodically reflect over how often they have opted for the <em>easy</em> path and if this is leading to systemic problems in maintainability and velocity. Without deliberate reflection regarding whether deeper, structurally <em>simple</em> solutions must be pursued, organizations risk developing a genome like our favorite fern’s: functional, yet increasingly burdensome.</p>



<h2 class="wp-block-heading"><strong>Conclusion</strong></h2>



<p class="wp-block-paragraph">Incidental complexity is inevitable in both natural organisms and engineered systems. Unlike our tiny fern, whose survival hinges on environmental isolation, software projects seldom enjoy the luxury of operating without external pressures. Vigilantly distinguishing between <em>easy</em> fixes and truly <em>simple</em> solutions is vital to ensure continued innovation, responsiveness, and longevity in a competitive landscape.  Nature has billions years to figure out this balance, your software project doesn’t.</p>



<figure class="wp-block-image size-full"><a href="https://matthewmanela.com/wp-content/uploads/2025/10/image.png"><img fetchpriority="high" decoding="async" width="936" height="618" src="https://matthewmanela.com/wp-content/uploads/2025/10/image.png" alt="" class="wp-image-3654" srcset="https://matthewmanela.com/wp-content/uploads/2025/10/image.png 936w, https://matthewmanela.com/wp-content/uploads/2025/10/image-300x198.png 300w, https://matthewmanela.com/wp-content/uploads/2025/10/image-768x507.png 768w" sizes="(max-width: 936px) 100vw, 936px" /></a></figure>
<p>The post <a href="https://matthewmanela.com/blog/software-engineering-lessons-from-a-fern/">Software Engineering Lessons from a Fern</a> appeared first on <a href="https://matthewmanela.com">Matthew Manela</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Finding the pit of success</title>
		<link>https://matthewmanela.com/blog/finding-the-pit-of-success/</link>
		
		<dc:creator><![CDATA[Matthew Manela]]></dc:creator>
		<pubDate>Tue, 30 Sep 2025 05:49:05 +0000</pubDate>
				<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Software Teams]]></category>
		<category><![CDATA[culture]]></category>
		<category><![CDATA[software]]></category>
		<guid isPermaLink="false">https://matthewmanela.com/?p=3460</guid>

					<description><![CDATA[<p>Building software is complex. Engineers juggle performance, experience, security, maintainability, testability and observability (that is a lot of balls in the air). With so many competing concerns, it’s easy to lose the forest for the trees and forget the most important reason we build software: to make an impact. That impact might be helping a <a class="read-more" href="https://matthewmanela.com/blog/finding-the-pit-of-success/">&#8230;&#160;<span class="meta-nav">&#8594;</span></a></p>
<p>The post <a href="https://matthewmanela.com/blog/finding-the-pit-of-success/">Finding the pit of success</a> appeared first on <a href="https://matthewmanela.com">Matthew Manela</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-full is-style-default"><img decoding="async" width="1024" height="1024" src="https://matthewmanela.com/wp-content/uploads/2025/09/image-2.png" alt="" class="wp-image-3620" srcset="https://matthewmanela.com/wp-content/uploads/2025/09/image-2.png 1024w, https://matthewmanela.com/wp-content/uploads/2025/09/image-2-300x300.png 300w, https://matthewmanela.com/wp-content/uploads/2025/09/image-2-150x150.png 150w, https://matthewmanela.com/wp-content/uploads/2025/09/image-2-768x768.png 768w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph"><strong>Building software is complex.</strong> Engineers juggle performance, experience, security, maintainability, testability and observability (that is a lot of balls in the air). With so many competing concerns, it’s easy to lose the <a href="https://idiomatically.net/idioms/see-the-forest-for-the-trees">forest for the trees</a> and forget the most important reason we build software: <strong>to make an impact</strong>.</p>



<p class="wp-block-paragraph">That impact might be helping a human directly, powering another service, or enabling another team. Whatever the case, the result should be an improved experience for someone.</p>



<h2 class="wp-block-heading">Why are we building this?</h2>



<p class="wp-block-paragraph">Too often, engineers get so focused on the <em>what</em> that they lose sight of the <em>why</em>. On my teams, I put deliberate emphasis on ensuring every engineer understands the purpose of the work—and feels empowered to question it.</p>



<p class="wp-block-paragraph">Asking <em>“How will this create the intended impact?”</em> keeps the focus where it belongs and helps the team search for the elusive <strong>pit of success</strong>.</p>



<p class="wp-block-paragraph">Before starting a sprint or building a feature, every engineer must be able to explain why the change matters and what impact it will have. They should be able to paint a narrative for how the user’s experience will change and why that matters. And ideally tie this back to concrete metrics we expect to improve.</p>



<p class="wp-block-paragraph">If the <em>why</em> doesn’t resonate with the team, it won’t resonate with customers either. That’s a signal to rethink or reframe the work. If I can&#8217;t articulate the <em>why</em>, I must question if I am propsing the right direction for the team.</p>



<p class="wp-block-paragraph">Once the purpose is clear, engineers can (and should) continually ask during development: <em>“Will this still achieve our goal?”</em> Scope evolves and requirements change while building, and if halfway through someone realizes the feature won’t deliver the intended impact, that’s the perfect time to pause and reassess. It’s far cheaper to adapt or cut work in progress than to ship something that misses the mark.</p>



<h2 class="wp-block-heading">In search of the pit of success</h2>



<p class="wp-block-paragraph">Clarity around the intended impact is the foundation for a culture that actively searches for the <strong>pit of success</strong>: a state where the user naturally <em>falls</em> into the impactful behavior you want to drive. That sounds obvious, but it’s hard in practice because of a core tension in software: features vs. simplicity.</p>



<p class="wp-block-paragraph">Many products try to deliver value by adding features, flexibility, and configuration. While that’s useful, it often prevents users from stumbling into success. If there’s no current pulling toward a meaningful outcome, users will walk away, even if your product is technically superior.</p>



<p class="wp-block-paragraph">But when engineers, product managers, and designers are aligned on the <em>why</em>, they can work together to deliberately design for the pit of success. This isn’t just about slapping a CTA button on a page. It’s about simplifying the surface area (UI or API) so users aren’t distracted, confused, or pulled off track. </p>



<h2 class="wp-block-heading">Closing</h2>



<p class="wp-block-paragraph">Building software isn’t about features or technical cleverness—it’s about creating impact. When teams keep the <em>why</em> at the center, they’re more likely to build experiences where users naturally succeed (and choose not to build experiences where they won&#8217;t). That’s the real goal: designing so the pit of success is the only place to land.</p>



<figure class="wp-block-image size-full"><a href="https://matthewmanela.com/wp-content/uploads/2025/09/Copilot_20250929_153338.png"><img decoding="async" width="1486" height="826" src="https://matthewmanela.com/wp-content/uploads/2025/09/Copilot_20250929_153338.png" alt="" class="wp-image-3623" srcset="https://matthewmanela.com/wp-content/uploads/2025/09/Copilot_20250929_153338.png 1486w, https://matthewmanela.com/wp-content/uploads/2025/09/Copilot_20250929_153338-300x167.png 300w" sizes="(max-width: 1486px) 100vw, 1486px" /></a></figure>
<p>The post <a href="https://matthewmanela.com/blog/finding-the-pit-of-success/">Finding the pit of success</a> appeared first on <a href="https://matthewmanela.com">Matthew Manela</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Quick Motivation &#8211; A Mac App</title>
		<link>https://matthewmanela.com/blog/quick-motivation-a-mac-app/</link>
		
		<dc:creator><![CDATA[Matthew Manela]]></dc:creator>
		<pubDate>Wed, 19 Feb 2025 04:15:42 +0000</pubDate>
				<category><![CDATA[Personal]]></category>
		<guid isPermaLink="false">https://matthewmanela.com/?p=3512</guid>

					<description><![CDATA[<p>It was hard to see my desk under the clutter of sticky notes. For years I worked in team rooms at Microsoft and relied on the ample supply of sticky notes in the supply room to organize my daily to-dos, in-progress work, weekly plans and future ideas. This was not a great organizational system, but <a class="read-more" href="https://matthewmanela.com/blog/quick-motivation-a-mac-app/">&#8230;&#160;<span class="meta-nav">&#8594;</span></a></p>
<p>The post <a href="https://matthewmanela.com/blog/quick-motivation-a-mac-app/">Quick Motivation &#8211; A Mac App</a> appeared first on <a href="https://matthewmanela.com">Matthew Manela</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-full"><a href="https://matthewmanela.com/wp-content/uploads/2025/02/51b6e8cc-d9e3-48e8-9793-6c8fc70d1e8e-1.jpeg"><img loading="lazy" decoding="async" width="1024" height="700" src="https://matthewmanela.com/wp-content/uploads/2025/02/51b6e8cc-d9e3-48e8-9793-6c8fc70d1e8e-1.jpeg" alt="" class="wp-image-3531" srcset="https://matthewmanela.com/wp-content/uploads/2025/02/51b6e8cc-d9e3-48e8-9793-6c8fc70d1e8e-1.jpeg 1024w, https://matthewmanela.com/wp-content/uploads/2025/02/51b6e8cc-d9e3-48e8-9793-6c8fc70d1e8e-1-300x205.jpeg 300w, https://matthewmanela.com/wp-content/uploads/2025/02/51b6e8cc-d9e3-48e8-9793-6c8fc70d1e8e-1-768x525.jpeg 768w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure>



<p class="wp-block-paragraph">It was hard to see my desk under the clutter of sticky notes. For years I worked in team rooms at Microsoft and relied on the ample supply of sticky notes in the supply room to organize my daily to-dos, in-progress work, weekly plans and future ideas. This was not a great organizational system, but the sticky notes were free and unlimited so why not? Over time, I adopted better practices to lessen my need for the plethora of paper but one use remained &#8211; self-reminders to combat anxiety.</p>



<p class="wp-block-paragraph">I have fought with anxiety my whole life. When I began working professionally, I frequently left conversations or meetings feeling dismayed that my anxiety had taken control of my behavior. Eventually, I started using sticky notes to leave reminders on my monitor (often covering a small portion of the screen) to help interrupt the cycle of anxiety.</p>



<p class="wp-block-paragraph">The messages were simple. Stay Calm. Take a breath. Slow Down. These didn’t magically solve how I felt, but they provided a moment of reflection to let my thinking brain back into the room. I did this for years, but I felt embarrassed about it since I wasn’t comfortable talking about anxiety. I hid the messages by abbreviating them so others wouldn&#8217;t know what I was doing when they saw letters S.C. stuck to my screen.</p>



<p class="wp-block-paragraph">While I have a better hold of my anxiety than I used to, it remains a daily presence and I still use visual reminders (although not sticky notes) to shake me out of a spiral. Above my desk at home, I have a canvas print depicting <a href="https://en.wikipedia.org/wiki/Sisyphus">Sisyphus</a> pushing a boulder up a hill as a reminder that letting anxiety take control is a self-defeating process.</p>



<figure class="wp-block-image size-full is-resized"><a href="https://matthewmanela.com/wp-content/uploads/2025/02/the-myth-of-sisyphus-nicci-bedson-1.jpg"><img loading="lazy" decoding="async" width="900" height="900" src="https://matthewmanela.com/wp-content/uploads/2025/02/the-myth-of-sisyphus-nicci-bedson-1.jpg" alt="" class="wp-image-3546" style="width:500px" srcset="https://matthewmanela.com/wp-content/uploads/2025/02/the-myth-of-sisyphus-nicci-bedson-1.jpg 900w, https://matthewmanela.com/wp-content/uploads/2025/02/the-myth-of-sisyphus-nicci-bedson-1-300x300.jpg 300w, https://matthewmanela.com/wp-content/uploads/2025/02/the-myth-of-sisyphus-nicci-bedson-1-150x150.jpg 150w, https://matthewmanela.com/wp-content/uploads/2025/02/the-myth-of-sisyphus-nicci-bedson-1-768x768.jpg 768w" sizes="auto, (max-width: 900px) 100vw, 900px" /></a></figure>



<h2 class="wp-block-heading">Let’s build something</h2>



<p class="wp-block-paragraph">It has been a long time since I even though about my sticky note days. But after a recent meeting where I felt frustrated over acting too much out of anxiety, the idea came back to me. Without the limitless supply of sticky notes, I decided to build an app (seemed like a good enough reason to learn the basics of Swift and Mac application development) to revisit the idea.</p>



<p class="wp-block-paragraph">The concept was simple, a Mac OS app that allows pinning a customizable message to the menu bar that is always visible. I used this as an opportunity to experiment writing software using <a href="https://sourcegraph.com/blog/chat-oriented-programming-in-action">Chat Oriented Programming</a> (CHOP) with <a href="https://sourcegraph.com/cody">Sourcegraph’s Cody</a> AI agent (<em>disclaimer: I work at Sourcegraph</em>).</p>



<p class="wp-block-paragraph">Impressively, by describing my requirements and iterating on the resulting components, I created a working app quickly with 80% of the fuctionality. However, as it often is, that last 20% took the majority of the time. A couple behaviors and features required more research and reading to get working smoothly.</p>



<p class="wp-block-paragraph"><strong>Handling Menu Bar Occlusions</strong></p>



<p class="wp-block-paragraph">My first pass used Swift UI to add the text to the Mac menu bar. Swift UI makes building UX components a breeze and I also used it for the settings dialog. But using it for the menu bar limited the ability to listen to occlusion status events. The Mac menu bar is a fickle friend that, depending on the screen size and other menu bar items, can evict your menu bar item at any moment. Reacting to eviction requires listening to events and adjusting the size. This meant leaving the comfort of Swift UI behind for rendering the menu bar and implementing those parts of the application as an <a href="https://developer.apple.com/documentation/appkit/nsapplicationdelegate">application delegate</a>. In the delegate, I attempted to render the full message and if it didn&#8217;t fit, render just an emoji. Making this work smoothly took a lot of trial and error.</p>



<p class="wp-block-paragraph"><strong>Persistent Popover</strong></p>



<p class="wp-block-paragraph">To account for the full message not always being visible in the menu bar, I added a pinnable message popover to view the full message when you hover over the menu bar item. I first used the built-in popover component which is very convenient, but inflexible and dissapears when a user changes workspaces (virtual desktops). To make sure the pinned message always shows, I built custom popover component using a window component and view controller. </p>



<h2 class="wp-block-heading">No more sticky notes</h2>



<p class="wp-block-paragraph">The end result is &#8230; <a href="https://apps.apple.com/us/app/quick-motivation/id6741396236">Quick Motivation</a>, a simple Mac app that adds a menu bar item with customizable messages.</p>



<p class="wp-block-paragraph"><strong>Menu bar message</strong></p>



<figure class="wp-block-image size-full"><a href="https://matthewmanela.com/wp-content/uploads/2025/02/image-18.png"><img loading="lazy" decoding="async" width="1018" height="44" src="https://matthewmanela.com/wp-content/uploads/2025/02/image-18.png" alt="" class="wp-image-3592" srcset="https://matthewmanela.com/wp-content/uploads/2025/02/image-18.png 1018w, https://matthewmanela.com/wp-content/uploads/2025/02/image-18-300x13.png 300w, https://matthewmanela.com/wp-content/uploads/2025/02/image-18-768x33.png 768w" sizes="auto, (max-width: 1018px) 100vw, 1018px" /></a></figure>



<p class="wp-block-paragraph"><strong>Quickly change between custom messages</strong></p>



<figure class="wp-block-image size-full is-resized"><a href="https://matthewmanela.com/wp-content/uploads/2025/02/image-13.png"><img loading="lazy" decoding="async" width="422" height="344" src="https://matthewmanela.com/wp-content/uploads/2025/02/image-13.png" alt="" class="wp-image-3520" style="width:300px" srcset="https://matthewmanela.com/wp-content/uploads/2025/02/image-13.png 422w, https://matthewmanela.com/wp-content/uploads/2025/02/image-13-300x245.png 300w" sizes="auto, (max-width: 422px) 100vw, 422px" /></a></figure>



<p class="wp-block-paragraph"><strong>Configure new messages</strong></p>



<figure class="wp-block-image size-full is-resized"><a href="https://matthewmanela.com/wp-content/uploads/2025/02/image-14.png"><img loading="lazy" decoding="async" width="978" height="842" src="https://matthewmanela.com/wp-content/uploads/2025/02/image-14.png" alt="" class="wp-image-3521" style="width:500px" srcset="https://matthewmanela.com/wp-content/uploads/2025/02/image-14.png 978w, https://matthewmanela.com/wp-content/uploads/2025/02/image-14-300x258.png 300w, https://matthewmanela.com/wp-content/uploads/2025/02/image-14-768x661.png 768w" sizes="auto, (max-width: 978px) 100vw, 978px" /></a></figure>



<p class="wp-block-paragraph"><strong>Pin a message anywhere on the screen</strong></p>



<figure class="wp-block-image size-full is-resized"><a href="https://matthewmanela.com/wp-content/uploads/2025/02/image-15.png"><img loading="lazy" decoding="async" width="434" height="126" src="https://matthewmanela.com/wp-content/uploads/2025/02/image-15.png" alt="" class="wp-image-3522" style="width:300px" srcset="https://matthewmanela.com/wp-content/uploads/2025/02/image-15.png 434w, https://matthewmanela.com/wp-content/uploads/2025/02/image-15-300x87.png 300w" sizes="auto, (max-width: 434px) 100vw, 434px" /></a></figure>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">You can install the app from the <a href="https://apps.apple.com/us/app/quick-motivation/id6741396236">Mac App Store</a> and view the source code on <a href="https://github.com/mmanela/quick_motivation">GitHub</a>. While this is not a large or complex application, I learned a ton creating it and I hope others will find it useful.</p>



<figure class="wp-block-image size-medium is-resized"><a href="https://apps.apple.com/us/app/quick-motivation/id6741396236"><img loading="lazy" decoding="async" width="300" height="77" src="https://matthewmanela.com/wp-content/uploads/2025/02/macAppStore-300x77.png" alt="" class="wp-image-3580" style="width:300px;height:auto" srcset="https://matthewmanela.com/wp-content/uploads/2025/02/macAppStore-300x77.png 300w, https://matthewmanela.com/wp-content/uploads/2025/02/macAppStore.png 488w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></figure>



<figure class="wp-block-image size-medium"><a href="https://matthewmanela.com/wp-content/uploads/2025/02/stickyMatt.jpg"><img loading="lazy" decoding="async" width="300" height="276" src="https://matthewmanela.com/wp-content/uploads/2025/02/stickyMatt-300x276.jpg" alt="Thanks for reading" class="wp-image-3525" srcset="https://matthewmanela.com/wp-content/uploads/2025/02/stickyMatt-300x276.jpg 300w, https://matthewmanela.com/wp-content/uploads/2025/02/stickyMatt-1024x941.jpg 1024w, https://matthewmanela.com/wp-content/uploads/2025/02/stickyMatt-768x706.jpg 768w, https://matthewmanela.com/wp-content/uploads/2025/02/stickyMatt.jpg 1457w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></figure>



<p class="wp-block-paragraph"></p>
<p>The post <a href="https://matthewmanela.com/blog/quick-motivation-a-mac-app/">Quick Motivation &#8211; A Mac App</a> appeared first on <a href="https://matthewmanela.com">Matthew Manela</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Exploring the power of LLM Embeddings</title>
		<link>https://matthewmanela.com/blog/exploring-the-power-of-llm-embeddings/</link>
		
		<dc:creator><![CDATA[Matthew Manela]]></dc:creator>
		<pubDate>Tue, 31 Oct 2023 19:19:54 +0000</pubDate>
				<category><![CDATA[Programming]]></category>
		<guid isPermaLink="false">https://matthewmanela.com/?p=2426</guid>

					<description><![CDATA[<p>In this wave of excitement over Large Language Models (LLMs), one of the most interesting technologies that emerges from them is the idea of embeddings. Most people interact with LLMs (like ChatGPT or Bing Chat) by providing an input and watching it build astonishing output: Write me a 2-line poem about a carrot whose dream <a class="read-more" href="https://matthewmanela.com/blog/exploring-the-power-of-llm-embeddings/">&#8230;&#160;<span class="meta-nav">&#8594;</span></a></p>
<p>The post <a href="https://matthewmanela.com/blog/exploring-the-power-of-llm-embeddings/">Exploring the power of LLM Embeddings</a> appeared first on <a href="https://matthewmanela.com">Matthew Manela</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-full"><a href="https://matthewmanela.com/wp-content/uploads/2023/10/llmImage2-2.jpeg"><img loading="lazy" decoding="async" width="1024" height="975" src="https://matthewmanela.com/wp-content/uploads/2023/10/llmImage2-2.jpeg" alt="" class="wp-image-3388" style="aspect-ratio:4/3;object-fit:contain" srcset="https://matthewmanela.com/wp-content/uploads/2023/10/llmImage2-2.jpeg 1024w, https://matthewmanela.com/wp-content/uploads/2023/10/llmImage2-2-300x286.jpeg 300w, https://matthewmanela.com/wp-content/uploads/2023/10/llmImage2-2-768x731.jpeg 768w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure>



<p class="wp-block-paragraph">In this wave of excitement over Large Language Models (LLMs), one of the most interesting technologies that emerges from them is the idea of <a href="https://learn.microsoft.com/en-us/semantic-kernel/memories/embeddings">embeddings</a>. Most people interact with LLMs (like <a href="https://chat.openai.com/">ChatGPT</a> or <a href="https://www.bing.com/search?q=Bing+AI&amp;showconv=1">Bing Chat</a>) by providing an input and watching it build astonishing output: </p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">Write me a 2-line poem about a carrot whose dream of becoming a banker has gone unfulfilled.</p>



<pre class="wp-block-preformatted">He wanted to be a banker, but he was just a carrot.
He tried to crunch the numbers, but he could not bear it.
</pre>
<cite>https://bing.com/chat</cite></blockquote>



<p class="wp-block-paragraph">Under the covers, LLMs take the prompted text and turn it into an embedding which is a vector of numbers representing the meaning and context of the tokens processed by the model. In essence (in my non-ML expert view), the embedding represents the model&#8217;s <em>conceptual</em> understanding of the input. It then uses this to generate its output.</p>



<blockquote class="wp-block-quote has-medium-font-size is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">[-0.003150753309585745, -0.012415633924448732, 0.0095910591273366, -0.0013784545438399322, -0.025483625805167297, &#8230;</p>
<cite>The first few numbers of an example embedding.</cite></blockquote>



<p class="wp-block-paragraph">But skipping to the generated output misses the fascinating possibilities embeddings represent. Quantifying a concept numerically opens many opportunities for manipulating semantic understanding. This numerical representation enables scenarios like semantic document search, classification, and translation. Over the last year, many companies have sprung up to take advantage of this potential. </p>



<p class="wp-block-paragraph">To learn more, I built a program to explore the power of embedding, understand how they work, and learn how to manipulate them. This program takes a document (PDF) as an input and uses embeddings to semantically group and name its key concepts. </p>



<p class="wp-block-paragraph">For example, one of the outputs the program can generate is a 3D scatter plot where each dot represents the embedding of an individual section of the document. The color represents a grouping of all similar passages, and the legend shows the words that summarize that grouping.</p>



<figure class="wp-block-image size-large"><a href="https://matthewmanela.com/wp-content/uploads/2023/10/image-3.png"><img loading="lazy" decoding="async" width="1024" height="896" src="https://matthewmanela.com/wp-content/uploads/2023/10/image-3-1024x896.png" alt="" class="wp-image-2825" srcset="https://matthewmanela.com/wp-content/uploads/2023/10/image-3-1024x896.png 1024w, https://matthewmanela.com/wp-content/uploads/2023/10/image-3-300x262.png 300w, https://matthewmanela.com/wp-content/uploads/2023/10/image-3-768x672.png 768w, https://matthewmanela.com/wp-content/uploads/2023/10/image-3.png 1055w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure>



<p class="wp-block-paragraph">This post will cover the steps followed to build this program:</p>


<div class="wp-block-table-of-contents-block-table-of-contents-block"><div class="eb-parent-wrapper eb-parent-eb-toc-12twyaq "><div class="eb-toc-container eb-toc-12twyaq  eb-toc-is-not-sticky eb-toc-not-collapsible eb-toc-initially-not-collapsed eb-toc-scrollToTop style-1 list-style-none" data-scroll-top="false" data-scroll-top-icon="fas fa-angle-up" data-collapsible="false" data-sticky-hide-mobile="false" data-sticky="false" data-scroll-target="scroll_to_toc" data-copy-link="false" data-editor-type="" data-hide-desktop="false" data-hide-tab="false" data-hide-mobile="false" data-itemcollapsed="false"><div class="eb-toc-header"></div><div class="eb-toc-wrapper " data-headers="[{&quot;level&quot;:2,&quot;content&quot;:&quot;Technology decisions&quot;,&quot;text&quot;:&quot;Technology decisions&quot;,&quot;link&quot;:&quot;technology-decisions&quot;},{&quot;level&quot;:2,&quot;content&quot;:&quot;Document Splitting and Chunking&quot;,&quot;text&quot;:&quot;Document Splitting and Chunking&quot;,&quot;link&quot;:&quot;document-splitting-and-chunking&quot;},{&quot;level&quot;:2,&quot;content&quot;:&quot;Creating and Querying Embeddings&quot;,&quot;text&quot;:&quot;Creating and Querying Embeddings&quot;,&quot;link&quot;:&quot;creating-and-querying-embeddings&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;Generating Embeddings&quot;,&quot;text&quot;:&quot;Generating Embeddings&quot;,&quot;link&quot;:&quot;generating-embeddings&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;Using a Vector Database&quot;,&quot;text&quot;:&quot;Using a Vector Database&quot;,&quot;link&quot;:&quot;using-a-vector-database&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;Storing Embeddings with their chunks&quot;,&quot;text&quot;:&quot;Storing Embeddings with their chunks&quot;,&quot;link&quot;:&quot;storing-embeddings-with-their-chunks&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;Exploring the embedding model&quot;,&quot;text&quot;:&quot;Exploring the embedding model&quot;,&quot;link&quot;:&quot;exploring-the-embedding-model&quot;},{&quot;level&quot;:2,&quot;content&quot;:&quot;Clustering and visualizing embeddings&quot;,&quot;text&quot;:&quot;Clustering and visualizing embeddings&quot;,&quot;link&quot;:&quot;clustering-and-visualizing-embeddings&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;Generating clusters from embeddings&quot;,&quot;text&quot;:&quot;Generating clusters from embeddings&quot;,&quot;link&quot;:&quot;generating-clusters-from-embeddings&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;Visualizing clusters&quot;,&quot;text&quot;:&quot;Visualizing clusters&quot;,&quot;link&quot;:&quot;visualizing-clusters&quot;},{&quot;level&quot;:2,&quot;content&quot;:&quot;Semantically Labelling Each Cluster&quot;,&quot;text&quot;:&quot;Semantically Labelling Each Cluster&quot;,&quot;link&quot;:&quot;semantically-labelling-each-cluster&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;Generating word embeddings&quot;,&quot;text&quot;:&quot;Generating word embeddings&quot;,&quot;link&quot;:&quot;generating-word-embeddings&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;Exploring word embeddings&quot;,&quot;text&quot;:&quot;Exploring word embeddings&quot;,&quot;link&quot;:&quot;exploring-word-embeddings&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;Labeling the clusters&quot;,&quot;text&quot;:&quot;Labeling the clusters&quot;,&quot;link&quot;:&quot;labeling-the-clusters&quot;},{&quot;level&quot;:2,&quot;content&quot;:&quot;Conclusion&quot;,&quot;text&quot;:&quot;Conclusion&quot;,&quot;link&quot;:&quot;conclusion&quot;}]" data-visible="[false,true,true,false,false,false]" data-delete-headers="[]" data-smooth="true" data-top-offset=""><div class="eb-toc__list-wrap"><ul class="eb-toc__list"><li><a href="#technology-decisions">Technology decisions</a><li><a href="#document-splitting-and-chunking">Document Splitting and Chunking</a><li><a href="#creating-and-querying-embeddings">Creating and Querying Embeddings</a><ul class="eb-toc__list"><li><a href="#generating-embeddings">Generating Embeddings</a><li><a href="#using-a-vector-database">Using a Vector Database</a><li><a href="#storing-embeddings-with-their-chunks">Storing Embeddings with their chunks</a><li><a href="#exploring-the-embedding-model">Exploring the embedding model</a></li></ul><li><a href="#clustering-and-visualizing-embeddings">Clustering and visualizing embeddings</a><ul class="eb-toc__list"><li><a href="#generating-clusters-from-embeddings">Generating clusters from embeddings</a><li><a href="#visualizing-clusters">Visualizing clusters</a></li></ul><li><a href="#semantically-labelling-each-cluster">Semantically Labelling Each Cluster</a><ul class="eb-toc__list"><li><a href="#generating-word-embeddings">Generating word embeddings</a><li><a href="#exploring-word-embeddings">Exploring word embeddings</a><li><a href="#labeling-the-clusters">Labeling the clusters</a></li></ul><li><a href="#conclusion">Conclusion</a></ul></div></div></div></div></div>


<p class="wp-block-paragraph">Each step will share the key pieces of code needed and show examples for executing that functionality in the program so you can explore and iterate as well. The goal of this post is to demonstrate the power of embeddings and help you get started quickly, leveraging it for your own applications.</p>



<p class="wp-block-paragraph">If you speak code and not text, jump right to the <a href="https://github.com/mmanela/llm-embeddings">GitHub repo</a>. </p>



<h2 class="wp-block-heading">Technology decisions</h2>



<p class="wp-block-paragraph">The program is built in Python which has a rich ecosystem for exploring LLMs and machine learning concepts. It leverages the awesome <a href="https://python.langchain.com/docs/get_started/introduction">LangChain</a> library which provides an abstraction for all things language models to enable experimentation.</p>



<p class="wp-block-paragraph">It also uses <a href="https://openai.com/">OpenAI</a>&#8216;s <code>text-embedding-ada-002</code> model as the backing LLM. OpenAI API integration is not free, so I purchased $5 worth of tokens. In all my experimentation and testing, I have only used up 10 cents of that amount since the datasets are small. If <strong>any</strong> cost is prohibitive, LangChain supports different LLMs (both online and local). </p>



<p class="wp-block-paragraph"></p>



<h2 class="wp-block-heading">Document Splitting and Chunking</h2>



<p class="wp-block-paragraph">The first step is taking an input PDF document and splitting it into smaller chunks. This is required since most LLMs have a character limit. Smaller blocks of text also aid in semantic analysis since larger blocks may contain many concepts and clustering will be less accurate. </p>



<p class="wp-block-paragraph">LangChain supports many options and configurations for splitting a document. I experimented with three different splitters and with different chunk sizes.</p>



<ol class="wp-block-list">
<li><a href="https://api.python.langchain.com/en/latest/text_splitter/langchain.text_splitter.RecursiveCharacterTextSplitter.html">RecursiveCharacterTextSplitter</a> &#8211; Attempts to chunk a document by using a set of separators.</li>



<li><a href="https://api.python.langchain.com/en/latest/text_splitter/langchain.text_splitter.SpacyTextSplitter.html">SpacyTextSplitter</a> &#8211; Splits text using spaCy&#8217;s understanding of English language via its built-in tokenizers.</li>



<li><a href="https://api.python.langchain.com/en/latest/text_splitter/langchain.text_splitter.NLTKTextSplitter.html">NLTKTextSplitter</a> &#8211; Splits text using NLTK&#8217;s understanding of English language via its built-in tokenizers.</li>
</ol>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">I split documents many times using each of these text splitters with chunk sizes of 100, 250, 500 and 1000 characters. The chunk size is a suggestion, and it will break the text as close to that as it can. Through this iteration, NLTKTextSplitter showed the best results, but all were reasonable. </p>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">This function takes a PDF and chunks it and returns the results:</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-Fira-Code" style="font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-Fira-Code,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:clamp(24px, 1.5rem, 36px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#333545;color:#ebebe6">Python</span><span role="button" tabindex="0" data-code="from langchain.text_splitter import NLTKTextSplitter
from langchain.document_loaders import PyPDFLoader
import os

def parse_pdf(filename):
    path = os.path.join(FILES_FOLDER, filename)
    if not os.path.exists(path):
        raise FileNotFoundError(f'File {path} not found')
 
    chunk_size = 250
    chunk_overlap = 0
    loader = PyPDFLoader(path) 
    nltk_splitter = NLTKTextSplitter(
        chunk_size=chunk_size, chunk_overlap=chunk_overlap)
    texts = loader.load_and_split(text_splitter=nltk_splitter)
    print(f'Loaded {len(texts)} texts')
    return texts" style="color:#f6f6f4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dracula-soft" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #F286C4">from</span><span style="color: #F6F6F4"> langchain.text_splitter </span><span style="color: #F286C4">import</span><span style="color: #F6F6F4"> NLTKTextSplitter</span></span>
<span class="line"><span style="color: #F286C4">from</span><span style="color: #F6F6F4"> langchain.document_loaders </span><span style="color: #F286C4">import</span><span style="color: #F6F6F4"> PyPDFLoader</span></span>
<span class="line"><span style="color: #F286C4">import</span><span style="color: #F6F6F4"> os</span></span>
<span class="line"></span>
<span class="line"><span style="color: #F286C4">def</span><span style="color: #F6F6F4"> </span><span style="color: #62E884">parse_pdf</span><span style="color: #F6F6F4">(</span><span style="color: #FFB86C; font-style: italic">filename</span><span style="color: #F6F6F4">):</span></span>
<span class="line"><span style="color: #F6F6F4">    path </span><span style="color: #F286C4">=</span><span style="color: #F6F6F4"> os.path.join(</span><span style="color: #BF9EEE">FILES_FOLDER</span><span style="color: #F6F6F4">, filename)</span></span>
<span class="line"><span style="color: #F6F6F4">    </span><span style="color: #F286C4">if</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">not</span><span style="color: #F6F6F4"> os.path.exists(path):</span></span>
<span class="line"><span style="color: #F6F6F4">        </span><span style="color: #F286C4">raise</span><span style="color: #F6F6F4"> </span><span style="color: #97E1F1; font-style: italic">FileNotFoundError</span><span style="color: #F6F6F4">(</span><span style="color: #F286C4">f</span><span style="color: #E7EE98">&#39;File </span><span style="color: #BF9EEE">{</span><span style="color: #F6F6F4">path</span><span style="color: #BF9EEE">}</span><span style="color: #E7EE98"> not found&#39;</span><span style="color: #F6F6F4">)</span></span>
<span class="line"><span style="color: #F6F6F4"> </span></span>
<span class="line"><span style="color: #F6F6F4">    chunk_size </span><span style="color: #F286C4">=</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">250</span></span>
<span class="line"><span style="color: #F6F6F4">    chunk_overlap </span><span style="color: #F286C4">=</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">0</span></span>
<span class="line"><span style="color: #F6F6F4">    loader </span><span style="color: #F286C4">=</span><span style="color: #F6F6F4"> PyPDFLoader(path) </span></span>
<span class="line"><span style="color: #F6F6F4">    nltk_splitter </span><span style="color: #F286C4">=</span><span style="color: #F6F6F4"> NLTKTextSplitter(</span></span>
<span class="line"><span style="color: #F6F6F4">        </span><span style="color: #FFB86C; font-style: italic">chunk_size</span><span style="color: #F286C4">=</span><span style="color: #F6F6F4">chunk_size, </span><span style="color: #FFB86C; font-style: italic">chunk_overlap</span><span style="color: #F286C4">=</span><span style="color: #F6F6F4">chunk_overlap)</span></span>
<span class="line"><span style="color: #F6F6F4">    texts </span><span style="color: #F286C4">=</span><span style="color: #F6F6F4"> loader.load_and_split(</span><span style="color: #FFB86C; font-style: italic">text_splitter</span><span style="color: #F286C4">=</span><span style="color: #F6F6F4">nltk_splitter)</span></span>
<span class="line"><span style="color: #F6F6F4">    </span><span style="color: #97E1F1">print</span><span style="color: #F6F6F4">(</span><span style="color: #F286C4">f</span><span style="color: #E7EE98">&#39;Loaded </span><span style="color: #BF9EEE">{</span><span style="color: #97E1F1">len</span><span style="color: #F6F6F4">(texts)</span><span style="color: #BF9EEE">}</span><span style="color: #E7EE98"> texts&#39;</span><span style="color: #F6F6F4">)</span></span>
<span class="line"><span style="color: #F6F6F4">    </span><span style="color: #F286C4">return</span><span style="color: #F6F6F4"> texts</span></span></code></pre></div>



<p class="wp-block-paragraph">When using NLTK there is a onetime step to download its sentence tokenizing module by running the follow code:</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-Fira-Code" style="font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-Fira-Code,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:clamp(24px, 1.5rem, 36px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#333545;color:#ebebe6">Python</span><span role="button" tabindex="0" data-code="import nltk
nltk.download('punkt')" style="color:#f6f6f4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dracula-soft" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #F286C4">import</span><span style="color: #F6F6F4"> nltk</span></span>
<span class="line"><span style="color: #F6F6F4">nltk.download(</span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">punkt</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4">)</span></span></code></pre></div>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">This functionality is exposed for experimentation in the program through the <code>extract</code> command (referencing the sample pdf included). It prints out the first 100 characters of the first 10 chunks it creates.</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-Fira-Code" style="font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-Fira-Code,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:clamp(24px, 1.5rem, 36px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#333545;color:#ebebe6">Zsh</span><span role="button" tabindex="0" data-code="./run.sh -m extract -f pair_programming.pdf" style="color:#f6f6f4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dracula-soft" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #62E884">./run.sh</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">-m</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">extract</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">-f</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">pair_programming.pdf</span></span></code></pre></div>



<figure class="wp-block-image size-full"><a href="https://matthewmanela.com/wp-content/uploads/2023/10/image-6.png"><img loading="lazy" decoding="async" width="507" height="259" src="https://matthewmanela.com/wp-content/uploads/2023/10/image-6.png" alt="" class="wp-image-3089" srcset="https://matthewmanela.com/wp-content/uploads/2023/10/image-6.png 507w, https://matthewmanela.com/wp-content/uploads/2023/10/image-6-300x153.png 300w" sizes="auto, (max-width: 507px) 100vw, 507px" /></a></figure>



<p class="wp-block-paragraph"></p>



<h2 class="wp-block-heading">Creating and Querying Embeddings</h2>



<h3 class="wp-block-heading">Generating Embeddings</h3>



<p class="wp-block-paragraph">With bite-sized chunks of text produced, the next task is turning each of these chunks into an embedding. An embedding is a numerical representation of the LLM&#8217;s conceptual understanding of the chunk of text.  I leveraged LangChain&#8217;s OpenAI&#8217;s embedding model (<code>OpenAIEmbeddings</code>) and its embeddings caching layer (<code>CacheBackedEmbeddings</code>). </p>



<p class="wp-block-paragraph">The caching layer minimizes how much it costs (which in hindsight is very small) and improves performance in subsequent runs. It hashes each chunk of text and stores it in a file (or Redis or in memory) per hash with its embeddings.  </p>



<p class="wp-block-paragraph">Using these two classes, this is how to generate embeddings for an array of strings.</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-Fira-Code" style="font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-Fira-Code,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:clamp(24px, 1.5rem, 36px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#333545;color:#ebebe6">Python</span><span role="button" tabindex="0" data-code="from langchain.embeddings import CacheBackedEmbeddings, OpenAIEmbeddings
from langchain.storage import LocalFileStore

# Create a file store to store the cached embeddings
embedding_cache_store = LocalFileStore(EMBEDDING_CACHE_PATH)

# Create an open ai embedding service
underlying_embeddings = OpenAIEmbeddings(
    openai_api_key=os.environ.get('OPENAI_API_KEY'))
    
# Wrap the embedding service in a cache
cached_embedder = CacheBackedEmbeddings.from_bytes_store(
    underlying_embeddings, embedding_cache_store, namespace=underlying_embeddings.model)

# Generate embeddings for the array of texts returned from parse_pdf
doc_embeddings = cached_embedder.embed_documents(texts)" style="color:#f6f6f4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dracula-soft" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #F286C4">from</span><span style="color: #F6F6F4"> langchain.embeddings </span><span style="color: #F286C4">import</span><span style="color: #F6F6F4"> CacheBackedEmbeddings, OpenAIEmbeddings</span></span>
<span class="line"><span style="color: #F286C4">from</span><span style="color: #F6F6F4"> langchain.storage </span><span style="color: #F286C4">import</span><span style="color: #F6F6F4"> LocalFileStore</span></span>
<span class="line"></span>
<span class="line"><span style="color: #7B7F8B"># Create a file store to store the cached embeddings</span></span>
<span class="line"><span style="color: #F6F6F4">embedding_cache_store </span><span style="color: #F286C4">=</span><span style="color: #F6F6F4"> LocalFileStore(</span><span style="color: #BF9EEE">EMBEDDING_CACHE_PATH</span><span style="color: #F6F6F4">)</span></span>
<span class="line"></span>
<span class="line"><span style="color: #7B7F8B"># Create an open ai embedding service</span></span>
<span class="line"><span style="color: #F6F6F4">underlying_embeddings </span><span style="color: #F286C4">=</span><span style="color: #F6F6F4"> OpenAIEmbeddings(</span></span>
<span class="line"><span style="color: #F6F6F4">    </span><span style="color: #FFB86C; font-style: italic">openai_api_key</span><span style="color: #F286C4">=</span><span style="color: #F6F6F4">os.environ.get(</span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">OPENAI_API_KEY</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4">))</span></span>
<span class="line"><span style="color: #F6F6F4">    </span></span>
<span class="line"><span style="color: #7B7F8B"># Wrap the embedding service in a cache</span></span>
<span class="line"><span style="color: #F6F6F4">cached_embedder </span><span style="color: #F286C4">=</span><span style="color: #F6F6F4"> CacheBackedEmbeddings.from_bytes_store(</span></span>
<span class="line"><span style="color: #F6F6F4">    underlying_embeddings, embedding_cache_store, </span><span style="color: #FFB86C; font-style: italic">namespace</span><span style="color: #F286C4">=</span><span style="color: #F6F6F4">underlying_embeddings.model)</span></span>
<span class="line"></span>
<span class="line"><span style="color: #7B7F8B"># Generate embeddings for the array of texts returned from parse_pdf</span></span>
<span class="line"><span style="color: #F6F6F4">doc_embeddings </span><span style="color: #F286C4">=</span><span style="color: #F6F6F4"> cached_embedder.embed_documents(texts)</span></span></code></pre></div>



<p class="wp-block-paragraph">Running it generates the cached embeddings:</p>



<figure class="wp-block-image size-full"><a href="https://matthewmanela.com/wp-content/uploads/2023/10/image.png"><img loading="lazy" decoding="async" width="510" height="264" src="https://matthewmanela.com/wp-content/uploads/2023/10/image.png" alt="" class="wp-image-2752" srcset="https://matthewmanela.com/wp-content/uploads/2023/10/image.png 510w, https://matthewmanela.com/wp-content/uploads/2023/10/image-300x155.png 300w" sizes="auto, (max-width: 510px) 100vw, 510px" /></a></figure>



<p class="wp-block-paragraph">With embeddings created and cached, the next step is to load and query them. This enables two key scenarios:</p>



<ol class="wp-block-list">
<li>Querying embeddings by input text to find closest matches</li>



<li>Clustering a list of embeddings</li>
</ol>



<p class="wp-block-paragraph"></p>



<h3 class="wp-block-heading">Using a Vector Database</h3>



<p class="wp-block-paragraph">A vector database is the key technology involved in scenario #1. This is a special database that is optimized for storing and querying against vectors of values (like embeddings!). It is built to run in memory or on disk and can scale to very large datasets. LangChain makes it&nbsp;<a href="https://python.langchain.com/docs/modules/data_connection/vectorstores/">simple</a>&nbsp;to experiment with several vector DBs and I decided to use&nbsp;<a href="https://faiss.ai/">FAISS</a>. Creating and persisting a FAISS index to disk for the text and embeddings above is just two lines of code:</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-Fira-Code" style="font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-Fira-Code,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:clamp(24px, 1.5rem, 36px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#333545;color:#ebebe6">Python</span><span role="button" tabindex="0" data-code="faiss_index = FAISS.from_texts(texts, cached_embedder)
faiss_index.save_local(VECTOR_STORE_PATH, fileName)" style="color:#f6f6f4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dracula-soft" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #F6F6F4">faiss_index </span><span style="color: #F286C4">=</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">FAISS</span><span style="color: #F6F6F4">.from_texts(texts, cached_embedder)</span></span>
<span class="line"><span style="color: #F6F6F4">faiss_index.save_local(</span><span style="color: #BF9EEE">VECTOR_STORE_PATH</span><span style="color: #F6F6F4">, fileName)</span></span></code></pre></div>



<p class="wp-block-paragraph">Technically, you don&#8217;t need to save the index to disk, since it can be re-built from the cached embeddings, but for large datasets it can save the re-indexing time.  </p>



<p class="wp-block-paragraph">With the index built there is a simple method to provide it a text query and find out which embeddings match most closely:</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-Fira-Code" style="font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-Fira-Code,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:clamp(24px, 1.5rem, 36px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#333545;color:#ebebe6">Python</span><span role="button" tabindex="0" data-code="# Load the index
faiss_index = FAISS.load_local(
    folder_path=VECTOR_STORE_PATH, index_name=fileName, embeddings=cached_embedder)

# Query 3 closest matching chunks from the index
docs_and_scores = faiss_index.similarity_search_with_score(query, 3)
snippet_and_score = [(x[0].page_content[0:100], x[1])
                        for x in docs_and_scores if x[0].page_content]" style="color:#f6f6f4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dracula-soft" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #7B7F8B"># Load the index</span></span>
<span class="line"><span style="color: #F6F6F4">faiss_index </span><span style="color: #F286C4">=</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">FAISS</span><span style="color: #F6F6F4">.load_local(</span></span>
<span class="line"><span style="color: #F6F6F4">    </span><span style="color: #FFB86C; font-style: italic">folder_path</span><span style="color: #F286C4">=</span><span style="color: #BF9EEE">VECTOR_STORE_PATH</span><span style="color: #F6F6F4">, </span><span style="color: #FFB86C; font-style: italic">index_name</span><span style="color: #F286C4">=</span><span style="color: #F6F6F4">fileName, </span><span style="color: #FFB86C; font-style: italic">embeddings</span><span style="color: #F286C4">=</span><span style="color: #F6F6F4">cached_embedder)</span></span>
<span class="line"></span>
<span class="line"><span style="color: #7B7F8B"># Query 3 closest matching chunks from the index</span></span>
<span class="line"><span style="color: #F6F6F4">docs_and_scores </span><span style="color: #F286C4">=</span><span style="color: #F6F6F4"> faiss_index.similarity_search_with_score(query, </span><span style="color: #BF9EEE">3</span><span style="color: #F6F6F4">)</span></span>
<span class="line"><span style="color: #F6F6F4">snippet_and_score </span><span style="color: #F286C4">=</span><span style="color: #F6F6F4"> [(x[</span><span style="color: #BF9EEE">0</span><span style="color: #F6F6F4">].page_content[</span><span style="color: #BF9EEE">0</span><span style="color: #F286C4">:</span><span style="color: #BF9EEE">100</span><span style="color: #F6F6F4">], x[</span><span style="color: #BF9EEE">1</span><span style="color: #F6F6F4">])</span></span>
<span class="line"><span style="color: #F6F6F4">                        </span><span style="color: #F286C4">for</span><span style="color: #F6F6F4"> x </span><span style="color: #F286C4">in</span><span style="color: #F6F6F4"> docs_and_scores </span><span style="color: #F286C4">if</span><span style="color: #F6F6F4"> x[</span><span style="color: #BF9EEE">0</span><span style="color: #F6F6F4">].page_content]</span></span></code></pre></div>



<p class="wp-block-paragraph"></p>



<h3 class="wp-block-heading">Storing Embeddings with their chunks</h3>



<p class="wp-block-paragraph">In addition to the vector DB, it is useful to have a persisted list of source text, metadata and embedding. This makes it easy to do further analysis and comparison. There is not a simple way (in my experimenting) to re-construct this from the FAISS index. Instead, store a file to disk that contains all text chunks and their embeddings. To do this, I created a small object called `EmbeddedReference` that contains the embedding, its source text and the page number in the source doc the text came from. I then serialize this to disk. </p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-Fira-Code" style="font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-Fira-Code,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:clamp(24px, 1.5rem, 36px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#333545;color:#ebebe6">Python</span><span role="button" tabindex="0" data-code="embedding_objects: list[EmbeddedReference] = []
for i, embedding in enumerate(doc_embeddings):
    embedding_objects.append(EmbeddedReference(
        embedding=embedding, metadata=metadata[i] if metadata is not None else None, content=texts[i]))
with open(paths.get('embeddingStorePath'), 'wb') as f: 
    pickle.dump(embedding_objects, f, pickle.HIGHEST_PROTOCOL)" style="color:#f6f6f4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dracula-soft" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #F6F6F4">embedding_objects: list[EmbeddedReference] </span><span style="color: #F286C4">=</span><span style="color: #F6F6F4"> []</span></span>
<span class="line"><span style="color: #F286C4">for</span><span style="color: #F6F6F4"> i, embedding </span><span style="color: #F286C4">in</span><span style="color: #F6F6F4"> </span><span style="color: #97E1F1">enumerate</span><span style="color: #F6F6F4">(doc_embeddings):</span></span>
<span class="line"><span style="color: #F6F6F4">    embedding_objects.append(EmbeddedReference(</span></span>
<span class="line"><span style="color: #F6F6F4">        </span><span style="color: #FFB86C; font-style: italic">embedding</span><span style="color: #F286C4">=</span><span style="color: #F6F6F4">embedding, </span><span style="color: #FFB86C; font-style: italic">metadata</span><span style="color: #F286C4">=</span><span style="color: #F6F6F4">metadata[i] </span><span style="color: #F286C4">if</span><span style="color: #F6F6F4"> metadata </span><span style="color: #F286C4">is</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">not</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">None</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">else</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">None</span><span style="color: #F6F6F4">, </span><span style="color: #FFB86C; font-style: italic">content</span><span style="color: #F286C4">=</span><span style="color: #F6F6F4">texts[i]))</span></span>
<span class="line"><span style="color: #F286C4">with</span><span style="color: #F6F6F4"> </span><span style="color: #97E1F1">open</span><span style="color: #F6F6F4">(paths.get(</span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">embeddingStorePath</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4">), </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">wb</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4">) </span><span style="color: #F286C4">as</span><span style="color: #F6F6F4"> f: </span></span>
<span class="line"><span style="color: #F6F6F4">    pickle.dump(embedding_objects, f, pickle.</span><span style="color: #BF9EEE">HIGHEST_PROTOCOL</span><span style="color: #F6F6F4">)</span></span></code></pre></div>



<p class="wp-block-paragraph">Then to read this back out and generate a list of the embeddings:</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-Fira-Code" style="font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-Fira-Code,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:clamp(24px, 1.5rem, 36px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#333545;color:#ebebe6">Python</span><span role="button" tabindex="0" data-code="embedding_objects: list[EmbeddedReference] = None
with open(mapPath, 'rb') as f:
    embedding_objects = pickle.load(f)

embeddingsArr = np.array([x.embedding for x in embedding_objects])" style="color:#f6f6f4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dracula-soft" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #F6F6F4">embedding_objects: list[EmbeddedReference] </span><span style="color: #F286C4">=</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">None</span></span>
<span class="line"><span style="color: #F286C4">with</span><span style="color: #F6F6F4"> </span><span style="color: #97E1F1">open</span><span style="color: #F6F6F4">(mapPath, </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">rb</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4">) </span><span style="color: #F286C4">as</span><span style="color: #F6F6F4"> f:</span></span>
<span class="line"><span style="color: #F6F6F4">    embedding_objects </span><span style="color: #F286C4">=</span><span style="color: #F6F6F4"> pickle.load(f)</span></span>
<span class="line"></span>
<span class="line"><span style="color: #F6F6F4">embeddingsArr </span><span style="color: #F286C4">=</span><span style="color: #F6F6F4"> np.array([x.embedding </span><span style="color: #F286C4">for</span><span style="color: #F6F6F4"> x </span><span style="color: #F286C4">in</span><span style="color: #F6F6F4"> embedding_objects])</span></span></code></pre></div>



<p class="wp-block-paragraph"></p>



<h3 class="wp-block-heading">Exploring the embedding model</h3>



<p class="wp-block-paragraph">The <code>create</code> command demonstrates taking an input PDF, chunking it, generating embeddings, and storing it to disk as cached embeddings, a vector store and the custom serialized model. </p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-Fira-Code" style="font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-Fira-Code,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:clamp(24px, 1.5rem, 36px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#333545;color:#ebebe6">Zsh</span><span role="button" tabindex="0" data-code="./run.sh -m create -f pair_programming.pdf
" style="color:#f6f6f4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dracula-soft" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #62E884">./run.sh</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">-m</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">create</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">-f</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">pair_programming.pdf</span></span>
<span class="line"></span></code></pre></div>



<p class="wp-block-paragraph">After the <code>create</code> command is run once, the <code>query</code> command lets you run queries against the built and persisted model. It takes an input string and returns (by leveraging the vector DB) the first 100 characters of three chunks of text in the document that are semantically closest to the input query.</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-Fira-Code" style="font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-Fira-Code,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:clamp(24px, 1.5rem, 36px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#333545;color:#ebebe6">Zsh</span><span role="button" tabindex="0" data-code="./run.sh -m query -q &quot;code clarity is a key indicator of success&quot;  -f pair_programming.pdf

# Outputs - first 100 characters of three closest matches
# [
#('[11].”In keeping with the known characteristics of code reviews, we find practitioners citing:• Mi', 0.34571558), 
# ('Coding standards are followed more accurately with the peer pressure to do so• Team members lea', 0.3501709), 
# ('The staff agreed with my points that pair programming: - Should significantly reduce the risk of su', 0.3555439)
#]" style="color:#f6f6f4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dracula-soft" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #62E884">./run.sh</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">-m</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">query</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">-q</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">code clarity is a key indicator of success</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4">  </span><span style="color: #BF9EEE">-f</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">pair_programming.pdf</span></span>
<span class="line"></span>
<span class="line"><span style="color: #7B7F8B"># Outputs - first 100 characters of three closest matches</span></span>
<span class="line"><span style="color: #7B7F8B"># [</span></span>
<span class="line"><span style="color: #7B7F8B">#(&#39;[11].”In keeping with the known characteristics of code reviews, we find practitioners citing:• Mi&#39;, 0.34571558), </span></span>
<span class="line"><span style="color: #7B7F8B"># (&#39;Coding standards are followed more accurately with the peer pressure to do so• Team members lea&#39;, 0.3501709), </span></span>
<span class="line"><span style="color: #7B7F8B"># (&#39;The staff agreed with my points that pair programming: - Should significantly reduce the risk of su&#39;, 0.3555439)</span></span>
<span class="line"><span style="color: #7B7F8B">#]</span></span></code></pre></div>



<p class="wp-block-paragraph"></p>



<h2 class="wp-block-heading">Clustering and visualizing embeddings</h2>



<h3 class="wp-block-heading">Generating clusters from embeddings</h3>



<p class="wp-block-paragraph">With the ability to generate, store and query embeddings solved, the next challenge is to demonstrate how the embeddings represent concepts. The key idea is to cluster the embeddings and see what groupings emerged and what they represent. Python has a very rich ecosystem for number analysis and since embeddings are just vectors of numbers all the popular Python libraries like <a href="https://numpy.org/">Numpy</a>, <a href="https://scikit-learn.org/stable/index.html">Scikit-learn</a> and <a href="https://pandas.pydata.org/">Pandas</a> can manipulate them.  The program leverages the <a href="https://scikit-learn.org/stable/index.html">scikit-learn</a> suite for its pre-built clustering algorithms. Clustering is a deep area and many of the modern algorithms can be very complex. Among the different algorithms I experimented with (HDBScan, MiniBatchKMeans, Optics), MiniBatchKMeans showed the best results.</p>



<p class="wp-block-paragraph">The following code shows how to cluster embeddings and references the <code>embeddingsArr</code> defined in the previous example. </p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-Fira-Code" style="font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-Fira-Code,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:clamp(24px, 1.5rem, 36px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#333545;color:#ebebe6">Python</span><span role="button" tabindex="0" data-code="# Runs the clustering algorithm over an array of embeddings (which themselves are long arrays)
clusters = MiniBatchKMeans().fit(embeddingsArr) 

# Get a set of all labels (e.x. 1,2,3,4,5)
labelSet = set([x for x in clusters.labels_ if x != -1])

# Get total number of labels (e.x. 5)
labelCount = len(labelSet)" style="color:#f6f6f4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dracula-soft" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #7B7F8B"># Runs the clustering algorithm over an array of embeddings (which themselves are long arrays)</span></span>
<span class="line"><span style="color: #F6F6F4">clusters </span><span style="color: #F286C4">=</span><span style="color: #F6F6F4"> MiniBatchKMeans().fit(embeddingsArr) </span></span>
<span class="line"></span>
<span class="line"><span style="color: #7B7F8B"># Get a set of all labels (e.x. 1,2,3,4,5)</span></span>
<span class="line"><span style="color: #F6F6F4">labelSet </span><span style="color: #F286C4">=</span><span style="color: #F6F6F4"> </span><span style="color: #97E1F1; font-style: italic">set</span><span style="color: #F6F6F4">([x </span><span style="color: #F286C4">for</span><span style="color: #F6F6F4"> x </span><span style="color: #F286C4">in</span><span style="color: #F6F6F4"> clusters.labels_ </span><span style="color: #F286C4">if</span><span style="color: #F6F6F4"> x </span><span style="color: #F286C4">!=</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">-</span><span style="color: #BF9EEE">1</span><span style="color: #F6F6F4">])</span></span>
<span class="line"></span>
<span class="line"><span style="color: #7B7F8B"># Get total number of labels (e.x. 5)</span></span>
<span class="line"><span style="color: #F6F6F4">labelCount </span><span style="color: #F286C4">=</span><span style="color: #F6F6F4"> </span><span style="color: #97E1F1">len</span><span style="color: #F6F6F4">(labelSet)</span></span></code></pre></div>



<p class="wp-block-paragraph">The output of the clustering algorithm is a set of labels (<code>clusters.labels_</code>) with a label per input embedding. This tells you which group the clustering algorithm assigned to that embedding. </p>



<p class="wp-block-paragraph">But how do we know if those groupings make sense? The labels are just a number with no innate meaning. This led to the next challenge of visualizing the results of the clustering to understand what (if anything) the grouping of chunks labeled <code>0</code>, <code>1</code> or 2 have in common. </p>



<p class="wp-block-paragraph"></p>



<h3 class="wp-block-heading">Visualizing clusters</h3>



<p class="wp-block-paragraph">The application generates three visualizations for the clustered embeddings:</p>



<ol class="wp-block-list">
<li>A histogram of the frequency of the labels</li>



<li>A scatter plot of the embeddings in 3-dimensional space with labels mapped to colors</li>



<li>A data table for inspecting the chunks and their labels</li>
</ol>



<p class="wp-block-paragraph"></p>



<h4 class="wp-block-heading">Histogram </h4>



<p class="wp-block-paragraph">The histogram of label and chunk counts is created using the <a href="https://matplotlib.org/">Matplotlib</a> library in combination with Numpy&#8217;s histogram method. </p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-Fira-Code" style="font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-Fira-Code,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:clamp(24px, 1.5rem, 36px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#333545;color:#ebebe6">Python</span><span role="button" tabindex="0" data-code="color_palette = sns.color_palette('Paired', labelCount + 1)

# Render histogram of the clusters
labels = np.array(clusters.labels_)
hist, bin_edges = np.histogram(
    labels, bins=range(-1, labelCount + 1))
fig1 = plt.figure()
f1 = fig1.add_subplot()
f1.bar(bin_edges[:-1], hist, width=1, ec=&quot;black&quot;, color=[
    (0.5, 0.5, 0.5), *color_palette])
plt.xlim(min(bin_edges), max(bin_edges))
f1.set_xlabel('Cluster')
f1.set_ylabel('Count')
f1.grid(True)" style="color:#f6f6f4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dracula-soft" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #F6F6F4">color_palette </span><span style="color: #F286C4">=</span><span style="color: #F6F6F4"> sns.color_palette(</span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">Paired</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4">, labelCount </span><span style="color: #F286C4">+</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">1</span><span style="color: #F6F6F4">)</span></span>
<span class="line"></span>
<span class="line"><span style="color: #7B7F8B"># Render histogram of the clusters</span></span>
<span class="line"><span style="color: #F6F6F4">labels </span><span style="color: #F286C4">=</span><span style="color: #F6F6F4"> np.array(clusters.labels_)</span></span>
<span class="line"><span style="color: #F6F6F4">hist, bin_edges </span><span style="color: #F286C4">=</span><span style="color: #F6F6F4"> np.histogram(</span></span>
<span class="line"><span style="color: #F6F6F4">    labels, </span><span style="color: #FFB86C; font-style: italic">bins</span><span style="color: #F286C4">=</span><span style="color: #97E1F1">range</span><span style="color: #F6F6F4">(</span><span style="color: #F286C4">-</span><span style="color: #BF9EEE">1</span><span style="color: #F6F6F4">, labelCount </span><span style="color: #F286C4">+</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">1</span><span style="color: #F6F6F4">))</span></span>
<span class="line"><span style="color: #F6F6F4">fig1 </span><span style="color: #F286C4">=</span><span style="color: #F6F6F4"> plt.figure()</span></span>
<span class="line"><span style="color: #F6F6F4">f1 </span><span style="color: #F286C4">=</span><span style="color: #F6F6F4"> fig1.add_subplot()</span></span>
<span class="line"><span style="color: #F6F6F4">f1.bar(bin_edges[</span><span style="color: #F286C4">:-</span><span style="color: #BF9EEE">1</span><span style="color: #F6F6F4">], hist, </span><span style="color: #FFB86C; font-style: italic">width</span><span style="color: #F286C4">=</span><span style="color: #BF9EEE">1</span><span style="color: #F6F6F4">, </span><span style="color: #FFB86C; font-style: italic">ec</span><span style="color: #F286C4">=</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">black</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4">, </span><span style="color: #FFB86C; font-style: italic">color</span><span style="color: #F286C4">=</span><span style="color: #F6F6F4">[</span></span>
<span class="line"><span style="color: #F6F6F4">    (</span><span style="color: #BF9EEE">0.5</span><span style="color: #F6F6F4">, </span><span style="color: #BF9EEE">0.5</span><span style="color: #F6F6F4">, </span><span style="color: #BF9EEE">0.5</span><span style="color: #F6F6F4">), </span><span style="color: #F286C4">*</span><span style="color: #F6F6F4">color_palette])</span></span>
<span class="line"><span style="color: #F6F6F4">plt.xlim(</span><span style="color: #97E1F1">min</span><span style="color: #F6F6F4">(bin_edges), </span><span style="color: #97E1F1">max</span><span style="color: #F6F6F4">(bin_edges))</span></span>
<span class="line"><span style="color: #F6F6F4">f1.set_xlabel(</span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">Cluster</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4">)</span></span>
<span class="line"><span style="color: #F6F6F4">f1.set_ylabel(</span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">Count</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4">)</span></span>
<span class="line"><span style="color: #F6F6F4">f1.grid(</span><span style="color: #BF9EEE">True</span><span style="color: #F6F6F4">)</span></span></code></pre></div>



<figure class="wp-block-image size-full"><a href="https://matthewmanela.com/wp-content/uploads/2023/10/image-5.png"><img loading="lazy" decoding="async" width="595" height="463" src="https://matthewmanela.com/wp-content/uploads/2023/10/image-5.png" alt="" class="wp-image-2834" srcset="https://matthewmanela.com/wp-content/uploads/2023/10/image-5.png 595w, https://matthewmanela.com/wp-content/uploads/2023/10/image-5-300x233.png 300w" sizes="auto, (max-width: 595px) 100vw, 595px" /></a></figure>



<p class="wp-block-paragraph"></p>



<h4 class="wp-block-heading">3D Scatter Plot</h4>



<p class="wp-block-paragraph">Generating the scatter plot is more complicated. The problem is that embeddings are 1500 numbers long and to plot in 3D we need to reduce the dimensionality. There are many techniques to do this but the <a href="https://en.wikipedia.org/wiki/T-distributed_stochastic_neighbor_embedding">t-SNE</a> (T-distributed Stochastic Neighbor Embedding) library in Scikit-Learn worked well for this case. </p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">t-SNE [1] is a tool to visualize high-dimensional data. It converts similarities between data points to joint probabilities and tries to minimize the Kullback-Leibler divergence between the joint probabilities of the low-dimensional embedding and the high-dimensional data. t-SNE has a cost function that is not convex, i.e., with different initializations we can get different results.</p>
</blockquote>



<p class="wp-block-paragraph">t-SNE takes the 1500-dimension embedding vectors and projects them to 3-dimensionql vectors minimizing the probabilistic difference between the full and reduced data set. With the vector space in 3D, Matplotlib&#8217;s scatter chart can plot it. Each clustered label is mapped to a different color. The interesting result is that there are two representations of &#8220;similarity&#8221;. One is from the clustering algorithm represented by points in the graph with the same color. The other is by points in the graph visually close to each other due to the projection by t-SNE. Based on the analysis, the clustering algorithm&#8217;s labelling is more accurate, likely because it has more information at its disposal (all 1500 dimensions).</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-Fira-Code" style="font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-Fira-Code,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:clamp(24px, 1.5rem, 36px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#333545;color:#ebebe6">Python</span><span role="button" tabindex="0" data-code="# Project the embeddings to 3 dimensions
projection = TSNE(n_components=3).fit_transform(embeddingsArr)

 
# Scatter plot by first projecting the n-dimensional embeddings into 3D
# then by using the cluster from HBSCAN to color the points
color_palette = sns.color_palette('Paired', labelCount + 1)
cluster_colors = [color_palette[x] if x &gt;= 0
                  else (0.5, 0.5, 0.5)
                  for x in clusters.labels_] 
                  
fig2 = plt.figure(figsize=(10, 10))
ax = fig2.add_subplot(projection='3d')
ax.scatter(*projection.T, linewidth=0,
           c=cluster_colors, alpha=1)
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_zlabel('z')
 
plt.show()" style="color:#f6f6f4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dracula-soft" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #7B7F8B"># Project the embeddings to 3 dimensions</span></span>
<span class="line"><span style="color: #F6F6F4">projection </span><span style="color: #F286C4">=</span><span style="color: #F6F6F4"> TSNE(</span><span style="color: #FFB86C; font-style: italic">n_components</span><span style="color: #F286C4">=</span><span style="color: #BF9EEE">3</span><span style="color: #F6F6F4">).fit_transform(embeddingsArr)</span></span>
<span class="line"></span>
<span class="line"><span style="color: #F6F6F4"> </span></span>
<span class="line"><span style="color: #7B7F8B"># Scatter plot by first projecting the n-dimensional embeddings into 3D</span></span>
<span class="line"><span style="color: #7B7F8B"># then by using the cluster from HBSCAN to color the points</span></span>
<span class="line"><span style="color: #F6F6F4">color_palette </span><span style="color: #F286C4">=</span><span style="color: #F6F6F4"> sns.color_palette(</span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">Paired</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4">, labelCount </span><span style="color: #F286C4">+</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">1</span><span style="color: #F6F6F4">)</span></span>
<span class="line"><span style="color: #F6F6F4">cluster_colors </span><span style="color: #F286C4">=</span><span style="color: #F6F6F4"> [color_palette[x] </span><span style="color: #F286C4">if</span><span style="color: #F6F6F4"> x </span><span style="color: #F286C4">&gt;=</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">0</span></span>
<span class="line"><span style="color: #F6F6F4">                  </span><span style="color: #F286C4">else</span><span style="color: #F6F6F4"> (</span><span style="color: #BF9EEE">0.5</span><span style="color: #F6F6F4">, </span><span style="color: #BF9EEE">0.5</span><span style="color: #F6F6F4">, </span><span style="color: #BF9EEE">0.5</span><span style="color: #F6F6F4">)</span></span>
<span class="line"><span style="color: #F6F6F4">                  </span><span style="color: #F286C4">for</span><span style="color: #F6F6F4"> x </span><span style="color: #F286C4">in</span><span style="color: #F6F6F4"> clusters.labels_] </span></span>
<span class="line"><span style="color: #F6F6F4">                  </span></span>
<span class="line"><span style="color: #F6F6F4">fig2 </span><span style="color: #F286C4">=</span><span style="color: #F6F6F4"> plt.figure(</span><span style="color: #FFB86C; font-style: italic">figsize</span><span style="color: #F286C4">=</span><span style="color: #F6F6F4">(</span><span style="color: #BF9EEE">10</span><span style="color: #F6F6F4">, </span><span style="color: #BF9EEE">10</span><span style="color: #F6F6F4">))</span></span>
<span class="line"><span style="color: #F6F6F4">ax </span><span style="color: #F286C4">=</span><span style="color: #F6F6F4"> fig2.add_subplot(</span><span style="color: #FFB86C; font-style: italic">projection</span><span style="color: #F286C4">=</span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">3d</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4">)</span></span>
<span class="line"><span style="color: #F6F6F4">ax.scatter(</span><span style="color: #F286C4">*</span><span style="color: #F6F6F4">projection.T, </span><span style="color: #FFB86C; font-style: italic">linewidth</span><span style="color: #F286C4">=</span><span style="color: #BF9EEE">0</span><span style="color: #F6F6F4">,</span></span>
<span class="line"><span style="color: #F6F6F4">           </span><span style="color: #FFB86C; font-style: italic">c</span><span style="color: #F286C4">=</span><span style="color: #F6F6F4">cluster_colors, </span><span style="color: #FFB86C; font-style: italic">alpha</span><span style="color: #F286C4">=</span><span style="color: #BF9EEE">1</span><span style="color: #F6F6F4">)</span></span>
<span class="line"><span style="color: #F6F6F4">ax.set_xlabel(</span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">x</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4">)</span></span>
<span class="line"><span style="color: #F6F6F4">ax.set_ylabel(</span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">y</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4">)</span></span>
<span class="line"><span style="color: #F6F6F4">ax.set_zlabel(</span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">z</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4">)</span></span>
<span class="line"><span style="color: #F6F6F4"> </span></span>
<span class="line"><span style="color: #F6F6F4">plt.show()</span></span></code></pre></div>



<p class="wp-block-paragraph"><img decoding="async" src="data:image/png;base64,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" alt=""></p>



<p class="wp-block-paragraph"></p>



<h4 class="wp-block-heading">Data Table</h4>



<p class="wp-block-paragraph">The last visualization is a data table to show the results in a readable manner. The <a href="https://pandas.pydata.org/">Pandas</a> library&#8217;s `DataFrame` is used to generate a table with the cluster&#8217;s label and first 100 characters of the embeddings source text. </p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-Fira-Code" style="font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-Fira-Code,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:clamp(24px, 1.5rem, 36px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#333545;color:#ebebe6">Python</span><span role="button" tabindex="0" data-code="df = pd.DataFrame({
    &quot;cluster&quot;:  clusters.labels_,  
    &quot;page_num&quot;: [embedding_object.metadata['page'] for embedding_object in embedding_objects],
    &quot;snippet&quot;: [embedding_object.content[0:100] for embedding_object in embedding_objects], 
})

df = df.sort_values(by=['cluster'])
print(df.to_string())" style="color:#f6f6f4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dracula-soft" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #F6F6F4">df </span><span style="color: #F286C4">=</span><span style="color: #F6F6F4"> pd.DataFrame({</span></span>
<span class="line"><span style="color: #F6F6F4">    </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">cluster</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4">:  clusters.labels_,  </span></span>
<span class="line"><span style="color: #F6F6F4">    </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">page_num</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4">: [embedding_object.metadata[</span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">page</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4">] </span><span style="color: #F286C4">for</span><span style="color: #F6F6F4"> embedding_object </span><span style="color: #F286C4">in</span><span style="color: #F6F6F4"> embedding_objects],</span></span>
<span class="line"><span style="color: #F6F6F4">    </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">snippet</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4">: [embedding_object.content[</span><span style="color: #BF9EEE">0</span><span style="color: #F286C4">:</span><span style="color: #BF9EEE">100</span><span style="color: #F6F6F4">] </span><span style="color: #F286C4">for</span><span style="color: #F6F6F4"> embedding_object </span><span style="color: #F286C4">in</span><span style="color: #F6F6F4"> embedding_objects], </span></span>
<span class="line"><span style="color: #F6F6F4">})</span></span>
<span class="line"></span>
<span class="line"><span style="color: #F6F6F4">df </span><span style="color: #F286C4">=</span><span style="color: #F6F6F4"> df.sort_values(</span><span style="color: #FFB86C; font-style: italic">by</span><span style="color: #F286C4">=</span><span style="color: #F6F6F4">[</span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">cluster</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4">])</span></span>
<span class="line"><span style="color: #97E1F1">print</span><span style="color: #F6F6F4">(df.to_string())</span></span></code></pre></div>



<p class="wp-block-paragraph">This prints a table which I spent time analyzing and trying to figure out which concepts it was grouping by.</p>



<figure class="wp-block-image size-full"><a href="https://matthewmanela.com/wp-content/uploads/2023/10/image-1.png"><img loading="lazy" decoding="async" width="985" height="345" src="https://matthewmanela.com/wp-content/uploads/2023/10/image-1.png" alt="" class="wp-image-2819" srcset="https://matthewmanela.com/wp-content/uploads/2023/10/image-1.png 985w, https://matthewmanela.com/wp-content/uploads/2023/10/image-1-300x105.png 300w, https://matthewmanela.com/wp-content/uploads/2023/10/image-1-768x269.png 768w" sizes="auto, (max-width: 985px) 100vw, 985px" /></a></figure>



<p class="wp-block-paragraph"></p>



<h2 class="wp-block-heading">Semantically Labelling Each Cluster</h2>



<p class="wp-block-paragraph">Grouping the chunks of text semantically together and manually looking for conceptual similarities is interesting, but we can further leverage embeddings to name the concepts the clusters represent automatically. The approach I took is to generate embeddings for each word in the dictionary. Then by leveraging the vector DB we can find the words closest to each cluster. To represent the cluster as a single point in embedding space we find its centroid (the geometric average of all the embeddings). This builds on the idea that the position in the 1500-dimensional embedding space has semantic meaning, and the average of the points represent a common meaning of them all.  This is an intriguing thought and worthy of further exploration to understand change of conceptual meaning by traversing the embedding space.</p>


<div class="wp-block-image">
<figure class="aligncenter size-medium"><a href="https://matthewmanela.com/wp-content/uploads/2023/10/image-7.png"><img loading="lazy" decoding="async" width="300" height="242" src="https://matthewmanela.com/wp-content/uploads/2023/10/image-7-300x242.png" alt="" class="wp-image-3140" srcset="https://matthewmanela.com/wp-content/uploads/2023/10/image-7-300x242.png 300w, https://matthewmanela.com/wp-content/uploads/2023/10/image-7-1024x827.png 1024w, https://matthewmanela.com/wp-content/uploads/2023/10/image-7-768x620.png 768w, https://matthewmanela.com/wp-content/uploads/2023/10/image-7.png 1280w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><figcaption class="wp-element-caption">Centroid of a set of points</figcaption></figure>
</div>


<p class="wp-block-paragraph"></p>



<h3 class="wp-block-heading">Generating word embeddings</h3>



<p class="wp-block-paragraph">I use the <a href="http://wordlist.aspell.net/">SCOWL</a> database of English words (which I learned about on a <a href="https://matthewmanela.com/anagram-ladder/">previous project</a>) as the dictionary. It provides word lists categorized by commonality (list 10 being the most common words through list 90 being the least). Combining word lists 10 through 70 yielded the best results.   </p>



<p class="wp-block-paragraph">This list when concatenated all together is 111,814 words long! After analyzing it, I noticed there is a very large amount of the same word with different endings (like biologist and biologists). To minimize these, I used the <a href="https://en.wikipedia.org/wiki/Lemmatization">lemmatization</a> processing class in <a href="https://www.nltk.org/">NLTK</a> called <code>WordNetLemmatizer</code> to post-process the word list. This results in a new word list of length 88,314.  This process does not yield perfect results but helps lessen the potential dupe word meanings. </p>



<p class="wp-block-paragraph">The following code shows how to lemmatize a list of words.</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-Fira-Code" style="font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-Fira-Code,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:clamp(24px, 1.5rem, 36px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#333545;color:#ebebe6">Python</span><span role="button" tabindex="0" data-code="import os 
from nltk.stem import WordNetLemmatizer

with open(WORDS_FILE, 'r') as file:
    words = file.readlines()

wnl = WordNetLemmatizer()

stemmed_words = set([wnl.lemmatize(word.strip())
                    for word in words if len(word) &gt; 0])
sorted_words = sorted(stemmed_words)" style="color:#f6f6f4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dracula-soft" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #F286C4">import</span><span style="color: #F6F6F4"> os </span></span>
<span class="line"><span style="color: #F286C4">from</span><span style="color: #F6F6F4"> nltk.stem </span><span style="color: #F286C4">import</span><span style="color: #F6F6F4"> WordNetLemmatizer</span></span>
<span class="line"></span>
<span class="line"><span style="color: #F286C4">with</span><span style="color: #F6F6F4"> </span><span style="color: #97E1F1">open</span><span style="color: #F6F6F4">(</span><span style="color: #BF9EEE">WORDS_FILE</span><span style="color: #F6F6F4">, </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">r</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4">) </span><span style="color: #F286C4">as</span><span style="color: #F6F6F4"> file:</span></span>
<span class="line"><span style="color: #F6F6F4">    words </span><span style="color: #F286C4">=</span><span style="color: #F6F6F4"> file.readlines()</span></span>
<span class="line"></span>
<span class="line"><span style="color: #F6F6F4">wnl </span><span style="color: #F286C4">=</span><span style="color: #F6F6F4"> WordNetLemmatizer()</span></span>
<span class="line"></span>
<span class="line"><span style="color: #F6F6F4">stemmed_words </span><span style="color: #F286C4">=</span><span style="color: #F6F6F4"> </span><span style="color: #97E1F1; font-style: italic">set</span><span style="color: #F6F6F4">([wnl.lemmatize(word.strip())</span></span>
<span class="line"><span style="color: #F6F6F4">                    </span><span style="color: #F286C4">for</span><span style="color: #F6F6F4"> word </span><span style="color: #F286C4">in</span><span style="color: #F6F6F4"> words </span><span style="color: #F286C4">if</span><span style="color: #F6F6F4"> </span><span style="color: #97E1F1">len</span><span style="color: #F6F6F4">(word) </span><span style="color: #F286C4">&gt;</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">0</span><span style="color: #F6F6F4">])</span></span>
<span class="line"><span style="color: #F6F6F4">sorted_words </span><span style="color: #F286C4">=</span><span style="color: #F6F6F4"> </span><span style="color: #97E1F1">sorted</span><span style="color: #F6F6F4">(stemmed_words)</span></span></code></pre></div>



<p class="wp-block-paragraph">With the list of words saved, we can iterate over that list and generate embeddings for each one and persist them to disk in the same way as the chunks of the document.  </p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-Fira-Code" style="font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-Fira-Code,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:clamp(24px, 1.5rem, 36px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#333545;color:#ebebe6">Python</span><span role="button" tabindex="0" data-code="word_embeddings = cached_embedder.embed_documents(sorted_words)" style="color:#f6f6f4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dracula-soft" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #F6F6F4">word_embeddings </span><span style="color: #F286C4">=</span><span style="color: #F6F6F4"> cached_embedder.embed_documents(sorted_words)</span></span></code></pre></div>



<p class="wp-block-paragraph"></p>



<h3 class="wp-block-heading">Exploring word embeddings</h3>



<p class="wp-block-paragraph">In the application the command <code>create_dict</code> generates the embeddings for all 80,000 words. This takes a long time to run so be patient with it.</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-Fira-Code" style="font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-Fira-Code,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:clamp(24px, 1.5rem, 36px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#333545;color:#ebebe6">Zsh</span><span role="button" tabindex="0" data-code="./run.sh -m create_dict" style="color:#f6f6f4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dracula-soft" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #62E884">./run.sh</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">-m</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">create_dict</span></span></code></pre></div>



<p class="wp-block-paragraph">Once that has finished successfully, the <code>query_dict</code> command takes an input string and finds top 3 closest words (and includes their Euclidean distance from the query text) in the embedding space. </p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-Fira-Code" style="font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-Fira-Code,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:clamp(24px, 1.5rem, 36px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#333545;color:#ebebe6">Python</span><span role="button" tabindex="0" data-code="./run.sh -m query_dict -q &quot;If every instinct you have is wrong, then the opposite would have to be right.

# Outputs
# [('contrapositive', 0.3559821), 
#  ('wrongness', 0.35792178), 
#  ('instinct', 0.35800213)]" style="color:#f6f6f4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dracula-soft" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #F6F6F4">.</span><span style="color: #F286C4">/</span><span style="color: #F6F6F4">run.sh </span><span style="color: #F286C4">-</span><span style="color: #F6F6F4">m query_dict </span><span style="color: #F286C4">-</span><span style="color: #F6F6F4">q </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">If every instinct you have is wrong, then the opposite would have to be right.</span></span>
<span class="line"></span>
<span class="line"><span style="color: #7B7F8B"># Outputs</span></span>
<span class="line"><span style="color: #7B7F8B"># [(&#39;contrapositive&#39;, 0.3559821), </span></span>
<span class="line"><span style="color: #7B7F8B">#  (&#39;wrongness&#39;, 0.35792178), </span></span>
<span class="line"><span style="color: #7B7F8B">#  (&#39;instinct&#39;, 0.35800213)]</span></span></code></pre></div>



<p class="wp-block-paragraph"></p>



<h3 class="wp-block-heading">Labeling the clusters</h3>



<p class="wp-block-paragraph">With the word embeddings built, we generate the describing words for each cluster by calculating the centroid (the average of all the embeddings in the cluster) and finding the words closest to the centroid.  </p>



<p class="wp-block-paragraph">By converting the embeddings into a Numpy array we can use its <code>mean</code> function to calculate the array of averages. For each cluster calculate this average and pass this vector into the vector DB <code>similarity_search_with_score_by_vector</code> method to find the words that best describe that cluster.</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-Fira-Code" style="font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-Fira-Code,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:clamp(24px, 1.5rem, 36px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#333545;color:#ebebe6">Python</span><span role="button" tabindex="0" data-code="# Enumerate each cluster label
for cluster in labelSet:
  print(f'Finding centroid for Cluster {cluster}')
  
  # Calculate the centroid for the cluster
  cluster_embeddings = np.array([x for i, x in enumerate(
     embeddingsArr) if clusters.labels_[i] == cluster])
  mean = cluster_embeddings.mean(axis=0)
  
  print(f'Centroid for cluster {cluster} is {mean}')
  
  # Use the centroid to find words to summarize the cluster
  word_matches = words_index.similarity_search_with_score_by_vector(
      mean, 3)
  word_and_scores = [(x[0].page_content[0:SNIPPET_LENGTH], x[1])
                     for x in word_matches if x[0].page_content]
  print(f'Words for cluster {cluster} are {word_and_scores}')
  
  # Use tuple of top two matching words to categorize the groups
  clusterCategory[cluster] = f'{word_and_scores[0]},{word_and_scores[1]}'" style="color:#f6f6f4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dracula-soft" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #7B7F8B"># Enumerate each cluster label</span></span>
<span class="line"><span style="color: #F286C4">for</span><span style="color: #F6F6F4"> cluster </span><span style="color: #F286C4">in</span><span style="color: #F6F6F4"> labelSet:</span></span>
<span class="line"><span style="color: #F6F6F4">  </span><span style="color: #97E1F1">print</span><span style="color: #F6F6F4">(</span><span style="color: #F286C4">f</span><span style="color: #E7EE98">&#39;Finding centroid for Cluster </span><span style="color: #BF9EEE">{</span><span style="color: #F6F6F4">cluster</span><span style="color: #BF9EEE">}</span><span style="color: #E7EE98">&#39;</span><span style="color: #F6F6F4">)</span></span>
<span class="line"><span style="color: #F6F6F4">  </span></span>
<span class="line"><span style="color: #F6F6F4">  </span><span style="color: #7B7F8B"># Calculate the centroid for the cluster</span></span>
<span class="line"><span style="color: #F6F6F4">  cluster_embeddings </span><span style="color: #F286C4">=</span><span style="color: #F6F6F4"> np.array([x </span><span style="color: #F286C4">for</span><span style="color: #F6F6F4"> i, x </span><span style="color: #F286C4">in</span><span style="color: #F6F6F4"> </span><span style="color: #97E1F1">enumerate</span><span style="color: #F6F6F4">(</span></span>
<span class="line"><span style="color: #F6F6F4">     embeddingsArr) </span><span style="color: #F286C4">if</span><span style="color: #F6F6F4"> clusters.labels_[i] </span><span style="color: #F286C4">==</span><span style="color: #F6F6F4"> cluster])</span></span>
<span class="line"><span style="color: #F6F6F4">  mean </span><span style="color: #F286C4">=</span><span style="color: #F6F6F4"> cluster_embeddings.mean(</span><span style="color: #FFB86C; font-style: italic">axis</span><span style="color: #F286C4">=</span><span style="color: #BF9EEE">0</span><span style="color: #F6F6F4">)</span></span>
<span class="line"><span style="color: #F6F6F4">  </span></span>
<span class="line"><span style="color: #F6F6F4">  </span><span style="color: #97E1F1">print</span><span style="color: #F6F6F4">(</span><span style="color: #F286C4">f</span><span style="color: #E7EE98">&#39;Centroid for cluster </span><span style="color: #BF9EEE">{</span><span style="color: #F6F6F4">cluster</span><span style="color: #BF9EEE">}</span><span style="color: #E7EE98"> is </span><span style="color: #BF9EEE">{</span><span style="color: #F6F6F4">mean</span><span style="color: #BF9EEE">}</span><span style="color: #E7EE98">&#39;</span><span style="color: #F6F6F4">)</span></span>
<span class="line"><span style="color: #F6F6F4">  </span></span>
<span class="line"><span style="color: #F6F6F4">  </span><span style="color: #7B7F8B"># Use the centroid to find words to summarize the cluster</span></span>
<span class="line"><span style="color: #F6F6F4">  word_matches </span><span style="color: #F286C4">=</span><span style="color: #F6F6F4"> words_index.similarity_search_with_score_by_vector(</span></span>
<span class="line"><span style="color: #F6F6F4">      mean, </span><span style="color: #BF9EEE">3</span><span style="color: #F6F6F4">)</span></span>
<span class="line"><span style="color: #F6F6F4">  word_and_scores </span><span style="color: #F286C4">=</span><span style="color: #F6F6F4"> [(x[</span><span style="color: #BF9EEE">0</span><span style="color: #F6F6F4">].page_content[</span><span style="color: #BF9EEE">0</span><span style="color: #F286C4">:</span><span style="color: #BF9EEE">SNIPPET_LENGTH</span><span style="color: #F6F6F4">], x[</span><span style="color: #BF9EEE">1</span><span style="color: #F6F6F4">])</span></span>
<span class="line"><span style="color: #F6F6F4">                     </span><span style="color: #F286C4">for</span><span style="color: #F6F6F4"> x </span><span style="color: #F286C4">in</span><span style="color: #F6F6F4"> word_matches </span><span style="color: #F286C4">if</span><span style="color: #F6F6F4"> x[</span><span style="color: #BF9EEE">0</span><span style="color: #F6F6F4">].page_content]</span></span>
<span class="line"><span style="color: #F6F6F4">  </span><span style="color: #97E1F1">print</span><span style="color: #F6F6F4">(</span><span style="color: #F286C4">f</span><span style="color: #E7EE98">&#39;Words for cluster </span><span style="color: #BF9EEE">{</span><span style="color: #F6F6F4">cluster</span><span style="color: #BF9EEE">}</span><span style="color: #E7EE98"> are </span><span style="color: #BF9EEE">{</span><span style="color: #F6F6F4">word_and_scores</span><span style="color: #BF9EEE">}</span><span style="color: #E7EE98">&#39;</span><span style="color: #F6F6F4">)</span></span>
<span class="line"><span style="color: #F6F6F4">  </span></span>
<span class="line"><span style="color: #F6F6F4">  </span><span style="color: #7B7F8B"># Use tuple of top two matching words to categorize the groups</span></span>
<span class="line"><span style="color: #F6F6F4">  clusterCategory[cluster] </span><span style="color: #F286C4">=</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">f</span><span style="color: #E7EE98">&#39;</span><span style="color: #BF9EEE">{</span><span style="color: #F6F6F4">word_and_scores[</span><span style="color: #BF9EEE">0</span><span style="color: #F6F6F4">]</span><span style="color: #BF9EEE">}</span><span style="color: #E7EE98">,</span><span style="color: #BF9EEE">{</span><span style="color: #F6F6F4">word_and_scores[</span><span style="color: #BF9EEE">1</span><span style="color: #F6F6F4">]</span><span style="color: #BF9EEE">}</span><span style="color: #E7EE98">&#39;</span></span></code></pre></div>



<p class="wp-block-paragraph">Initially, I labelled each cluster with the topmost closest word match, but this led to several distinct clusters labeled with the same word: programming. If the article is primarily about programming, it makes sense that core topic in each chunk of text will match closely with that word. Including the second closest word adds much more clarity on the intent of that passage. For example, in one test two chunks of text that were labeled with &#8220;programming&#8221; changed to &#8220;programming, teamwork&#8221; and &#8220;programming, testing&#8221; respectively. Both clusters of passages are still about programming, but one set focuses more on teamwork while the other on testing.</p>



<p class="wp-block-paragraph">With the word labels created, we can update the graphs from earlier to add a legend naming each cluster. For example, the following shows adding the legend to the histogram:</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-Fira-Code" style="font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-Fira-Code,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:clamp(24px, 1.5rem, 36px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#333545;color:#ebebe6">Python</span><span role="button" tabindex="0" data-code="color_palette = sns.color_palette('Paired', labelCount + 1)

# Render histogram of the clusters
labels = np.array(clusters.labels_)
hist, bin_edges = np.histogram(
    labels, bins=range(-1, labelCount + 1))
fig1 = plt.figure()
f1 = fig1.add_subplot()
f1.bar(bin_edges[:-1], hist, width=1, ec=&quot;black&quot;, color=[
    (0.5, 0.5, 0.5), *color_palette])
plt.xlim(min(bin_edges), max(bin_edges))
f1.set_xlabel('Cluster')
f1.set_ylabel('Count')
f1.grid(True)

# Addition to add a legend
handles = []
for cluster in set(labels):
    if cluster &gt;= 0:
        handles.append(
            mpatches.Patch(color=color_palette[cluster], label=clusterCategory[cluster]))
    else:
        handles.append(
            mpatches.Patch(color=(0.5, 0.5, 0.5), label='None'))
f1.legend(handles=handles)" style="color:#f6f6f4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dracula-soft" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #F6F6F4">color_palette </span><span style="color: #F286C4">=</span><span style="color: #F6F6F4"> sns.color_palette(</span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">Paired</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4">, labelCount </span><span style="color: #F286C4">+</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">1</span><span style="color: #F6F6F4">)</span></span>
<span class="line"></span>
<span class="line"><span style="color: #7B7F8B"># Render histogram of the clusters</span></span>
<span class="line"><span style="color: #F6F6F4">labels </span><span style="color: #F286C4">=</span><span style="color: #F6F6F4"> np.array(clusters.labels_)</span></span>
<span class="line"><span style="color: #F6F6F4">hist, bin_edges </span><span style="color: #F286C4">=</span><span style="color: #F6F6F4"> np.histogram(</span></span>
<span class="line"><span style="color: #F6F6F4">    labels, </span><span style="color: #FFB86C; font-style: italic">bins</span><span style="color: #F286C4">=</span><span style="color: #97E1F1">range</span><span style="color: #F6F6F4">(</span><span style="color: #F286C4">-</span><span style="color: #BF9EEE">1</span><span style="color: #F6F6F4">, labelCount </span><span style="color: #F286C4">+</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">1</span><span style="color: #F6F6F4">))</span></span>
<span class="line"><span style="color: #F6F6F4">fig1 </span><span style="color: #F286C4">=</span><span style="color: #F6F6F4"> plt.figure()</span></span>
<span class="line"><span style="color: #F6F6F4">f1 </span><span style="color: #F286C4">=</span><span style="color: #F6F6F4"> fig1.add_subplot()</span></span>
<span class="line"><span style="color: #F6F6F4">f1.bar(bin_edges[</span><span style="color: #F286C4">:-</span><span style="color: #BF9EEE">1</span><span style="color: #F6F6F4">], hist, </span><span style="color: #FFB86C; font-style: italic">width</span><span style="color: #F286C4">=</span><span style="color: #BF9EEE">1</span><span style="color: #F6F6F4">, </span><span style="color: #FFB86C; font-style: italic">ec</span><span style="color: #F286C4">=</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">black</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4">, </span><span style="color: #FFB86C; font-style: italic">color</span><span style="color: #F286C4">=</span><span style="color: #F6F6F4">[</span></span>
<span class="line"><span style="color: #F6F6F4">    (</span><span style="color: #BF9EEE">0.5</span><span style="color: #F6F6F4">, </span><span style="color: #BF9EEE">0.5</span><span style="color: #F6F6F4">, </span><span style="color: #BF9EEE">0.5</span><span style="color: #F6F6F4">), </span><span style="color: #F286C4">*</span><span style="color: #F6F6F4">color_palette])</span></span>
<span class="line"><span style="color: #F6F6F4">plt.xlim(</span><span style="color: #97E1F1">min</span><span style="color: #F6F6F4">(bin_edges), </span><span style="color: #97E1F1">max</span><span style="color: #F6F6F4">(bin_edges))</span></span>
<span class="line"><span style="color: #F6F6F4">f1.set_xlabel(</span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">Cluster</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4">)</span></span>
<span class="line"><span style="color: #F6F6F4">f1.set_ylabel(</span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">Count</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4">)</span></span>
<span class="line"><span style="color: #F6F6F4">f1.grid(</span><span style="color: #BF9EEE">True</span><span style="color: #F6F6F4">)</span></span>
<span class="line"></span>
<span class="line"><span style="color: #7B7F8B"># Addition to add a legend</span></span>
<span class="line"><span style="color: #F6F6F4">handles </span><span style="color: #F286C4">=</span><span style="color: #F6F6F4"> []</span></span>
<span class="line"><span style="color: #F286C4">for</span><span style="color: #F6F6F4"> cluster </span><span style="color: #F286C4">in</span><span style="color: #F6F6F4"> </span><span style="color: #97E1F1; font-style: italic">set</span><span style="color: #F6F6F4">(labels):</span></span>
<span class="line"><span style="color: #F6F6F4">    </span><span style="color: #F286C4">if</span><span style="color: #F6F6F4"> cluster </span><span style="color: #F286C4">&gt;=</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">0</span><span style="color: #F6F6F4">:</span></span>
<span class="line"><span style="color: #F6F6F4">        handles.append(</span></span>
<span class="line"><span style="color: #F6F6F4">            mpatches.Patch(</span><span style="color: #FFB86C; font-style: italic">color</span><span style="color: #F286C4">=</span><span style="color: #F6F6F4">color_palette[cluster], </span><span style="color: #FFB86C; font-style: italic">label</span><span style="color: #F286C4">=</span><span style="color: #F6F6F4">clusterCategory[cluster]))</span></span>
<span class="line"><span style="color: #F6F6F4">    </span><span style="color: #F286C4">else</span><span style="color: #F6F6F4">:</span></span>
<span class="line"><span style="color: #F6F6F4">        handles.append(</span></span>
<span class="line"><span style="color: #F6F6F4">            mpatches.Patch(</span><span style="color: #FFB86C; font-style: italic">color</span><span style="color: #F286C4">=</span><span style="color: #F6F6F4">(</span><span style="color: #BF9EEE">0.5</span><span style="color: #F6F6F4">, </span><span style="color: #BF9EEE">0.5</span><span style="color: #F6F6F4">, </span><span style="color: #BF9EEE">0.5</span><span style="color: #F6F6F4">), </span><span style="color: #FFB86C; font-style: italic">label</span><span style="color: #F286C4">=</span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">None</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4">))</span></span>
<span class="line"><span style="color: #F6F6F4">f1.legend(</span><span style="color: #FFB86C; font-style: italic">handles</span><span style="color: #F286C4">=</span><span style="color: #F6F6F4">handles)</span></span></code></pre></div>



<p class="wp-block-paragraph">To generate the final charts showing the 3D scatter plot and the histogram with the categorized cluster labels, run the <code>analyze</code> command.</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-Fira-Code" style="font-size:clamp(16px, 1rem, 24px);font-family:Code-Pro-Fira-Code,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:clamp(24px, 1.5rem, 36px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#333545;color:#ebebe6">Zsh</span><span role="button" tabindex="0" data-code="./run.sh -m analyze -f pair_programming.pdf " style="color:#f6f6f4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dracula-soft" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #62E884">./run.sh</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">-m</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">analyze</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">-f</span><span style="color: #F6F6F4"> </span><span style="color: #E7EE98">pair_programming.pdf</span><span style="color: #F6F6F4"> </span></span></code></pre></div>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">Which outputs:</p>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image size-full"><a href="https://matthewmanela.com/wp-content/uploads/2023/10/image-9.png"><img loading="lazy" decoding="async" width="605" height="422" src="https://matthewmanela.com/wp-content/uploads/2023/10/image-9.png" alt="" class="wp-image-3208" srcset="https://matthewmanela.com/wp-content/uploads/2023/10/image-9.png 605w, https://matthewmanela.com/wp-content/uploads/2023/10/image-9-300x209.png 300w" sizes="auto, (max-width: 605px) 100vw, 605px" /></a></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image size-full"><a href="https://matthewmanela.com/wp-content/uploads/2023/10/image-8.png"><img loading="lazy" decoding="async" width="830" height="758" src="https://matthewmanela.com/wp-content/uploads/2023/10/image-8.png" alt="" class="wp-image-3207" srcset="https://matthewmanela.com/wp-content/uploads/2023/10/image-8.png 830w, https://matthewmanela.com/wp-content/uploads/2023/10/image-8-300x274.png 300w, https://matthewmanela.com/wp-content/uploads/2023/10/image-8-768x701.png 768w" sizes="auto, (max-width: 830px) 100vw, 830px" /></a></figure>
</div>
</div>



<p class="wp-block-paragraph"></p>



<h2 class="wp-block-heading">Conclusion</h2>



<p class="wp-block-paragraph">It is deeply intriguing thinking about ideas existing in a N-dimensional space and using distance calculations to find interrelations between concepts. This program only scratches the surface on the possibilities in this space. The tools and libraries that have grown around LLM&#8217;s (like LangChain) make exploration in this space easy and understandable. I am eager to see and read more and hopefully experiment further on the power of embeddings.</p>



<p class="wp-block-paragraph">The finished application is <a href="https://github.com/mmanela/llm-embeddings">available on GitHub</a>, check it out and let me know what you think.</p>
<p>The post <a href="https://matthewmanela.com/blog/exploring-the-power-of-llm-embeddings/">Exploring the power of LLM Embeddings</a> appeared first on <a href="https://matthewmanela.com">Matthew Manela</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Joint Accountability</title>
		<link>https://matthewmanela.com/blog/joint-accountability/</link>
		
		<dc:creator><![CDATA[Matthew Manela]]></dc:creator>
		<pubDate>Fri, 13 Oct 2023 00:51:58 +0000</pubDate>
				<category><![CDATA[Engineering Management]]></category>
		<category><![CDATA[Software Teams]]></category>
		<guid isPermaLink="false">https://matthewmanela.com/?p=2100</guid>

					<description><![CDATA[<p>Throughout my career as a software engineering manager, I have built a metaphorical toolbox containing methods and techniques for building strong, compassionate, and productive teams. One of the key tools is assigning engineers joint accountability to projects. For significant features or changes, I ensure that two people are accountable for delivery, quality, communication, and success <a class="read-more" href="https://matthewmanela.com/blog/joint-accountability/">&#8230;&#160;<span class="meta-nav">&#8594;</span></a></p>
<p>The post <a href="https://matthewmanela.com/blog/joint-accountability/">Joint Accountability</a> appeared first on <a href="https://matthewmanela.com">Matthew Manela</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-full"><a href="https://matthewmanela.com/wp-content/uploads/2023/10/pairHouse3.jpeg"><img loading="lazy" decoding="async" width="1024" height="640" src="https://matthewmanela.com/wp-content/uploads/2023/10/pairHouse3-edited.jpeg" alt="" class="wp-image-2588" srcset="https://matthewmanela.com/wp-content/uploads/2023/10/pairHouse3-edited.jpeg 1024w, https://matthewmanela.com/wp-content/uploads/2023/10/pairHouse3-edited-300x188.jpeg 300w, https://matthewmanela.com/wp-content/uploads/2023/10/pairHouse3-edited-768x480.jpeg 768w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure>



<p class="wp-block-paragraph">Throughout my career as a software engineering manager, I have built a metaphorical toolbox containing methods and techniques for building strong, compassionate, and productive teams.  One of the key tools is assigning engineers joint accountability to projects. For significant features or changes, I ensure that two people are accountable for delivery, quality, communication, and success of the work. This has numerous benefits and has become a critical tool in managing remote teams. </p>



<p class="wp-block-paragraph">Assigning joint accountability with proper guidance and training leads to higher quality code, greater team cohesiveness, more engaged engineers, better interpersonal awareness (EQ), and higher productivity. </p>



<p class="wp-block-paragraph">I landed on this concept as an avid pair programmer and built on it while running teams for years. I experimented with many techniques and learned where pair programming worked well and where it didn&#8217;t. I learned about different personality types and how individuals react based on the type of work and deadlines. My experiences led me to shift from an ideological position of &#8220;pair programming for all&#8221; to my implementation of jo<em>int accountability. </em>Joint accountability is a way to get the benefits of pair programming but in a more flexible and general way. </p>



<p class="wp-block-paragraph"></p>



<h2 class="wp-block-heading">Starting off with pair programming</h2>



<p class="wp-block-paragraph">Shortly after I joined Microsoft out of college, I landed on a team that practiced pair programming. The concept petrified me. <a href="https://en.wikipedia.org/wiki/Pair_programming">Pair Programming</a> is the development technique where two engineers work together at one workstation (physical or virtual). One engineer is typing while the other one observes, discusses, comments, and directs. As a young engineer with a ton of imposter syndrome, I had many thoughts when I first pair programmed:</p>



<div class="wp-block-media-text has-media-on-the-right is-stacked-on-mobile is-image-fill" style="grid-template-columns:auto 45%"><div class="wp-block-media-text__content">
<ul class="wp-block-list">
<li class="has-medium-font-size">You mean someone is going to watch me &#8230;. type? </li>



<li class="has-medium-font-size">What if they realize I am a fraud?  </li>



<li class="has-medium-font-size">What if it turns out everyone is just way better than me? </li>
</ul>



<p class="wp-block-paragraph"></p>
</div><figure class="wp-block-media-text__media" style="background-image:url(https://matthewmanela.com/wp-content/uploads/2023/10/kittkenPair.jpeg);background-position:57% 50%"><img loading="lazy" decoding="async" width="1024" height="1024" src="https://matthewmanela.com/wp-content/uploads/2023/10/kittkenPair.jpeg" alt="" class="wp-image-2595 size-full" srcset="https://matthewmanela.com/wp-content/uploads/2023/10/kittkenPair.jpeg 1024w, https://matthewmanela.com/wp-content/uploads/2023/10/kittkenPair-300x300.jpeg 300w, https://matthewmanela.com/wp-content/uploads/2023/10/kittkenPair-150x150.jpeg 150w, https://matthewmanela.com/wp-content/uploads/2023/10/kittkenPair-768x768.jpeg 768w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure></div>



<p class="wp-block-paragraph">I was paired up with one of the most senior and confident engineers on the team. This developer was diving into an area of the code and typing while I was asking questions. I remember clearly pointing out some issue with what he just wrote. He paused typing, thought for a minute, and said, &#8220;great catch&#8221;. He fixed the issue and we moved on. </p>



<p class="wp-block-paragraph">The thing that surprised me with the pairing experience was that it wasn&#8217;t just about &#8220;training the new guy&#8221;. It was about higher code quality and ensuring the team had a common baseline understanding of the whole codebase. Even as the brand-new team member, I was expected to contribute and learn while pairing.  I soon understood that everyone I paired with expected me to pull my weight regardless of my experience. There was a deep trust between pair partners, and you wanted to live up to the trust given. </p>



<p class="wp-block-paragraph">I worked on teams practicing pairing for 5 years and transitioned from the most junior to the most senior engineer on the team. All the while I was honing this craft and learning how it helped build a culture of quality and unity in the team. </p>



<p class="wp-block-paragraph">When I eventually became an engineering manager years later, I knew I wanted to build a team that benefited from the performance and trust I experienced.</p>



<h2 class="wp-block-heading">From ideology&#8230;</h2>



<p class="wp-block-paragraph">In researching development methodologies, you will quickly find lots of competing views and strong opinions; pair programming is no exception to this. I have talked to people who vehemently believe it is a waste of time, counter-productive, or just not the way they want to work. Similarly, I have spoken with people who argue you should always pair, and no task is not a good task to pair program on. In general, extreme stances that fail to consider nuance and trade-offs are most likely a gross oversimplification. </p>



<p class="wp-block-paragraph">When I started as an engineering manager, I worked on a team and a group that did not pair program. I didn&#8217;t want to rock the boat and followed the processes the team already had for several months. However, we were struggling with knowledge silos leading to poor code reviews, work stoppages during individual engineer time-off due to lack of context, and a lack of team cohesion. When I asked my boss to let me try out pair programming (<a href="https://matthewmanela.com/blog/building-productive-customer-focused-teams/">along with some other structural changes</a>) with the team, she supported me (although with healthy skepticism). I proposed a 6-week pair programming experiment. After this period the team would decide if we wanted to continue. The team accepted this proposal (with reservations) but initially it was turbulent. The engineers weren&#8217;t used to working together and some didn&#8217;t know how to communicate 1&#215;1 while coding. I actively coached and found a few engineers who immediately showed great skill at the practice. I leveraged them as a vanguard to pair with others and help train and teach how to pair effectively.  </p>



<div class="wp-block-group"><div class="wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow"><div class="wp-block-image is-style-rounded center">
<figure class="aligncenter size-full is-resized"><a href="https://matthewmanela.com/wp-content/uploads/2023/10/elephanMousePair.jpeg"><img loading="lazy" decoding="async" width="1024" height="1024" src="https://matthewmanela.com/wp-content/uploads/2023/10/elephanMousePair.jpeg" alt="" class="wp-image-2616" style="object-fit:cover;width:500px;height:undefinedpx" srcset="https://matthewmanela.com/wp-content/uploads/2023/10/elephanMousePair.jpeg 1024w, https://matthewmanela.com/wp-content/uploads/2023/10/elephanMousePair-300x300.jpeg 300w, https://matthewmanela.com/wp-content/uploads/2023/10/elephanMousePair-150x150.jpeg 150w, https://matthewmanela.com/wp-content/uploads/2023/10/elephanMousePair-768x768.jpeg 768w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption"><em>My new hobby: generating pair programming images with DALL·E 3</em></figcaption></figure>
</div></div></div>



<p class="wp-block-paragraph">By the end of the 6 weeks the culture and environment had evolved, and team chemistry was growing. At our retrospective the team agreed to keep working this way. We were more aware of the work the entire team was doing, enjoying the work more and delivering higher quality code. </p>



<p class="wp-block-paragraph">However, it was not all <a href="https://idiomatically.net/idioms/sunshine-and-rainbows">sunshine and rainbows</a>. Even while the team worked better, there were some engineers who clearly preferred not to pair. Sometimes engineers wanted to drive items individually to test themselves, or just wanted days of focused headphone music coding time. I listened to the reservations and found ways to balance and flex the model to work through it with them. But this left me questioning what is the key to the growth and benefits we saw? Is it truly two programmers one keyboard? Or is there another way to get these benefits in a more general and systematic way where? </p>



<h2 class="wp-block-heading">&#8230;To pragmatism</h2>



<p class="wp-block-paragraph">After years of running that team successfully with pair programming as a core tenet I decided to change teams and move to a group in Azure. During this transition my key concern was how well my existing toolbox would work in a new team, environment, and problem space. After joining, I noticed many of the same problems:  Silos, lack of group culture (was more individualistic), interpersonal conflicts and lower quality deliverables than they were capable of (the team was very talented).   At this point I thought this was perfect, I already had a tool to solve this and proposed pair programming as part of the team methodology but got significantly more pushback than before.  </p>



<p class="wp-block-paragraph">This forced me to think hard about what I was trying to accomplish. Was my goal that everyone pair program or was it actually to inculcate a culture of trust and quality? This led towards refining pair programming into a new model for this team. I proposed to the team an experiment called <strong>active/passive pair programming</strong>. The idea was that we prefer to have pairs own deliverables, but the pair decides at the start of the work which parts need &#8220;active&#8221; pairing (two engineers working directly together at one keyboard) and which parts will use &#8220;passive&#8221; pairing (they work on different independent parts but check in multiple times a day).</p>



<p class="wp-block-paragraph">My fear in this tweak was that it would devolve into fully independent work streams, and we would return to silos and lack of unity across the team. To prevent this, I highly encouraged pairs to try &#8220;active&#8221; pairing at least once a day and to routinely check-in with each other multiple times a day while &#8220;passive&#8221; pairing. Even while passive pairing, I made clear that both individuals must have full context on the work. </p>



<p class="wp-block-paragraph">Some engineers actively paired, but many of them did passive pairing. I saw similar results as those in my previous experiment. The team grew closer together, psychological safety increased, and we were able to deliver more with higher quality. Even while passive pairing, the pairs communicated more, got to know each other and learned to rely on each other for questions and feedback.  </p>



<h2 class="wp-block-heading">The Power of Joint Accountability</h2>



<p class="wp-block-paragraph">When I left Microsoft to join Palmetto Solar, I transitioned into my first remote only role as a manager. I started this job with a renewed concern of how to build the culture I have seen work multiple times in an environment when we are seldom in the same physical place. Building trust, cohesiveness, minimizing silos, and creating a psychological safe environment are the keys but would the same techniques work remotely?  </p>



<p class="wp-block-paragraph">Reflecting on the success of the passive/active pairing experiment, I realized the reason it worked was trust. I extended to the pair the trust of accountability. They were accountable for how they worked, and for the success of the feature. By placing the accountability on them as a pair, it encouraged the behavior I was looking for. That is how I landed on the latest iteration of this technique which is to assign joint accountability on significant deliverables. </p>



<p class="wp-block-paragraph">When planning new work streams, I ask the team who is interested in the work, and then we decide on a pair of engineers to take on joint accountability for the feature&#8217;s success. This is not just getting the feature out the door, but the entire lifecycle: design, coding, review, telemetry, and deployment. I don&#8217;t require that they &#8220;actively&#8221; pair at all (although many do). I make clear that I expect both people to have full context on the work. If one is out on vacation, the other can support and continue the other person&#8217;s part. If there is a question from a stakeholder, product manager, or other engineer, each person in the pair must be able to handle it. </p>



<p class="wp-block-paragraph">Even in a remote only work environment, the pairs build close relationships driving features. Over time they learn each other&#8217;s communication styles, support each other, and even when not pairing, they end up with many calls to break down design issues and to act as <a href="https://en.wikipedia.org/wiki/Rubber_duck_debugging">rubber ducks </a>for each other. </p>



<p class="wp-block-paragraph">As new work comes, we rotate pair members to ensure different groupings work together. Over time this increases the cumulative level of trust, interpersonal awareness, and technical breadth within the team.</p>



<h2 class="wp-block-heading">Critiques and Questions About Joint Accountability</h2>



<p class="wp-block-paragraph">Over the years of deploying versions of joint accountability I have heard feedback from peers and engineers. One concern I hear is around rewards, if a pair delivers a feature who gets <em>credit</em>? As long as both people have been driving impact to the best of their ability, they both deserve acknowledgement for the success of the feature.  If the pair was not functioning well and one member feels they did most the work, it leads to the other concern I hear often, handling a non-functioning pairing.</p>



<p class="wp-block-paragraph">There is a common concern that the stronger or more experienced engineer will carry the pair, and the other engineer just watches and does not contribute. In my experience though, this rarely happens, in most cases both people, even with a technical or experience gap, are eager to deliver value and contribute. However, I have witnessed a few times when one of the engineers clearly was not doing their work or seemed <em>checked out</em>. </p>



<p class="wp-block-paragraph">In fact, this is actually a huge benefit of joint accountability – problems of this nature arise and become evident very quickly. When a pair is accountable for a feature, I periodically meet with each person individually. The focus is to provide coaching to make sure they are listening, questioning, and supporting each other well. In these meetings, I hear of any conflicts or roadblocks (which are natural when people are first learning someone’s communication style). Usually, if one person feels the other is not doing their fair share, I am able to provide coaching or more pointed, redirecting feedback if needed.</p>



<p class="wp-block-paragraph"></p>



<h2 class="wp-block-heading">Keys to implementing Joint Accountability Successfully</h2>



<p class="wp-block-paragraph">If you are struggling with some of the same issues I faced, assigning joint accountability may help. To start, I recommend proposing it to the team as an experiment. All process changes work better when you get buy-in from the team and make clear their input is an integral part of the change. Set an expectation for the duration of the experiment and when and how often you will iterate and tweak. I use the team’s sprint retrospective for this purpose.</p>


<div class="wp-block-image is-style-rounded center">
<figure class="aligncenter size-full is-resized"><a href="https://matthewmanela.com/wp-content/uploads/2023/10/madScientist.jpeg"><img loading="lazy" decoding="async" width="1024" height="1024" src="https://matthewmanela.com/wp-content/uploads/2023/10/madScientist.jpeg" alt="" class="wp-image-2917" style="aspect-ratio:16/9;object-fit:cover;width:500px" srcset="https://matthewmanela.com/wp-content/uploads/2023/10/madScientist.jpeg 1024w, https://matthewmanela.com/wp-content/uploads/2023/10/madScientist-300x300.jpeg 300w, https://matthewmanela.com/wp-content/uploads/2023/10/madScientist-150x150.jpeg 150w, https://matthewmanela.com/wp-content/uploads/2023/10/madScientist-768x768.jpeg 768w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption"><em>Experimentation is key to team process change </em></figcaption></figure>
</div>


<p class="wp-block-paragraph">For joint accountability to work you must make crystal clear three key expectations:</p>



<ol class="wp-block-list">
<li><strong>The pair is accountable for the entire lifecycle of the change/feature.</strong>  From initial design and implementation to deployment, monitoring, documentation, and communication. </li>



<li><strong>Each member of the pair must have full context on all that is being built.</strong> If one member of the pair is out sick, the expectation is the other must be able to pick up their work if needed.</li>



<li><strong>The pair chooses how they work (pair programming, divide and conquer, etc</strong>.). Trust them to make this decision rather than dictating how they work. This trust is critical.</li>
</ol>



<p class="wp-block-paragraph">Once the team agrees to try this experiment and all understand the expectations, you are ready to see if it starts the journey to a stronger more cohesive team. As work progresses, hold 1x1s with each person and ask how things are going. Checking in is not solely about the status of the work, but the status of their communication and how well they are listening and relying on each other. Look for issues, communication gaps, or dissonance as opportunities to coach and guide. </p>



<p class="wp-block-paragraph"></p>



<h2 class="wp-block-heading">Closing Thoughts</h2>



<p class="wp-block-paragraph">Joint accountability is a flexible and powerful way to build a team that has more trust, autonomy, and accountability. In my experience it has been a critical tool in constructing strong teams. But like any process, it may not work in all situations or for all people. The key is to listen, take feedback and make sure you are focused on the end results and not married to any specific process or methodology. </p>



<div class="wp-block-group"><div class="wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow"><div class="wp-block-image is-style-rounded center">
<figure class="aligncenter size-full"><a href="https://matthewmanela.com/wp-content/uploads/2023/10/lionBearParing2.jpeg"><img loading="lazy" decoding="async" width="1024" height="1024" src="https://matthewmanela.com/wp-content/uploads/2023/10/lionBearParing2.jpeg" alt="" class="wp-image-2636" srcset="https://matthewmanela.com/wp-content/uploads/2023/10/lionBearParing2.jpeg 1024w, https://matthewmanela.com/wp-content/uploads/2023/10/lionBearParing2-300x300.jpeg 300w, https://matthewmanela.com/wp-content/uploads/2023/10/lionBearParing2-150x150.jpeg 150w, https://matthewmanela.com/wp-content/uploads/2023/10/lionBearParing2-768x768.jpeg 768w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption"><em>Couldn&#8217;t resist adding one more</em></figcaption></figure>
</div></div></div>



<p class="wp-block-paragraph"></p>
<p>The post <a href="https://matthewmanela.com/blog/joint-accountability/">Joint Accountability</a> appeared first on <a href="https://matthewmanela.com">Matthew Manela</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
