Update README.md

This commit is contained in:
2026-06-02 07:19:06 +00:00
parent 442321f34d
commit f5133c0bd6
+44 -50
View File
@@ -1,83 +1,77 @@
# RAG Agent with ChromaDB and Web Search
# RAGAgent with ChromaDB and Web Search
This repository implements a simple RAG (Retrieval-Augmented Generation) agent that can:
This repository implements a simple RAG (RetrievalAugmented Generation) agent that can answer questions using a local knowledge base stored in **ChromaDB** or by searching the web via **Tavily**. The agent automatically chooses the appropriate source and reports it in the answer.
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.
## Features
## Prerequisites
* **Local semantic search** Uses a ChromaDB vector store backed by Ollama embeddings.
* **Web search** Uses Tavily to fetch uptodate information.
* **Automatic source selection** The agent decides whether to query the local KB or the web.
* **Persisted vector store** Data is stored on disk and reused across runs.
* **Simple CLI** Chat loop with `exit` to quit.
- 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
## Setup
```bash
# Optional: create a virtual environment
# 1. Clone the repo
git clone <repo-url>
cd <repo-dir>
# 2. (Optional) Create a virtual environment
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
# Install dependencies
# 3. Install dependencies
pip install -r requirements.txt
```
## Preparing the Knowledge Base
# 4. Pull required Ollama models
ollama pull llama3
ollama pull nomic-embed-text
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:
# 5. Set Tavily API key
export TAVILY_API_KEY=your_api_key # Windows: set TAVILY_API_KEY=your_api_key
```bash
python -c "from vectorstore import create_vectorstore, load_documents; store=create_vectorstore(); load_documents('./documents', store)"
```
# 6. Prepare documents
# Place any .txt or .md files you want to index in the ./documents folder.
# They will be automatically loaded into ChromaDB on first run.
The vector store is persisted in the `chroma_db/` directory, so the data will be available for subsequent runs.
## Running the Agent
```bash
# 7. Run the agent
python main.py
```
You will see a simple chat loop. Type your questions and the agent will answer.
## Usage
```
Welcome to the RAG agent. Type 'exit' to quit.
```text
Запрос: Какие последние новости про AI-агентов?
[Web Search]
1. AI Agents: The Future of Automation: ...
2. ...
Source: tavily
User: What is LangGraph?
Assistant: LangGraph is a framework for building ...
Запрос: Что в наших конспектах про LangGraph?
[Local KB]
1. LangGraph is a ...
2. ...
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
├── agent.py # Core agent logic and tools
├── vectorstore.py # ChromaDB creation and document loading
├── rag_tools.py # Web search tool
├── main.py # CLI 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`.
* **Add more tools** Define new functions decorated with `@tool` and add them to the `tools` list.
* **Change LLM** Swap `ChatOllama` for another provider (e.g., OpenAI) by adjusting the import and model name.
* **Custom prompt** Edit `agent_prompt` in `agent.py` to modify the agents instruction.
## License
---
MIT License.
Happy querying!