# Entity Comparison Tool This project demonstrates how to integrate the Qdrant vector database with the Tavily search API to generate a markdown table comparing three entities. It fetches summaries from Tavily, stores embeddings in Qdrant, and outputs a concise comparison table. ## Features - **Qdrant Integration**: Stores and retrieves vector embeddings for entities. - **Tavily Search**: Retrieves up-to-date summaries and URLs for each entity. - **Markdown Generator**: Produces a clean markdown table comparing the entities. ## Prerequisites - Python 3.9+ - A running Qdrant instance (default: `localhost:6333`) - A Tavily API key ## Setup ```bash # Clone the repository git clone https://github.com/yourusername/entity-comparison-tool.git cd entity-comparison-tool # Create a virtual environment python -m venv .venv source .venv/bin/activate # On Windows: .venv\Scripts\activate # Install dependencies pip install -r requirements.txt ``` ## Configuration Create a `.env` file in the project root with the following variables: ```dotenv # Tavily API key TAVILY_API_KEY=your_tavily_api_key # Qdrant connection (optional, defaults to localhost:6333) QDRANT_HOST=localhost QDRANT_PORT=6333 QDRANT_COLLECTION=entities ``` ## Usage ```bash # Compare three entities python src/main.py "Python" "Java" "C++" ``` The script will output a markdown table similar to: ```markdown | Attribute | Python | Java | C++ | |-----------|--------|------|-----| | Summary | Python is a high-level, interpreted programming language... | Java is a class-based, object-oriented programming language... | C++ is a general-purpose programming language that supports procedural, object-oriented, and generic programming... | | URL | https://www.python.org/ | https://www.oracle.com/java/ | https://isocpp.org/ | ``` ## Project Structure ``` entity-comparison-tool/ ├── src/ │ ├── main.py │ ├── qdrant_client.py │ └── markdown_generator.py ├── requirements.txt └── README.md ``` ## Extending the Tool - **Custom Attributes**: Modify `markdown_generator.py` to extract additional attributes from the Tavily response. - **Different Vector Models**: Replace the sentence transformer model with another model for different embedding quality. - **Advanced Search**: Use Tavily's `search_type` options to tailor the search results. ## License MIT License