Files
ekzamen-rag-agent-s-chromad…/README.md
T

90 lines
2.3 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 project implements a simple Retrieval-Augmented Generation (RAG) agent that uses **ChromaDB** for vector storage and **OpenAI** embeddings for text representation. The agent exposes two HTTP endpoints:
- `POST /ingest` ingest documents into the vector store.
- `POST /query` retrieve the most similar documents for a given query.
## Features
- **Vector Store**: ChromaDB collection named `rag_collection`.
- **Embeddings**: OpenAI `text-embedding-ada-002` (configurable).
- **API**: FastAPI based, can be run locally or in Docker.
- **No Qdrant**: The implementation uses only ChromaDB as required.
## Prerequisites
- Python 3.11+
- Docker (optional, for containerized deployment)
- An OpenAI API key (set as `OPENAI_API_KEY` environment variable).
## Setup
### Local
```bash
# Clone the repository
git clone https://git.brojs.ru/kuzakhmetovartur/ekzamen-rag-agent-s-chromadb-i-veb-poisk.git
cd ekzamen-rag-agent-s-chromadb-i-veb-poisk
# Create virtual environment
python -m venv venv
source venv/bin/activate
# Install dependencies
pip install -r requirements.txt
# Set OpenAI API key
export OPENAI_API_KEY="sk-..."
# Run the server
uvicorn src.main:app --reload
```
The API will be available at `http://127.0.0.1:8000`.
### Docker
```bash
# Build the image
docker build -t rag-agent .
# Run the container
docker run -d -p 8000:8000 --env OPENAI_API_KEY="sk-..." rag-agent
```
## API Usage
### Ingest Documents
```bash
curl -X POST http://localhost:8000/ingest \
-H "Content-Type: application/json" \
-d '{
"documents": [
{"content": "The quick brown fox jumps over the lazy dog."},
{"content": "Python is a versatile programming language."}
]
}'
```
### Query
```bash
curl -X POST http://localhost:8000/query \
-H "Content-Type: application/json" \
-d '{
"query": "What is Python?",
"k": 3
}'
```
## Notes
- The vector store is persisted in memory by default. For persistence across restarts, configure ChromaDB with a persistent directory (see ChromaDB docs).
- The agent currently only returns the raw similarity search results. Integration with a language model for generation can be added later.
- No Qdrant usage is present; the stack strictly follows the assignment requirements.
## License
MIT License