Research Synthesis Tools Comparison - Choosing a Knowledge Workflow
Status: Active
Last Updated: 2026-08-26
Category: Research - Tooling
Prerequisites: sysadmin, rag-pipeline
Time: 2 hours
Tags: research, synthesis, obsidian, notebooklm, rag, markdown, knowledge-base
Summary
Compares the main families of research-synthesis tooling โ NotebookLM-style AI notebooks, Obsidian-style linked vaults, plain-markdown KB workflows, and RAG over your own notes โ and recommends the markdown-first workflow this KB already follows, with reasons and migration notes.
๐ฏ What You'll Learn
By the end of this article, you'll be able to:
- โ Compare synthesis tool families on durability, queryability, and agent-friendliness
- โ Explain why plain markdown wins for a shared, versioned KB
- โ Decide when to layer Obsidian or RAG on top of the markdown corpus
- โ Apply the fogserv.cloud note conventions when adding research entries
Table of Contents
- Context / Why This Matters
- The Contenders
- Comparison Matrix
- RAG over Your Own Notes
- Recommendation for This KB
Context / Why This Matters
Research notes are only useful if they can be found again โ by you, by another human, and increasingly by an agent session with no memory of the original conversation. The fogserv.cloud KB is deliberately markdown-in-git (research/README.md conventions, applied in sibling notes like sysadmin and dotenvx). Before adopting any shiny synthesis tool, it's worth being explicit about what each option preserves and what it locks away.
This note connects to retrieval infrastructure already documented in rag-pipeline, embeddings-vector-db, and document-chunking.
Implementation / Core Content
1. The Contenders
NotebookLM-style tools (NotebookLM, various "chat with your docs" products). You upload sources into a project notebook; the tool synthesizes summaries, answers grounded questions, and generates audio overviews.
- Strengths: zero setup, genuinely good at grounded Q&A over a small curated source set, citations point back to source passages.
- Weaknesses: sources live in the vendor's store; output is ephemeral unless exported; poor fit for a shared, evolving corpus โ every collaborator uploads their own copies; no git history; agents can't grep it.
Obsidian (and peers: Logseq, Zettlr). Local markdown files plus linking ([[wikilinks]]), backlinks pane, graph view, plugins (Dataview for queries).
- Strengths: data is plain markdown on disk โ same format as this KB; backlinks make connections discoverable; plugin ecosystem adds structure without leaving files.
- Weaknesses: wikilink syntax is Obsidian-specific and breaks standard markdown link checkers; graph features encourage over-linking instead of writing; single-writer in practice (sync across people needs paid sync or git discipline).
Plain-markdown KB workflows (what we do): structured markdown files in a git repo, consistent headers, relative links, reviewed like code.
- Strengths: maximally durable and portable (readable in any editor, terminal, browser); full history and blame via git; diffable reviews; agents operate natively (grep/read/edit โ exactly how this article was written); no vendor.
- Weaknesses: no built-in discovery beyond search/grep; links rot silently unless checked; requires conventions discipline (which the template enforces).
RAG over own notes: index the markdown corpus into embeddings + vector DB (qdrant-setup), retrieve passages per query, synthesize with an LLM.
- Strengths: semantic search ("which notes discuss retry jitter?") that grep can't do; scales to thousands of notes; composable with agents as a retrieval step.
- Weaknesses: infrastructure to run and re-index on every edit; chunking choices materially affect answer quality (document-chunking); answers can drift from sources without citation discipline.
2. Comparison Matrix
| Criterion | NotebookLM-style | Obsidian | Plain markdown KB | RAG over notes |
|---|---|---|---|---|
| Data durability | Vendor-held exports | Local files (excellent) | Git repo (best) | Derived index (rebuildable) |
| Multi-agent access | Poor (UI-bound) | Good (files on disk) | Best (grep/read/edit) | Good (API) |
| Human review/diff | None | Partial (git optional) | Native PR review | N/A (index) |
| Semantic recall | Built-in, closed corpus | Plugin-dependent | None natively | Core feature |
| Setup/maintenance cost | Near zero | Low | Conventions only | Medium-high |
| Vendor lock-in | High | Low (plugins vary) | None | None (self-hosted) |
| Fits shared team KB | No | Partly | Yes | As a layer |
3. RAG over Your Own Notes
RAG is not a competitor to the markdown KB โ it's an index over it. The architecture documented in rag-pipeline applies directly:
- Source of truth stays markdown-in-git. Never let the vector DB become authoritative; it's a cache.
- Re-index on commit (CI job or scheduled timer โ see scheduler-patterns): chunk changed
.mdfiles, embed, upsert to Qdrant withpath#headingmetadata so every hit cites its file. - Chunk along headings, not fixed character counts โ KB articles are already heading-structured, which is free chunking quality.
- Retrieval augments, never replaces, grep. Exact-symbol lookups stay faster and cheaper via grep/symbol search; RAG handles paraphrase-level questions.
Failure mode to avoid: answering from stale index after articles were edited. Mitigate by storing the git SHA per indexed chunk and surfacing staleness in retrieved results.
4. Recommendation for This KB
For fogserv.cloud, keep and strengthen the markdown-first workflow:
- Plain markdown + git remains canonical. Every research finding becomes a template-conformant article (like this one). Nothing important lives only inside a tool.
- Use NotebookLM-style tools as throwaway scratchpads for reading sprints: upload sources, interrogate, then export conclusions into a proper KB note before the session ends. The notebook is disposable; the note is the deliverable.
- Obsidian is optional personal sugar. Individuals may open this repo as an Obsidian vault for backlink navigation, but must write standard relative markdown links (no
[[wikilinks]]) so the repo stays tool-neutral. - Add RAG when corpus size justifies it (~hundreds of articles or when grep recall demonstrably fails). Build it per rag-pipeline as an indexing layer, re-indexed on commit, never authoritative.
- Link hygiene is part of the workflow: verify targets exist before committing links; broken relative links are treated like broken builds.
Decision heuristic summary: durability first (git), discovery second (grep now, RAG later), synthesis tools always feed back into markdown.
Practical Examples
Example 1: Reading-sprint โ KB note pipeline
- Collect 5 URLs on journald tuning; load into a NotebookLM-style notebook; ask grounding questions until confident.
- Open a new draft from
kb/.templates/article-template.md; fill header block, Summary, Core Content with real commands verified locally. - Verify every relative link target exists (
ls kb/...), commit, and reference the note from the section README. The notebook is discarded; nothing of value lived only there.
Example 2: Minimal local RAG over this KB
# Sketch: index heading-based chunks of all kb/**/*.md
from pathlib import Path
chunks = []
for md in Path("kb").rglob("*.md"):
text = md.read_text()
for section in text.split("\n## "):
title = section.splitlines()[0]
chunks.append({"path": str(md), "heading": title, "text": section})
# embed chunks, upsert to Qdrant with metadata path+heading
Query flow: embed question โ top-k chunks โ LLM answers citing path#heading. Rebuild nightly or on push.
Troubleshooting & Common Pitfalls
| Problem | Cause | Fix |
|---|---|---|
| Insights lost after closing a notebook tool | Output never exported to markdown | Export conclusions into a template article same-session |
| Broken relative links after moves | Manual path edits | Verify link targets before commit; treat as build breakage |
| Wikilinks render fine locally, broken on forge | Obsidian-only [[...]] syntax |
Use standard [text](relative/path.md) links |
| RAG answers cite deleted content | Stale index | Store git SHA per chunk; re-index on commit; flag stale hits |
| Over-linking replaces actual writing | Graph-view temptation | Link only when it aids retrieval; prose carries the substance |
Next Steps / Ops Actions
- Keep new research notes conformant to the template used by siblings (sysadmin, dotenvx) and registered in README.md.
- When the corpus grows, stand up retrieval per rag-pipeline with embeddings guidance from embeddings-vector-db.
- Schedule nightly re-index jobs using scheduler-patterns.
Sources & Related Articles
External references consulted:
- https://support.google.com/notebooklm
- https://help.obsidian.md/Topics/Links
- https://python.langchain.com/docs/concepts/rag/
Related knowledge-base articles:
Change Log
2026-08-26
- Initial creation comparing NotebookLM-style tools, Obsidian, plain-markdown KB, and self-hosted RAG; recommendation recorded for the markdown-first workflow.