@orama/plugin-embeddings
v3.1.16
Published
Orama plugin for generating embeddings locally
Downloads
415
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-embeddingsImportant 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-webglIf you're using Orama in Node.js, we recommend using @tensorflow/tfjs-node:
npm i @tensorflow/tfjs-nodeUsage
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.
