@orama/plugin-embeddings
v3.0.1
Published
Orama plugin for generating embeddings locally
Downloads
850
Readme
Orama Plugin Embeddings
Orama Plugin Embeddings allows you to generate fast text embeddings at insert and search time offline, directly on your machine - no OpenAI needed!
Installation
To get started with Orama Plugin Embeddings, just install it with npm:
npm i @orama/plugin-embeddings
Important note: to use this plugin, you'll also need to install one of the following TensorflowJS backend:
@tensorflow/tfjs
@tensorflow/tfjs-node
@tensorflow/tfjs-backend-webgl
@tensorflow/tfjs-backend-cpu
@tensorflow/tfjs-node-gpu
@tensorflow/tfjs-backend-wasm
For example, if you're running Orama on the browser, we highly recommend using @tensorflow/tfjs-backend-webgl
:
npm i @tensorflow/tfjs-backend-webgl
If you're using Orama in Node.js, we recommend using @tensorflow/tfjs-node
:
npm i @tensorflow/tfjs-node
Usage
import { create } from '@orama/orama'
import { pluginEmbeddings } from '@orama/plugin-embeddings'
import '@tensorflow/tfjs-node' // Or any other appropriate TensorflowJS backend
const plugin = await pluginEmbeddings({
embeddings: {
defaultProperty: 'embeddings', // Property used to store generated embeddings
onInsert: {
generate: true, // Generate embeddings at insert-time
properties: ['description'], // properties to use for generating embeddings at insert time
verbose: true,
}
}
})
const db = await create({
schema: {
description: 'string',
embeddings: 'vector[512]' // Orama generates 512-dimensions vectors
},
plugins: [plugin]
})
Example usage at insert time:
await insert(db, {
description: 'Classroom Headphones Bulk 5 Pack, Student On Ear Color Varieties'
})
await insert(db, {
description: 'Kids Wired Headphones for School Students K-12'
})
await insert(db, {
description: 'Kids Headphones Bulk 5-Pack for K-12 School'
})
await insert(db, {
description: 'Bose QuietComfort Bluetooth Headphones'
})
Orama will automatically generate text embeddings and store them into the embeddings
property.
Then, you can use the vector
or hybrid
setting to perform hybrid or vector search at runtime:
await search(db, {
term: 'Headphones for 12th grade students',
mode: 'vector'
})
Orama will generate embeddings at search time and perform vector or hybrid search for you.