# RAG Agent ## Overview This project implements a Retrieval‑Augmented Generation (RAG) agent that can search a local knowledge base stored in ChromaDB and the web via Tavily. The agent automatically chooses the appropriate source and indicates it in the response. ## Features - Local vector store with Ollama embeddings (`nomic-embed-text`) - Web search powered by Tavily - Two tools: **Local KB Search** and **Web Search** - Automatic source selection - Persistent vector store between runs - CLI chat loop with exit command ## Installation ```bash # Pull required models ollama pull llama3 ollama pull nomic-embed-text # Install Python dependencies pip install langchain langchain-chroma langchain-tavily langchain-ollama tavily-python chromadb python-dotenv ``` ## Setup Create a `.env` file in the project root with your Tavily API key: ``` TAVILY_API_KEY=your_api_key_here CHAT_BASE_URL=http://localhost:11434/v1 CHAT_API_KEY=ollama CHAT_MODEL=llama3 ``` ## Usage ```bash python main.py --docs_dir path/to/documents ``` - `--docs_dir` (optional) – Directory containing `.txt` or `.md` files to index into the vector store. If omitted, the agent will use the existing persisted store. ### Example ``` You: What are the latest news about AI agents? Agent: 1. AI Agents in 2024 (https://example.com) ... Source: tavily You: Tell me about LangGraph in my notes. Agent: LangGraph is a framework for building ... Source: chromadb ``` ## Exiting Type `exit` or `quit` to exit the chat loop. ## License MIT