<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Monesh R</title>
    <description>The latest articles on DEV Community by Monesh R (@monesh_r_3c3998c70d766880).</description>
    <link>https://dev.to/monesh_r_3c3998c70d766880</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3969498%2F8ac846a8-19ff-4b35-9b2e-ef5479105895.png</url>
      <title>DEV Community: Monesh R</title>
      <link>https://dev.to/monesh_r_3c3998c70d766880</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/monesh_r_3c3998c70d766880"/>
    <language>en</language>
    <item>
      <title>I built a video search engine that actually understands what's being said and shown. Try it and provide Feedback.</title>
      <dc:creator>Monesh R</dc:creator>
      <pubDate>Fri, 05 Jun 2026 08:57:41 +0000</pubDate>
      <link>https://dev.to/monesh_r_3c3998c70d766880/i-built-a-video-search-engine-that-actually-understands-whats-being-said-and-shown-try-it-and-3k3e</link>
      <guid>https://dev.to/monesh_r_3c3998c70d766880/i-built-a-video-search-engine-that-actually-understands-whats-being-said-and-shown-try-it-and-3k3e</guid>
      <description>&lt;p&gt;I spent the last few days building a multimodal video RAG platform. With a lot of help from Claude (vibecoding is real) and me tuning the retrieval numbers until they stopped being embarrassing.&lt;/p&gt;

&lt;p&gt;You paste a YouTube video, the system watches it (transcribes the audio, samples visual frames, captions them with Claude), and then you can ask questions about it. Like Google for the inside of videos.&lt;/p&gt;

&lt;p&gt;It returns timestamped answers grounded in what was actually said or shown. Not vibes. Citations.&lt;/p&gt;

&lt;p&gt;The thing is live: &lt;strong&gt;&lt;a href="https://multimodal-video-rag-web.vercel.app" rel="noopener noreferrer"&gt;multimodal-video-rag-web.vercel.app&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I have about 13 videos indexed right now. Try searching. Ask it something. Break it. I want honest feedback.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's under the hood
&lt;/h2&gt;

&lt;p&gt;The query pipeline is a 9-node LangGraph graph. When you search:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Your query gets classified by intent (visual, transcript, timestamp, summary)&lt;/li&gt;
&lt;li&gt;It hits two separate Pinecone indexes: one for transcript chunks (hybrid dense + BM25 sparse search), one for visual frame embeddings&lt;/li&gt;
&lt;li&gt;Results get fused with reciprocal rank fusion&lt;/li&gt;
&lt;li&gt;A retrieval gate filters out low-confidence junk per modality&lt;/li&gt;
&lt;li&gt;Claude Haiku generates an answer grounded in the surviving evidence, with timestamps&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Ingestion runs on Fargate. A worker pulls the video, runs faster-whisper for transcription, ffmpeg for frame extraction, Claude for frame captioning, then Titan embeddings into Pinecone. The whole thing is on AWS (Lambda, SQS, DynamoDB, S3, API Gateway, CloudWatch) deployed with CDK.&lt;/p&gt;

&lt;p&gt;Frontend is Next.js 16 + React 19 on Vercel.&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/moneshrallapalli" rel="noopener noreferrer"&gt;
        moneshrallapalli
      &lt;/a&gt; / &lt;a href="https://github.com/moneshrallapalli/multimodal-video-rag" rel="noopener noreferrer"&gt;
        multimodal-video-rag
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Multimodal video RAG platform on AWS — search inside videos by visual frames and spoken transcript, with timestamped grounded citations.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Multimodal Video RAG&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;VideoRAG is a deployed search app for long-form video. Ask a question, and it returns the transcript chunks or visual frames that support the answer, with timestamps back to the source moment.&lt;/p&gt;
&lt;p&gt;The frontend runs on Vercel, and the backend is AWS-native: FastAPI in a Lambda container, SQS/Fargate ingestion, S3 artifacts, Pinecone indexes, LangGraph retrieval, and Bedrock Claude Haiku for answer generation and query rewrite. If retrieval is weak, the app refuses instead of guessing.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;How it works&lt;/h2&gt;
&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;Admin submits a YouTube URL through the web console.&lt;/li&gt;
&lt;li&gt;A Fargate worker downloads the video, extracts keyframes every 30 seconds, transcribes the audio with faster-whisper, and embeds both modalities into separate Pinecone indexes.&lt;/li&gt;
&lt;li&gt;When a user asks a question, a LangGraph pipeline classifies intent, retrieves from one or both indexes, fuses results with Reciprocal Rank Fusion, reranks, gates on evidence strength, and generates a grounded answer via Bedrock.&lt;/li&gt;
&lt;li&gt;The…&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/moneshrallapalli/multimodal-video-rag" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;h2&gt;
  
  
  What I want from you
&lt;/h2&gt;

&lt;p&gt;Be brutal. Specifically:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Search quality&lt;/strong&gt;: Did it answer your question? Were the timestamps right? Did it hallucinate?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;UI/UX&lt;/strong&gt;: Anything confusing? Anything ugly?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Speed&lt;/strong&gt;: How long did queries take? Was it annoying?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Broken stuff&lt;/strong&gt;: Errors, weird results, blank screens. Screenshot them if you can.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Drop feedback in the comments, or open an issue on GitHub. Both work.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why I'm posting this
&lt;/h2&gt;

&lt;p&gt;I'm an AI engineer and this is a portfolio project. I vibecoded most of it with Claude and then spent my time on the parts that matter: tuning retrieval thresholds, running eval sets, and figuring out why hybrid search with BM25 kept returning garbage until I got the alpha weighting right.&lt;/p&gt;

&lt;p&gt;But portfolio projects have a blind spot: I've been staring at this thing for days straight. I need fresh eyes.&lt;/p&gt;

&lt;p&gt;If you work on RAG, search, or video ML, I'd especially love your take on the retrieval pipeline. The eval harness has 145 golden queries but I know there are gaps.&lt;/p&gt;

&lt;p&gt;Thanks for reading. Go break my stuff.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>aws</category>
      <category>rag</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
