<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Similarity on RawCull</title><link>https://techrawcull.netlify.app/tags/similarity/</link><description>Recent content in Similarity on RawCull</description><generator>Hugo</generator><language>en</language><lastBuildDate>Thu, 30 Jul 2026 07:59:27 +0200</lastBuildDate><atom:link href="https://techrawcull.netlify.app/tags/similarity/index.xml" rel="self" type="application/rss+xml"/><item><title>How RawCull Loads and Uses CLIP</title><link>https://techrawcull.netlify.app/docs/ai/clip-in-rawcull/</link><pubDate>Wed, 29 Jul 2026 00:00:00 +0000</pubDate><guid>https://techrawcull.netlify.app/docs/ai/clip-in-rawcull/</guid><description>&lt;h1 id="how-rawcull-loads-and-uses-clip"&gt;How RawCull Loads and Uses CLIP&lt;a class="td-heading-self-link" href="#how-rawcull-loads-and-uses-clip" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;RawCull supports two CLIP models:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;OpenAI CLIP ViT-B/32&lt;/strong&gt;, which processes a 224 × 224 image;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;OpenCLIP DataComp ViT-B-32-256&lt;/strong&gt;, which processes a 256 × 256 image.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The user selects one model in &lt;strong&gt;Settings &amp;gt; AI&lt;/strong&gt;. That one selection defines the
vector space used for both image-to-image similarity and text-to-image semantic
search. RawCull never mixes vectors from the two models.&lt;/p&gt;
&lt;p&gt;This page starts with the basic idea behind CLIP and then follows the current
source code from application startup, through model validation and Core AI
inference, to search results, burst groups, and persisted artifacts.&lt;/p&gt;</description></item><item><title>Burst Groups</title><link>https://techrawcull.netlify.app/docs/burstgroup/</link><pubDate>Wed, 15 Jul 2026 00:00:00 +0000</pubDate><guid>https://techrawcull.netlify.app/docs/burstgroup/</guid><description>&lt;h1 id="burst-groups"&gt;Burst Groups&lt;a class="td-heading-self-link" href="#burst-groups" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Burst analysis turns a flat catalog into groups of adjacent, visually similar frames. It ranks each multi-frame group, presents review queues, and supports culling decisions such as keeping the best frame, keeping the top two, deferring a group, or setting a manual pick.&lt;/p&gt;
&lt;p&gt;The implementation separates orchestration, Vision feature-print indexing, pure grouping and ranking engines, cache persistence, and the review UI.&lt;/p&gt;
&lt;h2 id="source-map"&gt;Source Map&lt;a class="td-heading-self-link" href="#source-map" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;Area&lt;/th&gt;
					&lt;th&gt;Main files&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;Analysis orchestration and user actions&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;sourcecode/RawCull/RawCull/Model/ViewModels/RawCullViewModel+BurstGrouping.swift&lt;/code&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Similarity indexing and grouping state&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;sourcecode/RawCull/RawCull/Model/ViewModels/SimilarityScoringModel.swift&lt;/code&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Pure grouping and ranking&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;sourcecode/RawCullCore/Sources/RawCullCore/BurstGroupingEngine.swift&lt;/code&gt;, &lt;code&gt;BurstRankingEngine.swift&lt;/code&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Shared models&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;sourcecode/RawCullCore/Sources/RawCullCore/BurstAnalysisModels.swift&lt;/code&gt;, app &lt;code&gt;BurstAnalysisModels.swift&lt;/code&gt;, &lt;code&gt;BurstReviewQueueModels.swift&lt;/code&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Cache&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;sourcecode/RawCull/RawCull/Actors/BurstAnalysisCache.swift&lt;/code&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Ratings and manual overrides&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;CullingModel.swift&lt;/code&gt;, &lt;code&gt;SavedFiles.swift&lt;/code&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Burst home and review list&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;BurstGroupsHomeView.swift&lt;/code&gt;, &lt;code&gt;SimilarityGridSelectionView.swift&lt;/code&gt;, &lt;code&gt;CullingGridView.swift&lt;/code&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Single-burst workspace and comparison&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;BurstCullingWorkspaceView.swift&lt;/code&gt;, &lt;code&gt;ComparisonGridView.swift&lt;/code&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Tests&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;RawCullCore/Tests/RawCullCoreTests/BurstGroupingEngineTests.swift&lt;/code&gt;, &lt;code&gt;BurstRankingEngineTests.swift&lt;/code&gt;, app burst/culling tests&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="end-to-end-flow"&gt;End-to-End Flow&lt;a class="td-heading-self-link" href="#end-to-end-flow" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;pre class="mermaid"&gt;flowchart TD
 A[&amp;#34;Analyze Bursts&amp;#34;] --&amp;gt; B[&amp;#34;RawCullViewModel.analyzeBursts&amp;#34;]
 B --&amp;gt; C{&amp;#34;Valid BurstAnalysisCache?&amp;#34;}
 C --&amp;gt;|&amp;#34;yes&amp;#34;| D[&amp;#34;Remap cached IDs and apply snapshot&amp;#34;]
 C --&amp;gt;|&amp;#34;no&amp;#34;| E{&amp;#34;Sharpness scores missing?&amp;#34;}
 E --&amp;gt;|&amp;#34;yes&amp;#34;| F[&amp;#34;Calibrate and score target files&amp;#34;]
 E --&amp;gt;|&amp;#34;no&amp;#34;| G[&amp;#34;Reuse scores&amp;#34;]
 F --&amp;gt; H{&amp;#34;Similarity embeddings missing?&amp;#34;}
 G --&amp;gt; H
 H --&amp;gt;|&amp;#34;yes&amp;#34;| I[&amp;#34;Index Vision feature prints&amp;#34;]
 H --&amp;gt;|&amp;#34;no&amp;#34;| J[&amp;#34;Reuse embeddings&amp;#34;]
 I --&amp;gt; K[&amp;#34;Group adjacent frames&amp;#34;]
 J --&amp;gt; K
 K --&amp;gt; L[&amp;#34;Rank multi-frame groups&amp;#34;]
 L --&amp;gt; M[&amp;#34;Apply manual winner overrides&amp;#34;]
 M --&amp;gt; N[&amp;#34;Save cache and review-state snapshots&amp;#34;]
 N --&amp;gt; O[&amp;#34;Show home dashboard and review queues&amp;#34;]&lt;/pre&gt;
&lt;p&gt;Every awaited phase is protected by the analysis generation and selected catalog. A cancelled or superseded run cannot publish late results into a newer catalog.&lt;/p&gt;</description></item></channel></rss>