<?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: Mohith Gowda K</title>
    <description>The latest articles on DEV Community by Mohith Gowda K (@mohithgowdak_).</description>
    <link>https://dev.to/mohithgowdak_</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4081187%2F158e558d-7798-42d9-8906-39030941fbb3.jpg</url>
      <title>DEV Community: Mohith Gowda K</title>
      <link>https://dev.to/mohithgowdak_</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mohithgowdak_"/>
    <language>en</language>
    <item>
      <title>Launching GraphSearch-rag: a GraphQL API for RAG, zero infra required</title>
      <dc:creator>Mohith Gowda K</dc:creator>
      <pubDate>Mon, 17 Aug 2026 08:30:11 +0000</pubDate>
      <link>https://dev.to/mohithgowdak_/launching-graphsearch-rag-a-graphql-api-for-rag-zero-infra-required-2j1m</link>
      <guid>https://dev.to/mohithgowdak_/launching-graphsearch-rag-a-graphql-api-for-rag-zero-infra-required-2j1m</guid>
      <description>&lt;p&gt;&lt;a href="https://github.com/mohithgowdak/graphsearch" rel="noopener noreferrer"&gt;&lt;/a&gt;I just shipped &lt;strong&gt;GraphSearch&lt;/strong&gt; to PyPI — a GraphQL API server for retrieval-augmented generation over your own documents. &lt;code&gt;pip install graphsearch-rag&lt;/code&gt;, ingest some files, and you've got a typed Q&amp;amp;A endpoint over them. No API keys required to get started, no vector DB cluster, no queue.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why I built it
&lt;/h3&gt;

&lt;p&gt;Every RAG setup I've put together has the same shape underneath — chunk documents, embed them, retrieve, generate an answer, cite the sources — but wiring it up always meant standing up a vector database, picking an embedding provider, and writing a REST layer on top before you could even ask it a question. I wanted something where the entire loop — ingest, ask, get a cited answer — works the moment you &lt;code&gt;pip install&lt;/code&gt;, and then scales up piece by piece as you need it.&lt;/p&gt;

&lt;h3&gt;
  
  
  How it works
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;graphsearch-rag
graphsearch-ingest data/example_docs
graphsearch                            &lt;span class="c"&gt;# → http://localhost:8000&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's the whole setup. Under the hood it's FastAPI + Strawberry serving GraphQL, with a paragraph-aware chunker, a pluggable embedder, and SQLite doing double duty as the store for documents, chunks, and vectors. The default mode runs fully offline — hashing-trick embeddings and extractive answers — so it works in CI or air-gapped environments with zero setup.&lt;/p&gt;

&lt;p&gt;From there, every stage is swappable via env vars:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;GRAPHSEARCH_EMBEDDINGS&lt;/code&gt;: &lt;code&gt;hash&lt;/code&gt; (offline) → &lt;code&gt;local&lt;/code&gt; (sentence-transformers, still offline) → &lt;code&gt;openai&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;GRAPHSEARCH_LLM&lt;/code&gt;: &lt;code&gt;extractive&lt;/code&gt; (offline) → &lt;code&gt;openai&lt;/code&gt; → &lt;code&gt;anthropic&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The API surface is small and typed — &lt;code&gt;answer(question, topK)&lt;/code&gt; for full RAG with cited sources, &lt;code&gt;search(query, topK)&lt;/code&gt; for raw retrieval, plus mutations for uploading documents or PDFs directly. There's also a Playground UI at &lt;code&gt;/&lt;/code&gt; for testing without writing any client code, and a generated TypeScript SDK that fails CI if it drifts from the schema.&lt;/p&gt;

&lt;h3&gt;
  
  
  What's next
&lt;/h3&gt;

&lt;p&gt;Hybrid keyword + vector search (SQLite FTS5 + BM25, merged via reciprocal rank fusion) is on the roadmap along with Qdrant/pgvector/FAISS backends, streaming answers, and an evaluation harness. Most open items are filed with implementation notes if anyone wants to jump in — a good chunk of it is genuinely good-first-issue sized.&lt;/p&gt;

&lt;p&gt;This sits alongside a couple of other things I've been building — ContextBuddy (context middleware for LLM calls) and a few MCP servers — all around the same theme: making the retrieval/context layer of LLM systems cheap and easy to stand up without reaching for heavy infrastructure by default.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;PyPI:&lt;/strong&gt; pypi.org/project/graphsearch-rag&lt;br&gt;
&lt;strong&gt;Repo:&lt;/strong&gt; github.com/mohithgowdak/graphsearch&lt;/p&gt;

&lt;p&gt;Would love feedback — especially from anyone who's hit the "just let me ask a question about these docs" wall and had to stand up more infrastructure than the problem deserved.&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>ai</category>
      <category>opensource</category>
      <category>python</category>
    </item>
  </channel>
</rss>
