Ontology-based RAG for Scientific Discovery
OntoRAG lets you define a Q&A system that is grounded to predefined ontologies of specific fields.
from OntoRAG.ontorag import OntoRAG
# Initialize OntoRAG with your ontology
orag = OntoRAG(
ontology_path="path/to/your/ontology",
)
# Ask a question (in the domain of the ontology)
question = "What's the difference between DNA and RNA"
answer = orag.forward(question)
print(answer)
You'll need to set up your OpenAI API key in your environment:
export OPENAI_API_KEY='your-api-key-here'
Or use a .env
file:
OPENAI_API_KEY=your-api-key-here
The most recent code and data can be installed directly from GitHub with:
$ pip install git+https://github.com/schwallergroup/ontorag.git
📂 OntoGen: Ontogen package
The OntoGen package is a tool for generating ontologies from a set of text documents. Ontogen is located in src/OntoGen
directory.
For more details see the OntoGen README.
Andres M Bran. et al. OntoRAG - Ontology-based RAG for Scientific Discovery
@Misc{ontorag_bran2025,
author = {Bran, Andres M and Oarga, Alexandru and Hart, Matthew and Lederbauer, Magdalena and Schwaller, Philippe},
title = {OntoRAG - Ontology-based RAG for Scientific Discovery},
howpublished = {Github},
year = {2025},
url = {https://github.com/schwallergroup/ontorag}
}
See developer instructions
Contributions, whether filing an issue, making a pull request, or forking, are appreciated. See CONTRIBUTING.md for more information on getting involved.
To install in development mode, use the following:
$ git clone git+https://github.com/schwallergroup/ontorag.git
$ cd ontorag
$ pip install -e .
After cloning the repository and installing tox
with pip install tox
, the unit tests in the tests/
folder can be
run reproducibly with:
$ tox
Additionally, these tests are automatically re-run with each commit in a GitHub Action.
The documentation can be built locally using the following:
$ git clone git+https://github.com/schwallergroup/ontorag.git
$ cd ontorag
$ tox -e docs
$ open docs/build/html/index.html
The documentation automatically installs the package as well as the docs
extra specified in the setup.cfg
. sphinx
plugins
like texext
can be added there. Additionally, they need to be added to the
extensions
list in docs/source/conf.py
.
After installing the package in development mode and installing
tox
with pip install tox
, the commands for making a new release are contained within the finish
environment
in tox.ini
. Run the following from the shell:
$ tox -e finish
This script does the following:
- Uses Bump2Version to switch the version number in the
setup.cfg
,src/OntoRAG/version.py
, anddocs/source/conf.py
to not have the-dev
suffix - Packages the code in both a tar archive and a wheel using
build
- Uploads to PyPI using
twine
. Be sure to have a.pypirc
file configured to avoid the need for manual input at this step - Push to GitHub. You'll need to make a release going with the commit where the version was bumped.
- Bump the version to the next patch. If you made big changes and want to bump the version by minor, you can
use
tox -e bumpversion -- minor
after.