# Technical Documentation: oramasearch/orama > ℹ️ **Provenance:** Hybrid Fusion: `oramasearch/orama` (README + 9 In-Tree Chapters) · [CodeWiki Reference](https://codewiki.google/github.com/oramasearch/orama) · Recency: Active (< 180 days) ## 1. Project Overview & Quickstart (oramasearch/orama) ## 2. In-Tree Documentation Chapters (oramasearch/orama) ## File: .changeset/README.md # Changesets Hello and welcome! This folder has been automatically generated by `@changesets/cli`, a build tool that works with multi-package repos, or single-package repos to help you version and publish your code. You can find the full documentation for it [in our repository](https://github.com/changesets/changesets) We have a quick list of common questions to get you started engaging with this project in [our documentation](https://github.com/changesets/changesets/blob/main/docs/common-questions.md) --- ## File: packages/tokenizers/README.md # Orama Tokenizers This package provides support for additional tokenizers for the Orama Search Engine. Available tokenizers: - Chinese (Mandarin, experimental) - Japanese (experimental) - Korean (experimental) Usage: ```js import { create } from "@orama/orama"; import { createTokenizer } from "@orama/tokenizers/mandarin"; const db = await create({ schema: { myProperty: "string", anotherProperty: "number", }, components: { tokenizer: await createTokenizer(), }, }); ``` # License [Apache 2.0](/LICENSE.md) --- ## File: packages/switch/README.md # Orama Switch Orama Switch allows you to run queries on Orama Cloud and OSS with a single interface. ## Installation ```sh npm i @orama/switch ``` ## Usage You can use the same APIs to access either Orama Cloud or Orama OSS. For instance, this is how you would interact with Orama Cloud: ```js import { Switch } from '@orama/switch' import { OramaClient } from '@oramacloud/client' const client = new OramaClient({ endpoint: '', api_key: '', }) const orama = new Switch(client) const results = await orama.search({ term: 'noise cancelling headphones', where: { price: { lte: 99.99 } } }) ``` And this is Orama OSS: ```js import { Switch } from '@orama/switch' import { create } from '@orama/orama' const db = await create({ schema: { productName: 'string', price: 'number' } }) const orama = new Switch(client) const results = await orama.search({ term: 'noise cancelling headphones', where: { price: { lte: 99.99 } } }) ``` ## License [Apache 2.0](/LICENSE.md) --- ## File: packages/stopwords/README.md # Orama Stop-words This package provides support for stop-words removal in 33 languages: - Arabic - Armenian - Bulgarian - Chinese (Mandarin) - Czech - Danish - Dutch - English - Finnish - French - German - Greek - Hindi - Hungarian - Indonesian - Irish - Italian - Japanese - Lithuanian - Nepali - Norwegian - Portuguese - Romanian - Russian - Sanskrit - Serbian - Slovenian - Spanish - Swedish - Tamil - Turkish - Ukrainian - Vietnamese ```js import { create } from '@orama/orama' import { stopwords as italianStopwords } from '@orama/stopwords/italian' const db = create({ schema: { components: { tokenizer: { stopwords: italianStopwords } } }) ``` Read more in the official docs: [https://docs.orama.com/docs/orama-js/text-analysis/stop-words](https://docs.orama.com/docs/orama-js/text-analysis/stop-words). # License [Apache 2.0](/LICENSE.md) --- ## File: packages/stemmers/lib/README.md # Snowball Stemmer This directory contains **generated** stemmers using the [Snowball](http://snowballstem.org/) compiler. Do not edit these files directly. --- ## File: packages/stemmers/README.md # Orama Stemmers Orama can analyze the input and perform a `stemming` operation, which allows the engine to perform more optimized queries, as well as save indexing space. Right now, Orama supports 31 languages and stemmers out of the box: - Arabic - Armenian - Bulgarian - Czech - Danish - Dutch - English - Finnish - French - German - Greek - Hindi - Hungarian - Indonesian - Irish - Italian - Lithuanian - Nepali - Norwegian - Portuguese - Romanian - Russian - Sanskrit - Serbian - Slovenian - Spanish - Swedish - Tamil - Turkish - Ukrainian - Vietnamese Chinese (Mandarin) and Japanese are supported through dedicated tokenizers (`@orama/tokenizers`) and stop-word removal (`@orama/stopwords`), not through stemming. ```js import { create } from '@orama/orama' import { stemmer, language } from '@orama/stemmers/italian' const db = create({ schema: { components: { tokenizer: { stemming: true, stemmer, language } } }) ``` Read more in the official docs: [https://docs.orama.com/docs/orama-js/text-analysis/stemming](https://docs.orama.com/docs/orama-js/text-analysis/stemming). # License [Apache 2.0](/LICENSE.md) --- ## File: packages/plugin-vitepress/README.md # Vitepress Plugin [](https://github.com/oramasearch/orama/actions/workflows/turbo.yml) Official plugin to provide search capabilities through Orama on any Vitepress website! # Usage For the complete usage guide, please refer to the [official plugin documentation](https://docs.orama.com/docs/orama-js/plugins/plugin-vitepress). # TL;DR ```js // .vitepress/config.js import { defineConfig } from 'vitepress' import { OramaPlugin } from '@orama/plugin-vitepress' export default defineConfig({ // ... extends: { vite: { plugins: [OramaPlugin()] }, } }) ``` # License [Apache-2.0](/LICENSE.md) --- ## File: packages/plugin-secure-proxy/README.md # Orama Secure Proxy Plugin [](https://github.com/oramasearch/orama/actions/workflows/turbo.yml) Orama plugin for generating embeddings and performing vector/hybrid search securely on the front-end. # Usage For the complete usage guide, please refer to the [official plugin documentation](https://docs.orama.com/docs/orama-js/plugins/plugin-secure-proxy). To use the Orama Secure Proxy Plugin, you will need to sign up for a free account at [https://cloud.orama.com](https://cloud.orama.com) ```js import { create, insert, search } from '@orama/orama' import { pluginSecureProxy} from '@orama/plugin-secure-proxy' const db = await create({ schema: { title: 'string', embeddings: 'vector[384]' }, plugins: [ pluginSecureProxy({ apiKey: 'xyz', embeddings: { defaultProperty: 'embeddings', model: 'orama/gte-small', onInsert: { generate: true, // Generate the embeddings at insert-time properties: ['title', 'description'], // Properties to generate embeddings from verbose: false }, }, chat: { model: 'openai/gpt-4o' } }) ] }) ``` Available **embeddings** models: | Model name | Provider | Dimensions | | -------------------------------- | -------- | ---------- | | `orama/gte-small` | Orama | 384 | | `orama/gte-medium` | Orama | 768 | | `orama/gte-large` | Orama | 1024 | | `openai/text-embedding-ada-002` | Openai | 1536 | | `openai/text-embedding-3-small` | Openai | 1536 | | `openai/text-embedding-3-large` | Openai | 3072 | Available **chat** models: | Model name | Provider | | -------------------------------- | -------- | | `openai/openai/gpt-4o` | Openai | | `openai/gpt-4o-mini` | Openai | | `openai/gpt-4-turbo` | Openai | | `openai/gpt-4` | Openai | | `openai/gpt-3.5-turbo` | Openai | Mode models coming soon! For the full configuration guide of this plugin, please follow the [official plugin documentation](https://docs.orama.com/docs/orama-js/plugins/plugin-secure-proxy). # License [Apache-2.0](/LICENSE.md) --- ## File: packages/plugin-qps/README.md # Orama Plugin Quantum Proximity Scoring **Orama Plugin Quantum Proximity Scoring** ranks search results based on the proximity of query tokens in the document. ## Installation To get started with **Orama Plugin QPS**, just install it with npm: ```sh npm i @orama/plugin-qps ``` ## Usage ```js import { create } from '@orama/orama' import { pluginQPS } from '@orama/plugin-qps' const db = await create({ schema: { }, plugins: [ pluginQPS() ], }) ``` # License [Apache 2.0](/LICENSE.md) --- METRICS --- - Files Extracted: 10 - Estimated Token Budget: ~2066 tokens - Recency Window: Active (< 180 days) - Canonical Reference: https://codewiki.google/github.com/oramasearch/orama