OramaSearch Inc. LogoOramaCore

Write & Read Side

OramaCore is a modular system, allowing it to run as a monolith or as a distributed system. We split the system into two distinct sides.

OramaCore is a modular system. We allow it to run as a monolith - where all the components are running in a single process - or as a distributed system, where you can scale each component independently.

To allow this, we split the system into two distinct sides: the Write Side and the Read Side.

If you're running OramaCore in a single node, you won't notice the difference. But if you're running it in a distributed system, you can scale the write side independently from the read side.

Write Side

The write side is responsible for ingesting data, generating embeddings, and storing them in the vector database. It's also responsible for generating the full-text search index.

It's the part of the system that requires the most GPU power and memory, as it need to generate a lot of content, embeddings, and indexes.

In detail, the write side is responsible for:

  • Ingesting data. It creates a buffer of documents and flushes them to the vector database and the full-text search index, rebuilding the immutable data structures used for search.
  • Generating embeddings. It generates text embeddings for large datasets without interfering with the search performance.
  • Expanding content (coming soon). It is capable of reading images, code blocks, and other types of content, and generating descriptions and metadata for them.

Every insertion, deletion, or update of a document will be handled by the write side.

Read Side

The read side is responsible for handling queries, searching for documents, and returning the results to the user.

It's also the home of the Answer Engine, which is responsible for generating answers to questions and performing chain of actions based on the user's input.

In detail, the read side is responsible for:

  • Handling queries. It receives the user's query, translates it into a query that the vector database can understand, and returns the results.
  • Searching for documents. It searches for documents in the full-text search index and the vector database.
  • Answer Engine. It generates answers to questions, performs chain of actions, and runs custom agents.

Every query, question, or action will be handled by the read side.

On this page