课程大纲
学院模块 2 · Growing the knowledge graph
Import: the Extract sources wizard
你将学到
- you can open the "Extract sources" wizard from anywhere and bulk-import files, folders, URLs, and Notion pages
- you can read the five-stage pipeline and the per-file status badges to know exactly what happened to each source
- you can recover interrupted, deferred, and stalled extractions with "Resume", "Retry", and re-extract offers
- you can permanently exclude files with .consilienceignore, then undo it any time with "Restore"
- you can decide whether to hold or send a chat message while a bulk build is running
Your knowledge almost never starts as markdown. It's a folder of research PDFs, a Notion workspace you're leaving, yesterday's voice memo, a few web articles you keep looking up again. Until that material is actually in your workspace, the graph can't index it and the agent can't reason over it.
The "Extract sources" wizard is the front door: the extraction you watched run on a single saved note, now pointed at all of that at once. You drop in files, folders, URLs, or Notion pages. A five-stage pipeline reads a copy of each source and writes a faithful markdown note into your workspace.
It then pulls the people, ideas, and relationships inside into your graph. Your originals are never touched: they sit under attachments/, linked from the notes made out of them.
Opening the wizard
The wizard opens in its own "Extract sources" tab. Because everything starts here, you can reach it from a lot of places:
- The "Extract sources" button in the left sidebar, right next to "New document"
- The shortcut
Cmd+Shift+I(macOS) orCtrl+Shift+I(Windows). Rebind it in Settings → Shortcuts - The command palette action "Extract sources"
- On macOS, the menu bar: Go → "Ingest Wizard"
- Auto-open: open a workspace with un-extracted documents and the wizard opens on its own, pre-filled with everything pending
- Activity center prompts like "Build this workspace's knowledge graph?" fill the list and open it for you
What you can add
There are a few ways to add sources. With the wizard tab open, drag them anywhere onto the window, or click the drop zone to open the file picker. Or use the "Add manually" dropdown: "Add files", "Add folders", "Add URL" (paste as many as you like, one per line), and "Import from Notion" (search, expand pages, and check the ones you want).
| Source | Formats | How it's handled |
|---|---|---|
| Documents | docx, pptx, hwp/hwpx, epub, odt, rtf | Turned into faithful markdown, right on your machine |
| Spreadsheets | xlsx/xls/xlsm/ods, csv/tsv | Converted locally |
pdf | Text-heavy PDFs take a fast local path. Scanned or image-heavy ones go through vision OCR, with figures saved into attachments/ | |
| Images | png, jpg, gif, webp, bmp, tiff… | Vision OCR reads the text out. The original is always kept as an attachment |
| Audio | mp3, wav, m4a, flac, ogg… | Transcribed in the cloud |
| Web pages | http(s) URLs | Fetched and converted, PDF URLs included |
| Notion | pages | Fetched as markdown into a Notion/ folder |
| Plain text | md, txt, json, yaml, xml… | Passed through as-is |
| Legacy / unknown | .doc, .ppt, unknown binaries | Kept as an attachment with a placeholder note |
Code folders take a different path. They skip the note pipeline, show up under "Code to import (structure preserved)", and get copied in with their structure intact so the code index can read them. Documents inside the repo, like READMEs and PDFs, still get extracted in the same run.
Running a bulk import
Your first bulk import
Open and fill the intake
Press
Cmd+Shift+I, then drag in a folder of documents or use "Add manually". Each row gets a kind label: Document, PDF, Spreadsheet, Image, Web page, Notion…Prune the list
The X button drops a row from this run only. The Ban button ("Exclude from extraction") permanently excludes a workspace file. More on that below.
Press "Import"
The button wakes up once a workspace is open and at least one source is listed. If it's greyed out, a tooltip tells you what's missing. The run starts right away.
Watch it run
A live checklist tracks the five stages, and a per-file list shows where each source stands. A gauge shows how much is running in parallel; it tunes itself, speeding up when there's room and easing off when there isn't.
Finish
Once ✓ "Your documents are ready" appears, jump straight in with "Ask a question about your documents", open the "Knowledge graph", or press "Import more". If some files hit snags, the header says some files need attention instead.
The five stages on that checklist, in order:
- "Reading your files": a rule-based conversion to markdown. Skipped when every source is already a note in your workspace
- "Getting to know your topics": the AI works out a vocabulary for your domain, so extraction fits your field. Skipped when it's already fresh
- "Extracting the knowledge graph": the AI reads each note and writes entities and typed relations into your graph
- "Connecting related items": flags entries that look like the same real thing. Nothing is merged automatically
- "Organizing into themes": finds clusters in the fresh graph and gives them names
And the per-file status badges:
- Spinner: converting. "OCR…": a vision or transcription call is in flight
- ✓: the note was written
- "Attached" (amber): placeholder note. Hover for the reason
- "failed" (red): hover for the error
- "will finish when your limit resets" (amber): just paused for now, and it picks back up on its own
You don't have to babysit the run; the app tells you it'll let you know when it's done. There's only ever one wizard tab, so you can wander off mid-run and come back. "Stop extraction" only stops handing out new work: conversions already underway finish in the background, and their notes stay in your workspace.
Interrupted runs, deferrals, retries
- Deferred
- Paused because you hit your AI usage limit. It's not a failure. The app holds the job and picks it back up the moment your limit resets.
- Exhausted
- A note that kept hitting snags. The app stops retrying on its own and hands you a one-click "Retry" for whenever you're ready.
- Stale
- The file changed on disk after it was extracted. The app notices and offers to bring the graph back up to date.
- .consilienceignore
- A per-workspace file that works like .gitignore. Anything it matches is skipped by extraction and the code index, for good.
- Extraction gate
- The hold-or-send prompt you get when you chat during a bulk build, so your answers always draw on the finished graph.
Things happen mid-run: you close the app, step away, hit your usage limit. Conversion skips anything already done, and picking up where you left off never duplicates a note. The app brings the leftovers back to you:
- "Extraction was interrupted": it asks whether to resume the sources that didn't finish. "Resume" refills the wizard. "Discard" cancels the leftover jobs so the offer stops popping up
- "Extraction needs a retry": notes that failed too many times → "Retry all"
- "Notes changed outside the app": notes you edited on disk after extraction → "Re-extract"
- Knowledge graph tuning → "Extraction" shows a coverage line ("X of Y added to AI search") plus a "Couldn't add these notes to AI search" section, each note listed with its error and a "Retry" button
Excluding files for good
Some files should never be scanned: exports, secrets, generated junk. .consilienceignore is a per-workspace file that works like .gitignore. Anything it matches is skipped by extraction and the code index, by every scanner, on every future pass. Excluding a file also purges whatever was already derived from it.
- In the wizard's intake list: the Ban button ("Exclude from extraction")
- In the file tree: right-click → "Exclude from extraction"
- Knowledge graph tuning → "Excluded" tab, with three views: "List" (search + "Restore"), "Browse" (checkbox file tree), and "Edit file" (raw patterns)
# one gitignore-style pattern per line
*.snap
build/
/drafts/private-journal.md
!keep.mdChatting while the graph builds
While a bulk build is running, a chat answer would only search a half-finished graph. So the first message you send mid-build pops the "Knowledge graph still building" dialog, with a live count ("X of Y notes extracted so far") and three choices: "Send when extraction finishes", "Send now", or "Cancel". The app remembers your pick for the rest of that build, so the dialog shows up at most once.
A held message waits in a strip above the composer and fires off on its own once the build settles. Until then you can "Send without waiting", "Edit and requeue", or "Remove" it. Saving a single note never triggers any of this. You just get a quiet hint that your recent edits may not be in the graph yet.
快速自测
You're mid-build and you pick "Send when extraction finishes". What happens to your message?
Wrap-up
快速自测
A row in the finished run shows an amber "Attached" badge. What does that mean?
That's the whole intake story: anything goes in, originals stay untouched, failures are recoverable, and exclusions are permanent but reversible. Next up, we look at what extraction actually builds: the ontology behind all those entities and relations.