Экзамен: RAG-агент с ChromaDB и веб-поиском: README.md

This commit is contained in:
2026-06-01 07:49:57 +00:00
parent 38608d5136
commit ca4c636dc5
+159 -2
View File
@@ -1,3 +1,160 @@
# task-6a1864f7-ekzamen-rag-agent-s-chrom
# RAGAgent with ChromaDB and Web Search
Решения домашних заданий
A lightweight RAG (RetrievalAugmented Generation) agent that uses a local **ChromaDB** vector store for knowledge retrieval and **Tavily** for live web search.
The agent automatically decides whether to answer from the local knowledge base or to fetch fresh information from the web.
> **Prerequisites**
> • Python3.10+
> • Ollama (LLM & embeddings)
> • Tavily API key
---
## 📦 Project Structure
```
.
├── vectorstore.py # Vector store creation & document ingestion
├── agent.py # RAG agent implementation (not shown in the prompt)
├── .env # Tavily API key
├── requirements.txt # Dependencies
└── README.md
```
---
## 🚀 Installation
```bash
# 1. Pull required models into Ollama
ollama pull llama3
ollama pull nomic-embed-text
# 2. Install Python dependencies
pip install -r requirements.txt
```
`requirements.txt`
```text
langchain
langchain-chroma
langchain-tavily
langchain-ollama
tavily-python
chromadb
python-dotenv
```
> **Note**:
> *If you use a different LLM or embeddings provider, adjust the `create_vectorstore` function accordingly.*
---
## ⚙️ Configuration
Create a `.env` file in the project root:
```dotenv
TAVILY_API_KEY=your_tavily_api_key_here
```
The key is used by the Tavily client for web search.
---
## 📚 Using the Vector Store
### 1. Create the store
```python
from vectorstore import create_vectorstore
vectorstore = create_vectorstore("./chroma_db")
```
### 2. Load documents into the store
```python
from vectorstore import load_documents
# Directory containing .txt or .md files
load_documents("./knowledge_base", vectorstore)
```
The function will:
1. Read all `.txt` and `.md` files in the given directory.
2. Split them into chunks using `RecursiveCharacterTextSplitter`.
3. Add the chunks to the Chroma collection.
---
## 🧩 Running the Agent
> **Assumption**: `agent.py` contains the main RAG agent logic that imports `vectorstore.py`.
> The agent automatically chooses between the local vector store and Tavily search.
```bash
python agent.py
```
The agent will:
1. Prompt the user for a question.
2. Query the vector store for relevant chunks.
3. If the answer is insufficient, perform a web search via Tavily.
4. Generate a final answer with the chosen source.
---
## 🔧 Example Workflow
```bash
$ python agent.py
Enter your question (or 'exit' to quit): What is the capital of France?
Answer: The capital of France is Paris.
Source: Local knowledge base (retrieved from chroma_db)
```
If the question is about a very recent event:
```bash
$ python agent.py
Enter your question (or 'exit' to quit): Who won the 2024 World Series?
Answer: The 2024 World Series was won by the Texas Rangers.
Source: Web search (Tavily)
```
---
## 📦 Adding New Documents
1. Drop your `.txt` or `.md` files into the `knowledge_base/` directory.
2. Run:
```bash
python -c "from vectorstore import load_documents, create_vectorstore; load_documents('knowledge_base', create_vectorstore())"
```
The new documents will be indexed automatically.
---
## 🛠️ Troubleshooting
| Symptom | Likely Cause | Fix |
|---------|--------------|-----|
| `ModuleNotFoundError: No module named 'langchain_ollama'` | Missing dependency | `pip install langchain-ollama` |
| `Ollama` not running | Ollama daemon stopped | `ollama serve` |
| Tavily errors | Invalid API key | Verify `.env` and restart |
---
## 📄 License
MIT License feel free to adapt and extend.
---