explaingit

jinheonbaek/omniretrieval

20PythonAudience · researcherComplexity · 4/5Setup · hard

TLDR

A research system that takes a plain-English question and automatically searches across databases, knowledge graphs, and text documents at the same time, translating your question into SQL, SPARQL, Cypher, or keyword search as needed.

Mindmap

mindmap
  root((OmniRetrieval))
    What it does
      Natural language questions
      Multi-source search
      Automatic query translation
    Query Types
      SQL for databases
      SPARQL for knowledge graphs
      Cypher for graph databases
      Keyword for text
    Pipeline Steps
      Route sources
      Generate queries
      Execute queries
      Select best answer
    Benchmark
      13 datasets
      309 knowledge bases
      Multiple domains
    AI Backends
      OpenAI
      Anthropic
      Google
      Local vLLM
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Ask a natural-language question that requires combining answers from a SQL database and a knowledge graph, without writing any queries yourself.

USE CASE 2

Benchmark how well different AI models (OpenAI, Anthropic, Google, or a local model) handle multi-source retrieval across 13 research datasets.

USE CASE 3

Rescore previously saved evaluation runs with a different model without re-running the full pipeline from scratch.

Tech stack

PythonSQLSPARQLCyphervLLMOpenAI APIAnthropic API

Getting it running

Difficulty · hard Time to first run · 1day+

Requires downloading and preprocessing 13 benchmark datasets plus an API key for your chosen model provider, not a packaged library.

No license information was mentioned in the explanation.

In plain English

OmniRetrieval is a research system that lets you ask a natural-language question and have it automatically search across fundamentally different types of data sources at once. The problem it addresses is that information lives in many forms: some in plain text documents, some in relational databases (the kind that use SQL), some in structured knowledge graphs (databases that represent facts as linked entities), and some in graph databases with a different query language called Cypher. Each type normally requires a specialist who knows how to write queries in that format. OmniRetrieval uses a language model to handle all of that automatically. When you give it a question, the system first decides which data sources are relevant, then translates the question into the native query language for each of those sources (SQL for a database, SPARQL for one kind of knowledge graph, Cypher for another, or a standard keyword search for text), runs the queries, and then picks the best answer from the results. The whole process is phrased in the code as four steps: route, generate, execute, and select. The benchmark built into the project covers 13 datasets and 309 separate knowledge bases drawn from a range of fields including news fact-checking, financial questions, scientific papers, and general-knowledge questions. You can run the pipeline with different AI model providers as the reasoning backbone, including OpenAI, Anthropic, Google, or a locally hosted open-source model via a tool called vLLM. Setup involves installing Python dependencies, downloading and preprocessing the datasets using provided scripts, and adding API keys for whichever model provider you choose. Each evaluation run saves its results and metrics to a timestamped folder, and there is a separate script for rescoring saved runs without re-running the full pipeline. The project is a research codebase rather than a packaged library.

Copy-paste prompts

Prompt 1
I want to run OmniRetrieval on my own SQL database and a knowledge graph. Walk me through the setup steps: installing dependencies, adding API keys, and running a question through the route-generate-execute-select pipeline.
Prompt 2
How does OmniRetrieval decide which data source is relevant for a given question? Explain the routing step and how it picks between SQL, SPARQL, Cypher, and keyword search.
Prompt 3
I want to compare OpenAI and a local vLLM model as the reasoning backbone for OmniRetrieval. How do I configure each and run the benchmark so the results are saved to timestamped folders for comparison?
Prompt 4
How does the rescore script work in OmniRetrieval? If I already ran the pipeline and saved results, how do I rescore them with a new model without re-running everything?
Open on GitHub → Explain another repo

← jinheonbaek on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.