Chroma gives you the tools to store embeddings and their metadata.
pip install chromadb
import * as Langtrace from "@langtrase/typescript-sdk"; import { ChromaClient, OpenAIEmbeddingFunction } from "chromadb"; Langtrace.init({ write_spans_to_console: true }); export async function run(): Promise<void> { await Langtrace.withLangTraceRootSpan(async () => { const client = new ChromaClient(); const embedder = new OpenAIEmbeddingFunction({ openai_api_key: process.env.OPENAI_API_KEY as string, }); console.info("Creating collection"); const collection = await client.getOrCreateCollection({ name: "test_collection", embeddingFunction: embedder, }); console.info("Adding documents"); await collection.add({ ids: ["id1", "id2"], metadatas: [{ source: "my_source" }, { source: "my_source" }], documents: ["This is a document", "This is another document"], }); console.info("Querying documents"); const results = await collection.query({ nResults: 2, queryTexts: ["This is a query document"], }); console.info(results); }); } void run().then(() => console.log("done"));