316cdff63fddf61db58e5f59273529c0ae233b40
RAG Agent with ChromaDB and Web Search
This repository implements a simple RAG (Retrieval-Augmented Generation) agent that can:
- Search a local knowledge base stored in ChromaDB using semantic embeddings from Ollama.
- Perform real‑time web search via Tavily.
- Decide automatically which source to use and indicate the source in the final answer.
Prerequisites
- Python 3.10+ (recommended via
pyenvorconda). - Ollama installed locally and the following models pulled:
ollama pull llama3 ollama pull nomic-embed-text - A Tavily API key. Create a
.envfile in the project root with:TAVILY_API_KEY=YOUR_KEY_HERE
Installation
# Optional: create a virtual environment
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
# Install dependencies
pip install -r requirements.txt
Preparing the Knowledge Base
Place any .txt or .md files you want the agent to know about in the documents/ folder.
Run the following command once to load them into ChromaDB:
python -c "from vectorstore import create_vectorstore, load_documents; store=create_vectorstore(); load_documents('./documents', store)"
The vector store is persisted in the chroma_db/ directory, so the data will be available for subsequent runs.
Running the Agent
python main.py
You will see a simple chat loop. Type your questions and the agent will answer.
Welcome to the RAG agent. Type 'exit' to quit.
User: What is LangGraph?
Assistant: LangGraph is a framework for building ...
Source: chromadb
If the information is not present locally, the agent will automatically perform a web search and label the answer with Source: tavily.
Project Structure
├── agent.py # Core agent logic
├── rag_tools.py # Tool implementations
├── vectorstore.py # ChromaDB utilities
├── main.py # Entry point
├── requirements.txt
├── .gitignore
└── README.md
Extending
- Add more tools by creating new functions decorated with
@tool. - Replace the LLM or embeddings with other Ollama models.
- Switch to a different vector store (e.g., Qdrant) by updating
vectorstore.py.
License
MIT License.
Description
Languages
Python
100%