Skip to content

About

Semantic search engine that understands meaning, not just keywords

Resources

Stars

1 star

Watchers

0 watching

Forks

Latest commit

 

History

1 Commit

Folders and files

Repository files navigation

MindSearch — Semantic Search Engine 🔍

A search engine that actually understands what you mean. Unlike keyword search, MindSearch uses AI embeddings to find results based on meaning. Type a natural language query and get the most relevant results from any dataset.

Built with Sentence Transformers and ChromaDB.

Features

  • Natural language search — ask questions instead of guessing keywords
  • Semantic similarity — finds results based on meaning, not exact matches
  • Fast vector search using ChromaDB
  • Built-in demo dataset with Wikipedia articles (auto-downloads on first run)
  • Relevance scores for each result
  • Search history tracking
  • Responsive dark UI

Getting Started

git clone https://github.com/YOUR_USERNAME/mindsearch-semantic-engine.git
cd mindsearch-semantic-engine

python -m venv venv
source venv/bin/activate   # Windows: venv\Scripts\activate

pip install -r requirements.txt

python app.py

Open http://localhost:8000. On first run, the model and demo data will be downloaded (~90MB).

How It Works

  1. Indexing — Text documents are converted to 384-dimensional vectors using a Sentence Transformer model
  2. Storage — Vectors are stored in ChromaDB (a local vector database)
  3. Search — Your query is converted to a vector, then ChromaDB finds the most similar documents
  4. Ranking — Results are returned sorted by cosine similarity

Tech Stack

  • Embeddings: Sentence Transformers (all-MiniLM-L6-v2)
  • Vector DB: ChromaDB
  • Backend: Python, FastAPI
  • Frontend: HTML, CSS, JavaScript

Project Structure

mindsearch-semantic-engine/
├── app.py              # FastAPI server
├── search_engine.py    # Embedding + indexing + search logic
├── seed_data.py        # Demo dataset loader
├── requirements.txt
├── static/
│   ├── index.html
│   ├── styles.css
│   └── script.js
└── README.md

Adding Your Own Data

You can index your own documents by calling the /api/index endpoint:

curl -X POST http://localhost:8000/api/index \
  -H "Content-Type: application/json" \
  -d '{"title": "My Document", "content": "Your text here...", "source": "manual"}'

License

MIT

About

Semantic search engine that understands meaning, not just keywords

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages