tabulaRAG logo

TabulaRAG

Fast-ingesting tabular data RAG with cell-level citations.
Upload CSV/TSV, get vector-powered search and structured queries via REST or MCP.

Get started GitHub v1.1.0
// .cursor/mcp.json
{
  "mcpServers": {
    "tabularag": {
      "url": "http://127.0.0.1:8000/mcp"
    }
  }
}

Features

Everything you need to make tabular data searchable and queryable.

ingestion

Fast ingestion

Upload CSV/TSV files. Ingests via PostgreSQL COPY for high throughput, with automatic type detection.

search

Vector search

Every row is embedded and indexed in Qdrant. Semantic search finds relevant data across your tables.

retrieval

Cell citations

Query results point to exact cells, not just rows. Know precisely where each answer comes from.

analytics

Aggregation & filtering

Built-in aggregate and filter endpoints. SUM, AVG, COUNT with group-by, plus advanced row filtering.

integration

MCP endpoint

Streamable HTTP MCP server built-in. Connect any AI assistant or tool runner directly to your data.

frontend

Web UI

Upload, browse, search, and manage tables from a clean React frontend. Dark mode included.


How it works

From CSV to semantic search in three steps.

1

Upload

Drop a CSV or TSV file. Rows are parsed, typed, and bulk-inserted into PostgreSQL via COPY.

2

Index

A background worker embeds every row using sentence-transformers and upserts vectors into Qdrant.

3

Query

Search semantically, filter rows, or aggregate columns. Results include cell-level citations.


API

REST endpoints and MCP for AI tool integration.

Method Endpoint Description
GET /tables List all datasets with metadata
GET /tables/{id}/columns Get column names for a dataset
GET /tables/{id}/slice Browse raw rows with pagination
POST /tables/{id}/rows_by_indices Fetch specific rows by index list
POST /query Unified query — semantic search, aggregate, or filter
MCP /mcp Streamable HTTP MCP server endpoint

Quickstart

Up and running with Docker in under a minute.

# Clone the repo
$ git clone https://github.com/angelafeliciaa/tabulaRAG && cd tabulaRAG

# Configure environment
$ cp .env.example .env

# Start all services (frontend, backend, postgres, qdrant)
$ ./scripts/dev-up.sh

# Open the UI
$ open http://localhost:5173