Files
task-6a1864f78a94f887e50d46da/README.md
T
2026-06-02 07:17:32 +00:00

84 lines
2.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# RAG Agent with ChromaDB and Web Search
This repository implements a simple RAG (Retrieval-Augmented Generation) agent that can:
1. Search a local knowledge base stored in **ChromaDB** using semantic embeddings from **Ollama**.
2. Perform realtime web search via **Tavily**.
3. Decide automatically which source to use and indicate the source in the final answer.
## Prerequisites
- Python 3.10+ (recommended via `pyenv` or `conda`).
- Ollama installed locally and the following models pulled:
```bash
ollama pull llama3
ollama pull nomic-embed-text
```
- A Tavily API key. Create a `.env` file in the project root with:
```text
TAVILY_API_KEY=YOUR_KEY_HERE
```
## Installation
```bash
# 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:
```bash
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
```bash
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.