Lesson 13 / 25
Retrieval and Search Tools
Give an agent access to documents and databases and treat retrieval as just another tool.
Retrieval as a tool
Models do not know your private documents or yesterday's data. A search tool (keyword, vector or SQL) lets the agent look things up when it needs them, rather than stuffing everything into the prompt. This is the "agentic" form of RAG: the model decides what to search for, reads the results and can search again with a better query.
What agents can reach
Most tools fall into a few families: knowledge, computation, systems and the screen.
A search tool that cites sources
Return short snippets with ids so answers can cite them and the model can fetch a full document only when needed.
@tool
def search_docs(query: str, limit: int = 5) -> str:
"""Search the help-centre articles. Returns up to `limit` snippets as
[doc_id] snippet. Call get_doc(doc_id) for the full text."""
hits = index.search(query, limit)
return "\n".join(f"[{h.id}] {h.snippet[:200]}" for h in hits)Retrieved text is untrusted
A document in your index might contain instructions aimed at the model. Treat retrieved text as data, never as commands, and see the safety section for defences.
Quick check: What does "agentic RAG" add to plain RAG?
- It removes the need for documents
- The model decides what to search and can search again
- It guarantees correct answers
- It works without a search index
Answer
The model decides what to search and can search again — The model drives retrieval as a tool, iterating until it has what it needs.