FirstBatch SDK provides an interface for integrating vector databases and powering personalized AI experiences in your application.
For more information, see the User Embedding Guide or the SDK Documentation.
Install the package from NPM:
npm install firstbatch # npm
yarn add firstbatch # yarn
pnpm add firstbatch # pnpmFirstBatch SDK is used together with an existing vector store, where you register the vector store to our SDK and then create personalization sessions from it.
First, initialize a Vector Database of your choice; our SDK supports:
Let us go over an example using Pinecone.
import {Pinecone as PineconeClient} from '@pinecone-database/pinecone';
import {Pinecone, FirstBatch, Signals} from 'firstbatch';
// create Pinecone client
const pinecone = new PineconeClient({apiKey: 'pinecone-api-key', environment: 'pinecone-env'});
await pinecone.describeIndex('index-name');
const index = pinecone.index('index-name');Then, create a Vector Store with this index and pass it in the FirstBatch SDK.
// create SDK
const personalized = await FirstBatch.new('firstbatch-api-key');
// add vector store to SDK
const vectorStore = new Pinecone(index);
const vdbid = 'pinecone-example-db';
await personalized.addVectorStore(vdbid, vectorStore);Now, we can create a session with an algorithm that suits our use-case, and provide personalization to our users.
// create a session
const session = personalized.session('ALGORITHM_NAME', vdbid);
// make recommendations
const [ids, batch] = personalized.batch(session);Suppose that the user has liked the first content from the batch above. We can provide personalization over this as follows:
// the user liked the first content of the previous batch
const userPick = ids[0];
// signal this to the session
personalized.addSignal(sessionId, Signals.LIKE, userPick);Here, LIKE signal is one of the many preset signals provided by our SDK. You can also define your own signals:
import type {Signal} from 'firstbatch';
const mySignal: Signal = {label: 'SOME_USER_ACTION', weight: 0.5};Install the dependencies:
bun installThen, build everything with:
bun run build
bun b # alternativeNote
If you get an error like "expected content key ... to exist" simply delete the .parcel-cache folder and build again.
Run all tests via:
bun run test
bun t # alternativeBun will look for .env.test during the tests.
Check formatting:
bun formatLint everything:
bun lint