langchain-js-restorable-memory-vectorstore
v0.0.1
Published
a restorable memory vector store for LangChainJS that works in browsers
Maintainers
Readme
langchain-js-restorable-memory-vectorstore
a restorable memory vector store for LangChainJS that works in browsers
Overview
This simple class adds a fromJSON method to the MemoryVectorStore from LangChainJS in order to be able to preserve and restore any vector store contents while still be browser-compatible (as the typical save and load methods of vector stores assume to run within a Node.js environment).
If you replace your MemoryVectorStore with a RestorableMemoryVectorStore, you can now use the original toJSON to serialize your vector store into a JSON object (which may then be persisted using a browser's IndexedDB or similar) and later restore it using fromJSON.
Installation
langchain-js-restorable-memory-vectorstore comes as an ECMAScript module (ESM). You may either install the module using npm (or similar) if you plan to use a bundler:
npm install langchain-js-restorable-memory-vectorstoreOr you may dynamically import it using an import expression
const { RestorableMemoryVectorStore } = await import "https://rozek.github.io/langchain-js-restorable-memory-vectorstore/dist/RestorableMemoryVectorStore.js"Usage in Node.js or Browser Environments
Assuming that you have installed the module, the RestorableMemoryVectorStore can be used as follows
import { RestorableMemoryVectorStore } from 'langchain-js-restorable-memory-vectorstore'
import { OpenAIEmbeddings } from '@langchain/openai'
/**** create a vector store with documents ****/
const Embedder = new OpenAIEmbeddings()
const Store = new RestorableMemoryVectorStore(Embedder)
/**** add some documents ****/
await Store.addDocuments([
{ pageContent: 'Hello world', metadata: { source:'greeting' } },
{ pageContent: 'Bye world', metadata: { source:'farewell' } },
])
/**** serialize the vector store to JSON ****/
const Serialization = JSON.stringify(Store) // invokes "toJSON"
/**** later, restore the vector store ****/
const restoredStore = await RestorableMemoryVectorStore.fromJSON(
Serialization, Embedder
)
/**** the restored store is now ready to be used ****/
const Results = await restoredStore.similaritySearch('hello', 1)
console.log(Results)Usage within Svelte
For Svelte, it is recommended to import the package in a module context:
<script context="module">
import { RestorableMemoryVectorStore } from 'langchain-js-restorable-memory-vectorstore'
import { OpenAIEmbeddings } from '@langchain/openai'
</script>
<script>
const Embedder = new OpenAIEmbeddings()
const Store = new RestorableMemoryVectorStore(Embedder)
/**** add some documents ****/
await Store.addDocuments([
{ pageContent: 'Hello world', metadata: { source:'greeting' } },
{ pageContent: 'Bye world', metadata: { source:'farewell' } },
])
/**** serialize the vector store to JSON ****/
const Serialization = JSON.stringify(Store) // invokes "toJSON"
/**** later, restore the vector store ****/
const restoredStore = await RestorableMemoryVectorStore.fromJSON(
Serialization, Embedder
)
/**** the restored store is now ready to be used ****/
const Results = await restoredStore.similaritySearch('hello', 1)
console.log(Results)
</script>API Reference
RestorableMemoryVectorStore
extends MemoryVectorStore with a fromJSON method
Constructor
new RestorableMemoryVectorStore(Embedder:EmbeddingsInterface)Embedder: An implementation of the LangChainEmbeddingsInterfaceto use for creating embeddings
Static Methods
fromJSON
static async fromJSON(
JSONString:string, Embedder:EmbeddingsInterface
): Promise<RestorableMemoryVectorStore>restores a vector store from a serialized JSON string.
JSONString: the serialized vector store in JSON format.Embedder: an implementation of the LangChainEmbeddingsInterfaceto use for creating embeddings- returns: a new
RestorableMemoryVectorStoreinstance populated with the serialized data
Build Instructions
You may easily build this package yourself.
Just install NPM according to the instructions for your platform and follow these steps:
- either clone this repository using git or download a ZIP archive with its contents to your disk and unpack it there
- open a shell and navigate to the root directory of this repository
- run
npm installin order to install the complete build environment - execute
npm run buildto create a new build
You may also look into the author's build-configuration-study for a general description of his build environment.
Test Instructions
langchain-js-restorable-memory-vectorstore comes with a few tests. Just use
npm run testto run them and get a report on the console.
