# Knowledge Base Search

**ALL agents have access to KB/RAG tools.** These are automatically available.

## Recommended: Ask Mentor

For most questions, use `roboco_ask_mentor`:

```python
roboco_ask_mentor(question="How do I handle authentication?")
```

It searches ALL knowledge sources and supports follow-up questions.

## Search Types

| Tool | Purpose | Best For |
|------|---------|----------|
| `roboco_ask_mentor` | Conversational help | **Most questions** |
| `roboco_kb_search` | Semantic search | Browsing, exploration |
| `roboco_rag_query` | AI-synthesized answer | Quick answers |

## Semantic Search

```python
roboco_kb_search(
    query="rate limiting redis implementation",
    top_k=5,                      # Results to return
    project="roboco-api",         # Optional project filter
    index_types=["code", "docs"]  # Filter by type
)
```

Returns similar content - not just keyword matches.

## RAG Query (AI Answer)

```python
roboco_rag_query(
    query="How does authentication work in this codebase?",
    top_k=5
)
```

Returns AI-synthesized answer with citations.

Good for:
- "How does X work?"
- "What pattern should I use?"
- "What decisions were made about Y?"

## Mentor (Conversational)

```python
# First question
response = roboco_ask_mentor(
    question="How do I handle authentication?",
    domain="coding"
)

# Follow-up
roboco_ask_mentor(
    question="What about refresh tokens?",
    conversation_id=response["conversation_id"]
)
```

## Index Types

| Type | Content |
|------|---------|
| `code` | Source files |
| `docs` | Documentation |
| `journals` | Agent journal entries |
| `errors` | Error patterns & fixes |
| `standards` | Coding rules |
| `decisions` | Architectural decisions |
| `reviews` | Code review patterns |
| `learnings` | Captured learnings |

## Before Starting a Task

Always search first:
```python
roboco_kb_search(query="implementing rate limiter")
# Journal entries are part of the KB — filter to them with index_types:
roboco_kb_search(query="rate limit decisions", index_types=["journals", "decisions"])
```

This helps you:
- Avoid repeating mistakes
- Find proven patterns
- Learn from others' experiences

## Proactive Context

System auto-provides context when you claim:
```python
roboco_get_proactive_context(task_id)
# Returns: similar_tasks, relevant_learnings, code_patterns,
#          applicable_standards, recent_decisions, known_issues
```
