Files
povtornyy-ekzamen-faq-bot-c…/README.md
T

81 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.
# FAQ Bot ChromaDB + Ollama Embeddings
This project implements a simple FAQ chatbot that uses **ChromaDB** as the vector store and **Ollama** for embeddings. The chatbot answers user questions by retrieving the most relevant FAQ entries and generating a response with an OpenAI LLM.
## Features
- **Vector Store**: ChromaDB (persistent on disk)
- **Embeddings**: Ollama `all-MiniLM-L6-v2` (or any other Ollama model)
- **LLM**: OpenAI GPT-3.5-turbo (configurable)
- **API**: FastAPI with `/ask` and `/add` endpoints
## Setup
1. **Clone the repository**
```bash
git clone https://git.brojs.ru/kuzakhmetovartur/povtornyy-ekzamen-faq-bot-chromadb-odin.git
cd povtornyy-ekzamen-faq-bot-chromadb-odin
```
2. **Create a virtual environment**
```bash
python -m venv .venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
```
3. **Install dependencies**
```bash
pip install -r requirements.txt
```
4. **Set environment variables**
Create a `.env` file in the project root (or export variables manually):
```dotenv
# ChromaDB
CHROMA_DB_PATH=./chroma_db
CHROMA_COLLECTION_NAME=faq_collection
# Ollama
OLLAMA_EMBED_MODEL=all-MiniLM-L6-v2
OLLAMA_HOST=http://localhost
OLLAMA_PORT=11434
# OpenAI
OPENAI_API_KEY=your_openai_api_key
OPENAI_MODEL=gpt-3.5-turbo
```
5. **Run the server**
```bash
uvicorn src.main:app --reload
```
The API will be available at `http://127.0.0.1:8000`.
## API Endpoints
| Method | Path | Description |
|--------|-------|-------------|
| `POST` | `/ask` | Ask a question. Body: `{ "question": "Your question" }`. Response: `{ "answer": "..." }`. |
| `POST` | `/add` | Add a new FAQ entry. Body: `{ "text": "...", "metadata": { ... } }`. Response: `{ "status": "added" }`. |
## Adding FAQ Data
You can add FAQ entries via the `/add` endpoint or by modifying the code to load a dataset on startup. Each entry is stored as a `Document` in ChromaDB with optional metadata.
## Notes
- The vector store is persisted in the directory specified by `CHROMA_DB_PATH`. Deleting this directory will remove all stored vectors.
- Ollama must be running locally and expose the embedding endpoint on the host/port specified.
- The OpenAI LLM requires a valid API key.
## License
MIT License
---