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
-
Clone the repository
git clone https://git.brojs.ru/kuzakhmetovartur/povtornyy-ekzamen-faq-bot-qdrant.git cd povtornyy-ekzamen-faq-bot-qdrant -
Create a virtual environment and install dependencies
python -m venv venv source venv/bin/activate # On Windows use `venv\Scripts\activate` pip install -r requirements.txt -
Configure environment variables
Create a
.envfile in the project root with the following content:# 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_hereReplace
your_openai_api_key_herewith your actual OpenAI API key. -
Run the bot
python src/main.pyThe 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
exitorquitto stop the bot.
How It Works
-
Embedding Generation
The bot uses OpenAI’stext-embedding-ada-002to convert each FAQ question into a 1536‑dimensional vector. -
Vector Store
Qdrant stores these vectors in a collection namedfaq_collection. Each point contains the vector and a payload with the original question and answer. -
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 theFAQ_DATAlist insrc/main.pyto include additional question/answer pairs. -
Changing the Embedding Model
Replace"text-embedding-ada-002"inget_embedding()with another OpenAI embedding model if desired. -
Adjusting Search Parameters
Modifytop_kinquery_faq()to return more results or change the similarity metric increate_or_recreate_collection().
Troubleshooting
-
Qdrant Connection Errors
Ensure Qdrant is running and reachable at the host/port specified in the.envfile. -
OpenAI Rate Limits
If you hit rate limits, consider adding retry logic or using a different model. -
Missing Dependencies
Runpip install -r requirements.txtagain to ensure all packages are installed.
License
This project is provided for educational purposes and is not licensed for commercial use.