Skip to content

Migrating from LlamaIndex to vectorstores

vectorstores is a fork of LlamaIndexTS and is designed to be a drop-in replacement for many vector-store-centric use cases.

Remove LlamaIndex and install vectorstores:

Terminal window
npm run remove llamaindex
npm i @vectorstores/core

If you use a specific vector database, also install its provider package (example: Qdrant):

Terminal window
npm i @vectorstores/qdrant

In most cases, this is a direct rename from llamaindex to @vectorstores/core.

Before:

import { Document, Settings, VectorStoreIndex } from "llamaindex";

After:

import { Document, Settings, VectorStoreIndex } from "@vectorstores/core";

If you import integrations (vector stores, readers, etc.), those may come from provider packages under @vectorstores/* instead of @vectorstores/core.

3) Use Settings.embedFunc instead of Settings.embedModel

Section titled “3) Use Settings.embedFunc instead of Settings.embedModel”

If your project configured embeddings via Settings.embedModel, switch to Settings.embedFunc.

Before (LlamaIndex-style embedding model):

import { Settings, OpenAIEmbedding } from "llamaindex";
Settings.embedModel = new OpenAIEmbedding({
model: "text-embedding-3-small",
});

After (vectorstores embedding function):

import { Settings } from "@vectorstores/core";
import OpenAI from "openai";
const openai = new OpenAI();
Settings.embedFunc = async (input: string[]): Promise<number[][]> => {
const { data } = await openai.embeddings.create({
model: "text-embedding-3-small",
input,
});
return data.map((d) => d.embedding);
};