Skip to content

redis-developer/redis-search-10k-reports

Repository files navigation

Redis Search Demo

This repo is a Redis Search demo built around S&P 500 FY2025 10-K filings. It shows how Redis can support structured filtering, autocomplete, full-text search, vector search, and hybrid search over the same application data.

Dataset:

  • sample-records.json.zip
  • Extract sample-records.json to src/main/resources/datasets/sp500-fy2025-10k/sample-records.json

Prerequisites

  • Java 25
  • Docker and Docker Compose
  • A Redis runtime on port 6379 with Redis Search, JSON, and vector support
  • Enough local disk and patience for initial dataset indexing

Notes:

  • This repo is intentionally pinned to Java 25 in build.gradle.kts.
  • The Docker setup in this repo is now pinned to versioned Redis images for a more reproducible demo environment.

Start Redis

docker compose up -d

This starts Redis and RedisInsight.

  • Redis: redis://localhost:6379
  • RedisInsight: http://localhost:5540

Note:

  • The compose file uses redis:8 and redis/redisinsight:2.70.
  • Vector and hybrid search also depend on a working embedding runtime.
  • If the embedder is not ready, full-text, filters, and autocomplete can still work while vector and hybrid fail at runtime.

Run The App

./gradlew bootRun

Open the demo at:

http://localhost:8080

Use The UI

The browser UI is the main way to experience this demo.

  1. Open http://localhost:8080.
  2. Use the free-text query box to search the 10-K corpus.
  3. Use the filters to narrow by company, ticker, sector, section, filing year, or filing date.
  4. Switch between Full-Text, Vector, and Hybrid modes.
  5. Review the ranked chunk results and the live diagnostics shown in the UI.

Use RedisInsight if you want to inspect the underlying Redis data, but the demo itself is meant to be driven from the app UI.

First Run

When Redis is empty, startup takes longer because the app indexes the packaged dataset into Redis and generates embeddings for vector search.

  • The packaged dataset in src/main/resources/datasets is large, roughly 274 MB.
  • The sample records dataset used by this demo is also published here: sample-records.json.zip
  • After downloading, extract it to src/main/resources/datasets/sp500-fy2025-10k/sample-records.json
  • The app indexes the fixed workshop subset of 25 companies.
  • Indexing time depends on whether the local transformer embedder is configured and ready.
  • If vector or hybrid search fail, check your local embedding setup first.

Example:

unzip sample-records.json.zip -d src/main/resources/datasets/sp500-fy2025-10k

You can check status with:

curl -s http://localhost:8080/dataset/status

If the app is already running and Redis is empty, restart the Spring app. You can also trigger the same load manually:

curl -s -X POST http://localhost:8080/dataset/initialize

The browser UI also has a Load Data button next to the dataset status. After data is indexed, the same button becomes Reload Data.

Demo Flow

The UI follows this flow:

  1. Start the app so it indexes the workshop dataset when Redis is empty.
  2. Use the filters to narrow company, ticker, sector, year, and filing date.
  3. Use autocomplete for company names, tickers, and section names.
  4. Switch between full-text, vector, and hybrid search.
  5. Review the returned chunks and the live diagnostics.

Useful endpoints:

  • GET /dataset/status
  • POST /dataset/initialize
  • GET /filters
  • GET /autocomplete
  • POST /search

Hands-On Lab

If you want the workshop version of the narrative, start with:

Demo Queries

For presenter-safe query ideas, see:

Embedder Setup

For the checked-in vector configuration, see:

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors