Search
Bee supports two search modes:
- Keyword search (default, BM25) — runs over your conversations, daily summaries, and facts.
- Neural semantic search (
--neural) — semantic recall over conversations only.
Neural search is significantly slower than keyword search. Use it only when keyword search misses relevant context.
Mode Comparison
| Mode | Access | Scope | Speed | Best for |
|---|---|---|---|---|
| Keyword (BM25) | bee search --query "<text>" | Conversations, daily summaries, facts | Fast | Everyday lookup, exact terms, recent recall |
| Neural | bee search --query "<text>" --neural | Conversations only | Slower | Semantic recall when wording differs |
By default, keyword search returns matches across conversations, daily summaries, and facts. Neural search is semantic and covers conversations only; the keyword-only --filter and --sort flags do not apply when you pass --neural.
Todos and insights are not searchable here. Use bee todos list and bee insights for those.
Usage
bee search --query <text> [--limit N] [--since <epochMs>] [--until <epochMs>] [--json]keyword (default)
$ bee search --query "project roadmap"
$ bee search --query "project roadmap" --limit 20
$ bee search --query "project roadmap" --jsonKeyword search returns BM25-ranked results across conversations, daily summaries, and facts.
Options
| Option | Mode | Description |
|---|---|---|
--query <text> | both | The search text (required). |
--limit N | both | Maximum number of results (1–100, default 20). |
--neural | — | Switch to neural semantic search (conversations only). |
--filter conversations|daily|facts|all | keyword | Scope the keyword (BM25) search. Defaults to all. |
--scope conversations|all | keyword | Alias for --filter (conversations or all). |
--sort relevance|mostRecent | keyword | Order keyword results by relevance or recency. Defaults to relevance. |
--since <epochMs> | both | Only return items at or after this time (epoch milliseconds). |
--until <epochMs> | both | Only return items at or before this time (epoch milliseconds). |
--json | both | Emit raw JSON instead of formatted markdown. |
Filtering the keyword scope
--filter scopes which record types the keyword index searches. --scope is an alias accepting conversations or all.
# Only search conversations
bee search --query "standup notes" --filter conversations
# Only search daily summaries
bee search --query "highlights" --filter daily
# Only search facts
bee search --query "coffee" --filter facts
# Order keyword matches by recency instead of relevance
bee search --query "release plan" --sort mostRecent--filter, --scope, and --sort apply to keyword search only. They cannot be combined with --neural.
Bounding results by time
--since and --until accept epoch milliseconds and bound results in both keyword and neural modes.
# Keyword matches created on or after a timestamp
bee search --query "budget" --since 1704067200000
# Neural matches within a time window
bee search --query "what did I plan" --neural --since 1704067200000 --until 1706745600000Recommendation
- Start with keyword search for speed and broad coverage (conversations, daily summaries, facts).
- Use neural search only when keyword results are insufficient.
- Keep neural queries focused and use
--limitto control latency. - Narrow either mode with
--since/--untilwhen you know the rough time window.
The same search is available to AI assistants through the bee_search MCP tool, which mirrors these options (query, limit, filter, sortBy, mode, plus since/until). See MCP.