# RAG Agent with ChromaDB and Web Search This repository implements a simple RAG (Retrieval‑Augmented Generation) agent that can answer questions using a local knowledge base stored in **ChromaDB** and also perform real‑time web search via **Tavily**. The agent automatically decides which source to use and reports the chosen source in the answer. ## Features - **Local knowledge base** – Text files (.txt, .md) are loaded, chunked, and stored in a persistent ChromaDB collection. - **Semantic search** – Uses Ollama embeddings (`nomic-embed-text`). - **Web search** – Powered by Tavily. - **Automatic source selection** – The agent chooses between local and web search based on the query. - **CLI** – Simple chat loop with `exit` to quit. ## Setup ```bash # 1. Create a virtual environment (optional but recommended) python -m venv venv source venv/bin/activate # Windows: venv\Scripts\activate # 2. Install dependencies pip install -r requirements.txt # 3. Pull required Ollama models ollama pull llama3 ollama pull nomic-embed-text # 4. Set your Tavily API key export TAVILY_API_KEY=YOUR_KEY # Windows: set TAVILY_API_KEY=YOUR_KEY ``` ## Usage 1. **Load documents** – Place your `.txt` or `.md` files in the `documents/` folder. 2. **Run the agent** ```bash python agent.py ``` 3. **Chat** – Type your question. Type `exit` to quit. ## Example ``` Query: Какие последние новости про AI-агентов? [Web Search] ... Источник: tavily Query: Что в наших конспектах про LangGraph? [Local KB] ... Источник: chromadb ``` ## Project Structure - `vectorstore.py` – Functions to create and load the ChromaDB vector store. - `rag_tools.py` – Two LangChain tools: `search_local_kb` and `web_search`. - `agent.py` – Main script that sets up the agent and runs the chat loop. - `requirements.txt` – Python dependencies. - `README.md` – This file. ## License MIT License.