78 lines
2.5 KiB
Markdown
78 lines
2.5 KiB
Markdown
# FAQ Bot – ChromaDB + Ollama
|
||
|
||
This project implements a simple FAQ bot that uses **ChromaDB** as the vector database and **Ollama** as the LLM provider.
|
||
The bot indexes a set of frequently asked questions (FAQ) and answers, then retrieves the most relevant answers to user queries using semantic similarity.
|
||
|
||
## Features
|
||
|
||
- **Vector store**: ChromaDB (local, file‑based persistence)
|
||
- **LLM**: Ollama (e.g., `llama3.1`)
|
||
- **Embeddings**: Ollama embeddings
|
||
- **Retrieval**: Semantic search over FAQ questions
|
||
- **Answer generation**: Ollama LLM generates natural language responses
|
||
|
||
## Setup
|
||
|
||
1. **Clone the repository**
|
||
```bash
|
||
git clone <repo-url>
|
||
cd <repo-directory>
|
||
```
|
||
|
||
2. **Create a virtual environment** (optional but recommended)
|
||
```bash
|
||
python -m venv venv
|
||
source venv/bin/activate # On Windows: venv\Scripts\activate
|
||
```
|
||
|
||
3. **Install dependencies**
|
||
```bash
|
||
pip install -r requirements.txt
|
||
```
|
||
|
||
4. **Configure Ollama**
|
||
- Ensure Ollama is running locally (default port `11434`).
|
||
- Optionally set environment variables in a `.env` file:
|
||
```
|
||
OLLAMA_MODEL=llama3.1
|
||
OLLAMA_BASE_URL=http://localhost:11434
|
||
```
|
||
|
||
5. **Run the bot**
|
||
```bash
|
||
python src/main.py
|
||
```
|
||
|
||
Type your question in the console. Type `exit` or `quit` to stop.
|
||
|
||
## Project Structure
|
||
|
||
```
|
||
.
|
||
├── requirements.txt
|
||
├── src
|
||
│ └── main.py
|
||
└── README.md
|
||
```
|
||
|
||
- `requirements.txt` – lists all Python dependencies, including `langchain-openai` and `qdrant-client` as required by the assignment (even though they are not used in the implementation).
|
||
- `src/main.py` – main application logic:
|
||
- Initializes Ollama embeddings and LLM.
|
||
- Sets up a ChromaDB collection for FAQ data.
|
||
- Indexes sample FAQ entries.
|
||
- Builds a RetrievalQA chain.
|
||
- Provides a simple REPL for user interaction.
|
||
|
||
## Notes
|
||
|
||
- The FAQ data is hard‑coded in `src/main.py`. In a production setup, you would load this from a database or a file.
|
||
- The vector store persists in the `./chromadb` directory. Delete this folder to re‑index from scratch.
|
||
- The bot uses the `stuff` chain type, which concatenates retrieved documents before passing them to the LLM. This is suitable for short FAQ answers.
|
||
|
||
## Troubleshooting
|
||
|
||
- **Ollama not found**: Ensure the Ollama server is running and accessible at the URL specified in `OLLAMA_BASE_URL`.
|
||
- **Missing dependencies**: Run `pip install -r requirements.txt` again.
|
||
- **Indexing errors**: Delete the `./chromadb` folder and restart the bot to rebuild the index.
|
||
|
||
Enjoy your FAQ bot! |