The embeddings are a simple way to create a long term memory and simplify the use of extracted information.
Overview
- Embeddings are a data format using vectors to store information in a way that can be searched based on its semantic meaning
- Calling the
Embeddings()
class creates a vector index you can add data to - Large inputs are automatically split up in chunks of about 512 tokens and added to the index
- When calling a LLM with the embeddings index ID, Polyfire automatically queries the most similar data in your index and inject it in the LLM call as context
Simple example
// In React
const { data: { Embeddings } } = usePolyfire();
// In other environments:
const { data: { Embeddings } } = polyfire;
const index = Embeddings();
indexId = index.getId()
embeddings.add("The secret word is: banana42");
const secret = await polyfire.generate("What's the secret?", { embeddingsId: indexId });
console.log(secret); // Outputs: The secret word is "banana42".
Embeddings() class
Class prototype
type EmbeddingsOptions = {
id?: string, // This cannot be set at the same time as public since it gets an existing embedding index instead of creating a new one.
public?: boolean, // Whether the content of your new embedding index should be accessible accross your project or restricted to a single user. Default is false.
} | string;
function Embeddings(options?: EmbeddingsOptions): embeddings;
async function embeddings.getId(): Promise<string>;
async function embeddings.add(input: string): Promise<void>;
async function embeddings.search(input: string): Promise<{ content: string, similarity: number }[]>
New index
To create a new index, import the Embedding
class from the data
Polyfire module and instantiate it
import { data } = polyfireClient;
const { Embeddings } = data;
const index = Embeddings()
Index ID
To get the ID of an embeddings index, call the getId()
function
const id = await index.getId();
console.log(id); // Outputs the ID of the embedding index
Retrieve an index
Pass an embeddings ID in options to retrieve previously created indexes
const existingIndex = Embeddings("yourEmbeddingsIndexId");
// or
const existingIndex = Embeddings({ id: "yourEmbeddingsIndexId" });
Add data
You can add new data to your embeddings using the add
method
index.add("My house is yellow");
Search index
The search()
function looks for semantically similar data in an embeddings index
const [{ content }] = await index.search("My house is pink");
console.log(content); // My house is yellow
getAllEmbeddings()
This function returns all the embedding indexes that have been created.