Project case study

FileSense

A local-first semantic file search engine combining BM25 keyword search with FAISS-powered vector search for instant document retrieval.

Primary tools

Python · FastAPI · FAISS · ONNX Runtime · +1 more

Project preview
FileSense interface preview

Overview

What this is

The compact read before the technical details.

A local-first semantic file search engine combining BM25 keyword search with FAISS-powered vector search for instant document retrieval. Built with FastAPI and ONNX Runtime for fast embeddings, it indexes your local files and lets you search by meaning, not just keywords. Supports multiple file types, runs entirely offline, and returns ranked results in milliseconds.

Capabilities

What it actually does

The useful parts, pulled out of the paragraph wall.

01

Hybrid search engine fusing BM25 keyword matching with FAISS-powered dense vector embeddings using reciprocal rank fusion — gets you both exact-match precision and semantic recall

02

Local-first architecture: all indexing, embedding, and search runs on-device via ONNX Runtime with no cloud dependency

03

Hardware-adaptive system that auto-detects capabilities and throttles between eco, balanced, and performance modes

04

Multi-format pipeline handling PDFs, DOCX, PPTX, XLSX, and code files with syntax-aware chunking via Docling and Chonkie

Implementation

Technology with jobs attached

Names are less useful than responsibilities. This is what each piece is doing.

FastAPI

Async backend API serving search, indexing, and stats endpoints

Sentence Transformers

Generates dense vector embeddings for semantic search queries and documents

FAISS

High-performance approximate nearest neighbor search over document embeddings

Elasticsearch

BM25 keyword retrieval engine for traditional term-based matching

ONNX Runtime

Local inference runtime for transformer models without GPU requirements

Docling

Document parsing and content extraction for PDFs, PPTX, and XLSX files

Chonkie

Text chunking library with syntax-aware splitting for code files

React 19

Frontend UI with component-based search interface