Skip to content

Oracle of Ammon

PyPI version shield Python version shield MIT License

A simple CLI tool for creating Search APIs.

Installation

Creating a virtual environment is highly recommended. To do so, run:

python3 -m venv .venv
source .venv/bin/activate

Once your environment is active, simply install the package with:

pip install oracle-of-ammon

Usage

To get started, checkout the help menu:

oracle-of-ammon --help

Image of oracle-of-ammon cli help documentaiton

Here, you will see we currently have two options: summon and locust.

Summon

By default, Summon is configured to initialize an empty search service on port 8000. The API framework used is FastAPI and the underlying search engine is built on Haystack. If you would like to initialize the search service with documents upon startup, provide a filepath with the --path option. Once the service has been initialized, you can view the API docs at http://127.0.0.1:8000/docs. A static version of the swagger documentation can also be found here.

Option Type Default Description
--path TEXT None Filepath used to pre-index document store.
--sheet-name TEXT None If using an excel file, select which sheet(s) to load. If none provided, all sheets will be loaded. Expects a comma-separated list.
--title TEXT Oracle of Ammon API documentation title.
--index TEXT document Default index name.
--faq BOOL TRUE Selector for content preloaded into document store.

Supported Filetypes:

  • FAQ: CSV, TSV, JSON, XLSX, TXT
  • Semantic: TXT

See the data directory for examples of accepted files.

Oracle of Ammon CLI - Summon

Locust

Locust is an open source tool for load testing. You're able to swarm your system with millions of simultaneous users -- recording service performance and other metrics. By default, Locust will start on port 8089. To start a new load test, simply enter the number of users you want to simulate, their spawn rate, and the host address to swarm.

Image of locust config]

Coming Eventually 👀

  • ~~Semantic search~~
  • ~~Document search~~
  • ~~Document summarization~~
  • Document ranking
  • ~~Multiple index support~~
  • Annotations/Feedback
  • Fine tuning
  • Additional locust endpoints
  • Dynamic Locust config
  • Custom pipelines
  • Dedicated docs wiki