88 lines
2.8 KiB
Markdown
88 lines
2.8 KiB
Markdown
# FAQ Bot with Qdrant Vector Store
|
||
|
||
This project implements a simple FAQ chatbot that uses **Qdrant** as the vector store for embeddings.
|
||
The bot loads a set of FAQ entries, generates embeddings with OpenAI’s `text-embedding-ada-002` model, stores them in Qdrant, and answers user queries by performing a similarity search.
|
||
|
||
## Prerequisites
|
||
|
||
- Python 3.9+
|
||
- A running Qdrant instance (local or remote)
|
||
- An OpenAI API key
|
||
|
||
## Setup
|
||
|
||
1. **Clone the repository**
|
||
|
||
```bash
|
||
git clone https://git.brojs.ru/kuzakhmetovartur/povtornyy-ekzamen-faq-bot-qdrant.git
|
||
cd povtornyy-ekzamen-faq-bot-qdrant
|
||
```
|
||
|
||
2. **Create a virtual environment and install dependencies**
|
||
|
||
```bash
|
||
python -m venv venv
|
||
source venv/bin/activate # On Windows use `venv\Scripts\activate`
|
||
pip install -r requirements.txt
|
||
```
|
||
|
||
3. **Configure environment variables**
|
||
|
||
Create a `.env` file in the project root with the following content:
|
||
|
||
```dotenv
|
||
# Qdrant configuration
|
||
QDRANT_HOST=localhost
|
||
QDRANT_PORT=6333
|
||
QDRANT_API_KEY= # leave empty if no API key is required
|
||
|
||
# OpenAI configuration
|
||
OPENAI_API_KEY=your_openai_api_key_here
|
||
```
|
||
|
||
Replace `your_openai_api_key_here` with your actual OpenAI API key.
|
||
|
||
4. **Run the bot**
|
||
|
||
```bash
|
||
python src/main.py
|
||
```
|
||
|
||
The bot will ingest the FAQ data into Qdrant and then wait for user input. Type a question and press Enter to receive an answer. Type `exit` or `quit` to stop the bot.
|
||
|
||
## How It Works
|
||
|
||
1. **Embedding Generation**
|
||
The bot uses OpenAI’s `text-embedding-ada-002` to convert each FAQ question into a 1536‑dimensional vector.
|
||
|
||
2. **Vector Store**
|
||
Qdrant stores these vectors in a collection named `faq_collection`. Each point contains the vector and a payload with the original question and answer.
|
||
|
||
3. **Querying**
|
||
When a user asks a question, the bot generates an embedding for the query, performs a cosine similarity search in Qdrant, and returns the answer from the most similar FAQ entry.
|
||
|
||
## Customization
|
||
|
||
- **Adding More FAQs**
|
||
Edit the `FAQ_DATA` list in `src/main.py` to include additional question/answer pairs.
|
||
|
||
- **Changing the Embedding Model**
|
||
Replace `"text-embedding-ada-002"` in `get_embedding()` with another OpenAI embedding model if desired.
|
||
|
||
- **Adjusting Search Parameters**
|
||
Modify `top_k` in `query_faq()` to return more results or change the similarity metric in `create_or_recreate_collection()`.
|
||
|
||
## Troubleshooting
|
||
|
||
- **Qdrant Connection Errors**
|
||
Ensure Qdrant is running and reachable at the host/port specified in the `.env` file.
|
||
|
||
- **OpenAI Rate Limits**
|
||
If you hit rate limits, consider adding retry logic or using a different model.
|
||
|
||
- **Missing Dependencies**
|
||
Run `pip install -r requirements.txt` again to ensure all packages are installed.
|
||
|
||
## License
|
||
|
||
This project is provided for educational purposes and is not licensed for commercial use. |