🚧 Under active development. Do not use in production - APIs will change 🚧
OramaCore is the database you need for your AI projects, answer engines, copilots, and search.
It includes a fully-fledged full-text search engine, vector database, LLM interface, and many more utilities.
-
v0.1.0. ETA Jan 31st, 2025 (🚧 beta release)
- ✅ Full-text search
- ✅ Vector search
- ✅ Search filters
- ✅ Automatic embeddings generation
- ✅ Built-in multiple LLM inference setup
- ✅ Basic JavaScript integration
- ✅ Disk persistence
- 🚧 Vector compression
- ✅ Unified configuration
- 🚧 Dockerfile for load testing in production environment
- 🚧 Benchmarks
-
v1.0.0. ETA Feb 28th, 2025 (🎉 production ready!)
- 🔜 Long-term user memory
- 🔜 Multi-node setup
- 🔜 Content expansion APIs
- 🔜 JavaScript API integration
- 🔜 Production-ready build
- 🔜 Geosearch
- 🔜 Zero-downtime upgrades
To run Orama Core locally, you need to have the following programming languages installed:
- Python >= 3.11
- Rust >= 1.83.0
The Rust part of Orama Core communicates with Python via gRPC. So you'll also need to install a protobuf compiler:
apt-get install protobuf-compiler
After that, just install the dependencies:
cargo build
cd ./src/ai_server && pip install -r requirements.txt
An NVIDIA GPU is highly recommended for running the application.
How to run:
RUST_LOG=trace PROTOC=/usr/bin/protoc cargo run --bin oramacore
or, for release mode:
RUST_LOG=trace PROTOC=/usr/bin/protoc cargo run --bin oramacore --release
The configuration file is located at config.jsonc
and contains an example of the configuration.
You can persist the database status on disk by runnng the following commands:
curl 'http://localhost:8080/v0/reader/dump_all' -X POST
curl 'http://localhost:8080/v0/writer/dump_all' -X POST
After killing and restarting the server, you'll find your data back in memory.
To run the tests, use:
cargo test
Install hurl
:
cargo install hurl
Run the tests:
hurl --very-verbose --test --variables-file api-test.hurl.property api-test.hurl
hurl --very-verbose --test --variables-file api-test.hurl.property embedding-api-test.hurl
NB: you need to have the server running before running the tests.