Skip to content

Semantic Search

The Search tab is the lightweight version of what the Research Pipeline does. Instead of running a full multi-step research workflow with synthesis, Search just runs a semantic query against your ChromaDB collections and returns ranked matches. It’s for the moments when you know exactly what you’re looking for and you don’t need Lagan to think about it — you just need “find the thing in my stuff that matches this query” as fast as possible. Type the query, hit Enter, see the results in under a second. It’s the first place most users learn what semantic search can actually do for a writing project, because the results are immediate and the quality difference between semantic search and keyword search is obvious in the first few queries.

By default, Search queries every ChromaDB collection in your current project:

  • Smart bookmarks — your saved research library.
  • Lore entries — your Legendry, entry content and sections.
  • Document chunks — scenes and sections from your manuscripts.
  • Research notes — lightweight notes stored in Lagan’s research system.
  • YouTube transcripts — transcribed video content you’ve saved.
  • Cached Wikipedia articles — pages WorldKnowledge has fetched.
  • Prior pipeline results — saved Research Pipeline outputs.

Each collection is its own searchable namespace in ChromaDB. You can scope the search to a specific collection using the filter chips, or leave it at “all collections” for a blended search.

The tab has three elements:

  • Search box at top. Type your query, hit Enter (or click Search).
  • Filter chips. One chip per collection, plus filters for date range and result count. Click to toggle which collections are included.
  • Top-K slider. How many results to return. Range is 5 to 50, default 10. More results = more context but more clutter.
  • Results list. Ranked matches with similarity scores, source tags, preview excerpts, and action buttons.

Each result in the list shows:

  • Title or short identifier (bookmark title, lore entry name, document section label).
  • Source tag (bookmark / lore / document / etc.).
  • Similarity score — 0.0 to 1.0, higher is more similar.
  • Preview excerpt — the part of the content that best matches your query.
  • Actions — open the source, copy the content, add to Lagan Chat as context.

Scores above 0.7 are usually strong matches. Scores below 0.5 are speculative — the result shows up because it’s the best match available, not because it’s actually close. If all your results are scoring below 0.5, your query doesn’t have good matches in your project and you might need to run the full Research Pipeline to get fresh research.

The Search tab remembers your recent queries — the last 20 or so — and shows them in a dropdown below the search box. Click any recent query to re-run it.

You can also save a search if it’s a query you’ll want to run repeatedly. Saved searches persist across sessions and show up in a separate panel next to recents. Useful for standing queries like “lore entries I haven’t fleshed out yet” or “research about ancient navigation techniques.”

When to use Search vs. the Research Pipeline

Section titled “When to use Search vs. the Research Pipeline”

Two similar features with different purposes.

Use Search when:

  • You know roughly what you’re looking for and need it fast.
  • You trust your knowledge base to have the answer and don’t need fresh research.
  • You want a ranked list of matches, not a synthesized summary.
  • You’re doing exploratory browsing through your research library.

Use the Research Pipeline when:

  • You’re not sure where the answer lives (knowledge base? fresh web research? specialist consultation?).
  • You want the answer synthesized into a summary, not returned as a list.
  • You’re willing to wait a few seconds for a deeper result.
  • You might want to save the result as a new bookmark.

Search is a drawer you pull open to grab something you already know is there. The Pipeline is a research session.

Types of queries where semantic matching meaningfully beats keyword matching:

  • Thematic queries. “Something about the cost of power.” Keyword search fails because “cost” and “power” aren’t the words you actually wrote. Semantic search finds entries about sacrifice, consequences, trade-offs, burdens — all the meaning-adjacent content.
  • Forgotten specifics. “That lore entry about the ritual where someone becomes a god.” You don’t remember the entry’s title. Semantic search finds it if the content mentions apotheosis or ascension even when the word “ritual” isn’t there.
  • Cross-collection concept recall. A query like “medieval metallurgy” returns matches across bookmarks, lore entries, and cached research — all in one result list sorted by relevance.
  • Paraphrased lookups. You ask “what did I write about Kent’s relationship with his father” and the search finds scenes where Kent’s father is present even if the actual word “relationship” isn’t used.

What semantic search doesn’t handle well

Section titled “What semantic search doesn’t handle well”

A few limits worth knowing:

  • Exact proper nouns. “Crimson Hyenas” is a name search, not a concept search. The hybrid ranking usually catches this correctly, but pure semantic search can rank conceptually-adjacent results above literal name matches. If you’re searching for a specific named thing, a keyword filter helps.
  • Negation. “Lore entries that don’t mention magic” doesn’t work — semantic search returns similarity-ranked results, not inverse matches. Use the Legendry’s filter system for exclusion queries.
  • Very short queries. A one-word query doesn’t carry enough meaning for good embedding matching. Add context.
  • Date-based queries. “Bookmarks saved after last Tuesday” is a metadata filter, not a semantic query. Use the date range filter instead.

For the conceptual background on how semantic search actually works, see Semantic Search in the Engine section.

Any result from the Search tab can be sent to Lagan Chat as context. Click the “Add to Chat” action on a result and the content gets attached to your next message to Lagan as background context. Useful when you find something with Search and want to ask Lagan to elaborate, summarize, or integrate it into a larger question.

This makes Search + Lagan Chat a common workflow: search for the thing, add it to chat, ask Lagan to do something with it.