Agentic RAG with Reranking
Combine agentic search, hybrid retrieval, and reranking for high-quality responses.
This example combines three techniques for optimal retrieval:
- Agentic RAG: Agent decides when to search the knowledge base
- Hybrid search: Combines vector similarity with keyword matching
- Reranking: Reorders results using a dedicated ranking model
1from kern.agent import Agent2from kern.knowledge.knowledge import Knowledge3from kern.knowledge.embedder.cohere import CohereEmbedder4from kern.knowledge.reranker.cohere import CohereReranker5from kern.models.anthropic import Claude6from kern.vectordb.lancedb import LanceDb, SearchType78knowledge = Knowledge(9 vector_db=LanceDb(10 uri="tmp/lancedb",11 table_name="docs",12 search_type=SearchType.hybrid,13 embedder=CohereEmbedder(id="embed-v4.0"),14 reranker=CohereReranker(model="rerank-v3.5"),15 ),16)1718agent = Agent(19 model=Claude(id="claude-sonnet-4-5"),20 knowledge=knowledge,21 search_knowledge=True,22)Why Combine These Techniques
| Technique | What It Does |
|---|---|
| Agentic RAG | Agent searches only when needed, can reformulate queries |
| Hybrid search | Catches both semantic matches and exact terms |
| Reranking | Uses a dedicated model to reorder results by relevance |
Together, these provide better retrieval accuracy than any single technique alone.
How Reranking Works
After hybrid search returns initial results, the reranker:
- Takes the query and candidate documents
- Scores each document for relevance using a cross-encoder model
- Reorders results so the most relevant appear first
Cohere's rerank-v3.5 is trained specifically for this task and significantly improves result quality.
Example
1import asyncio23from kern.agent import Agent4from kern.knowledge.embedder.cohere import CohereEmbedder5from kern.knowledge.knowledge import Knowledge6from kern.knowledge.reranker.cohere import CohereReranker7from kern.models.anthropic import Claude8from kern.vectordb.lancedb import LanceDb, SearchType910# Create knowledge base with hybrid search and reranking11knowledge = Knowledge(12 vector_db=LanceDb(13 uri="tmp/lancedb",14 table_name="agno_docs",15 search_type=SearchType.hybrid,16 embedder=CohereEmbedder(id="embed-v4.0"),17 reranker=CohereReranker(model="rerank-v3.5"),18 ),19)2021# Load content22asyncio.run(23 knowledge.ainsert(url="https://kern.ndx.rocks/introduction/agents.md")24)2526# Create agent with knowledge27agent = Agent(28 model=Claude(id="claude-sonnet-4-20250514"),29 knowledge=knowledge,30 search_knowledge=True,31 instructions=[32 "Search your knowledge before answering.",33 "Include sources in your response.",34 ],35 markdown=True,36)3738agent.print_response("What are Agents?", stream=True)Usage
Set up your virtual environment
1uv venv --python 3.122source .venv/bin/activate1uv venv --python 3.122.venv\Scripts\activateInstall dependencies
1uv pip install -U kern-ai anthropic cohere lancedb tantivy sqlalchemyExport your API keys
1export ANTHROPIC_API_KEY=your_anthropic_api_key_here2export CO_API_KEY=your_cohere_api_key_hereRun Agent
1python agentic_rag.pyConfiguration Options
Different Rerankers
1# Cohere2from kern.knowledge.reranker.cohere import CohereReranker3reranker = CohereReranker(model="rerank-v3.5")45# Add to vector database6vector_db = LanceDb(7 uri="tmp/lancedb",8 table_name="docs",9 search_type=SearchType.hybrid,10 reranker=reranker,11)Adjusting Results
1knowledge = Knowledge(2 vector_db=vector_db,3 max_results=10, # Number of results to return after reranking4)