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, filebased 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

    git clone <repo-url>
    cd <repo-directory>
    
  2. Create a virtual environment (optional but recommended)

    python -m venv venv
    source venv/bin/activate   # On Windows: venv\Scripts\activate
    
  3. Install dependencies

    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

    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 hardcoded 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 reindex 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!

S
Description
BroJS: Повторный экзамен: FAQ-бот — ChromaDB + один MCP-tool
Readme 142 KiB
Languages
Python 100%