# Help Need for Custom Chatbot

**URL:** <https://onehack.st/t/help-need-for-custom-chatbot/317412>\
**Category:** Discussion & Solutions\
**Tags:** solved\
**Created:** [January 26, 2026, 5:02pm UTC](https://onehack.st/t/help-need-for-custom-chatbot/317412 "2026-01-26T17:02:40Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![Justin\_H](https://onehack.st/user_avatar/onehack.st/justin_h/32/164323_2.png) [@Justin\_H](https://onehack.st/u/Justin_H)\
**Post date:** [January 26, 2026, 5:02pm UTC](https://onehack.st/t/help-need-for-custom-chatbot/317412/1 "2026-01-26T17:02:40Z")

</div>

I want to build a **fully offline, private chatbot** that runs locally and answers **only from data I provide**.

Requirements:

- No cloud / no external APIs

- Ingest my own data (PDFs, text, code, notes)

- Strictly limited to my data (no external knowledge leakage)

- Supports adding new data over time

Any pointers or real-world experiences appreciated.

---

<div class="post-metadata">

**Author:** ![KrishnDhola](https://onehack.st/user_avatar/onehack.st/krishndhola/32/160605_2.png) [@KrishnDhola](https://onehack.st/u/KrishnDhola)\
**Post date:** [January 27, 2026, 4:20am UTC](https://onehack.st/t/help-need-for-custom-chatbot/317412/2 "2026-01-27T04:20:58Z")

</div>

Check “Ollama”

---

<div class="post-metadata">

**Author:** ![TheStrength](https://onehack.st/user_avatar/onehack.st/thestrength/32/46753_2.png) [@TheStrength](https://onehack.st/u/TheStrength)\
**Post date:** [February 8, 2026, 11:58am UTC](https://onehack.st/t/help-need-for-custom-chatbot/317412/3 "2026-02-08T11:58:00Z")

</div>

For a custom chatbot with RAG, your best starting points depend on how much you want to build yourself:

**Ready-to-deploy stacks (fastest path):**

- RAG Web UI — beginner-friendly, handles PDF/DOCX/Markdown out of the box
- DataBridge — open-source, supports text, PDFs, images, and video, fully local
- Offline RAG System (Docker + Llama 3) — containerized, no cloud APIs, good for sensitive data

**Build-from-scratch guides (more control):**

- [RAG с нуля: doc loading, chunking, Qdrant + LLaMA](https://habr.com/ru/companies/amvera/articles/927138/) — covers the full pipeline end-to-end
- [ChromaDB + DeepSeek local assistant](https://habr.com/ru/companies/amvera/articles/897830/) — lightweight, fully local, high-quality walkthrough
- [5 open-source tools RAG in one evening](https://habr.com/ru/articles/955798/) — minimalist stack, fast to get running

**If privacy is critical:** DocuDeeper (100% offline, GDPR-compliant) or RAG-Guard (zero-trust, browser-based, nothing leaves your device).

**Choosing a vector DB?** This [comparative review of Qdrant, Milvus, ChromaDB, LanceDB, pgvector, Weaviate](https://habr.com/ru/articles/961088/) is the best single resource for that decision.

**Pro tip:** Start with ChromaDB as your vector store — it’s embedded (no separate server), has the simplest setup, and you can migrate to Qdrant or pgvector later when you need to scale.

---

<div class="post-metadata">

**Author:** ![Justin\_H](https://onehack.st/user_avatar/onehack.st/justin_h/32/164323_2.png) [@Justin\_H](https://onehack.st/u/Justin_H)\
**Post date:** [February 10, 2026, 1:29am UTC](https://onehack.st/t/help-need-for-custom-chatbot/317412/4 "2026-02-10T01:29:48Z")

</div>

Thank You.

---

<div class="post-metadata">

**Author:** ![Ze380y](https://onehack.st/user_avatar/onehack.st/ze380y/32/48760_2.png) [@Ze380y](https://onehack.st/u/Ze380y)\
**Post date:** [May 4, 2026, 11:08am UTC](https://onehack.st/t/help-need-for-custom-chatbot/317412/5 "2026-05-04T11:08:04Z")

</div>

You named the four constraints clean — **fully offline, your data only, no leakage, can keep adding more**. That’s the right shape.

Most tutorials send you to a stack that quietly breaks two of them.

> ⚡ **First curveball:** depending on how many docs you have, you might not need RAG at all.

RAG = chop docs → vectors → retrieve top-k → stuff into prompt. The standard answer because it scales.

But for ~500 personal docs that fit in 200K tokens, modern small models swallow the whole corpus in one read. **No vector DB. No chunking. No embedder.** Less plumbing to break.

| Corpus shape | Pick |
| --- | --- |
| **Under 100 docs** , fits in 200K tokens | Long-context only — [Qwen 2.5 (1M ctx)](https://ollama.com/library/qwen2.5) + AnythingLLM “attach” mode |
| **Hundreds → low thousands** | Hybrid — RAG retrieves top-5, model reads them in full |
| **Thousands+, growing fast** | RAG **+ folder-watching tool** |

* * *

**Personal stack that ships:** [AnythingLLM Desktop](https://anythingllm.com/) + [Ollama](https://ollama.com/) (Qwen 2.5 7B + `nomic-embed-text` on a 16GB Mac).

> _Bit me once when I dropped 30 new PDFs into the folder and nothing updated — turns out [**AnythingLLM watches single files, not folders.**](https://github.com/Mintplex-Labs/anything-llm/issues/3561) Issue’s been open since March 2025._

If “drop a file, it shows up in chat tomorrow” matters to you, use [**Khoj**](https://github.com/khoj-ai/khoj) instead — folder-watch is its design assumption.

* * *

⚠ **“Use only the context” in your system prompt is not enough.**  
The model still leaks training knowledge when retrieval misses, and you can’t see it from outside. Real fix lives below 👇

> **🪄 Pick your stack in 30 seconds**
>
> _Tap a name to jump to its repo._
> 
> **If you don’t already use Obsidian:**
> 
> - [**AnythingLLM**](https://anythingllm.com/) → workspace-style RAG, mixed PDFs/notes
> - [**Khoj**](https://github.com/khoj-ai/khoj) → only one with native folder-watch (+ Obsidian/Emacs/web/WhatsApp clients)
> - [**Open WebUI**](https://github.com/open-webui/open-webui) → self-hosted ChatGPT-clone, plays nicest with Ollama
> - [**Open Notebook**](https://github.com/lfnovo/open-notebook) → NotebookLM-clone, Docker, podcast generation included
> 
> **If you already live in Obsidian:**
> 
> - [**Smart Connections**](https://github.com/brianpetro/obsidian-smart-connections) → local-first, on-device embeddings, no API key, indexes inside the vault
> - [**Copilot for Obsidian**](https://github.com/logancyang/obsidian-copilot) → 100k+ users, free tier fully local
> 
> > 💡 Copilot’s _Plus_ tier routes through their backend even with your own API key. Worth knowing before paying.

> **🎯 Hardware floor — what runs at what speed**
>
> _Real tokens/sec from [LocalLLM.in’s April 2026 benchmarks](https://localllm.in/blog/best-local-llms-8gb-vram-2025)._
> 
> | You have | Model that fits | Speed |
> | --- | --- | --- |
> | 8GB RAM, no GPU | `Phi-4-mini 3.8B` (Q4\_K\_M) | 15–20 t/s — usable but slow |
> | 8GB VRAM (RTX 4060) | `Qwen2.5-Coder 7B` / `Qwen3 8B` | 40–55 t/s — sweet spot |
> | 16GB unified (Mac M2/M3) | `Llama 3.3 8B` / `Mistral Small 3` | 30–60 t/s |
> | 16GB+ VRAM | `Qwen 3 14B` / `Phi-4 14B` | ~30 t/s — biggest quality jump per dollar |
> 
> > 💡 If retrieval comes back with junk on PDFs, blame the chunker not the model. Default `chunk_size=512` mangles tables. Use [**Docling**](https://github.com/docling-project/docling) for PDF ingest — handles tables, equations, and section metadata. Skip PyPDF2.

> **🧨 The leakage stack the tutorials skip**
>
> Three layers because the prompt alone is fragile.
> 
> **① Grounding canary in the prompt**  
> Tell the model to use a unique made-up phrase (“paperclip”) whenever it can’t answer from your docs.
> 
> - Phrase shows up → system worked ✅
> - Phrase missing + answer is wrong → you caught a leak 🪤
> 
> One `grep`. Free.
> 
> **② Architecture-side fix**  
> Microsoft’s [**Highlight & Summarize paper**](https://arxiv.org/pdf/2508.02872) splits the model into two roles:
> 
> - _Highlighter_ pulls relevant passages
> - _Summarizer_ sees only those passages, **never your raw question**
> 
> Prevents query injection by design. ~50 lines to bolt onto any stack.
> 
> **③ Fine-tune for grounding**  
> [**ALoFTRAG**](https://arxiv.org/pdf/2501.11929) auto-generates training pairs from your own corpus and LoRA-fine-tunes the LLM to ground harder. **+8.3% citation accuracy** in their numbers. Runs locally on consumer GPUs.
> 
> > 💡 Even just step ① puts you ahead of every tutorial on Google page 1.

* * *

You came in asking for pointers; you’re leaving with the cheat code most tutorials don’t ship — that the moving parts everyone talks about (vector DB, embedder, chunker) might not even be necessary for your corpus.

**One install. No API keys. No email. Your data never leaves the box.**
