Compatibility: Only available on Node.js.
This will help you get started with LocalFileStore. For detailed documentation of all LocalFileStore features and configurations head to the API reference.
Overview
The LocalFileStore is a wrapper around the fs module for storing data as key-value pairs.
Each key value pair has its own file nested inside the directory passed to the .fromPath method.
The file name is the key and inside contains the value of the key.
The path passed to the .fromPath must be a directory, not a file.
This file store can alter any text file in the provided directory and any subfolders.Make sure that the path you specify when initializing the store is free of other files.
Integration details
| Class | Package | Local | PY support | Downloads | Version |
| LocalFileStore | langchain | ✅ | ✅ |  |  |
Setup
Installation
The LangChain LocalFileStore integration lives in the langchain package:
npm install langchain @langchain/core
Instantiation
Now we can instantiate our byte store:
import { LocalFileStore } from "@langchain/classic/storage/file_system"
const kvStore = await LocalFileStore.fromPath("./messages");
Define an encoder and decoder for converting the data to Uint8Array and back:
const encoder = new TextEncoder();
const decoder = new TextDecoder();
Usage
You can set data under keys like this using the mset method:
await kvStore.mset(
[
["key1", encoder.encode("value1")],
["key2", encoder.encode("value2")],
]
)
const results = await kvStore.mget(
[
"key1",
"key2",
]
)
console.log(results.map((v) => decoder.decode(v)));
And you can delete data using the mdelete method:
await kvStore.mdelete(
[
"key1",
"key2",
]
)
await kvStore.mget(
[
"key1",
"key2",
]
)
Yielding values
If you want to get back all the keys you can call the yieldKeys method. Optionally, you can pass a key prefix to only get back keys which match that prefix.
import { LocalFileStore } from "@langchain/classic/storage/file_system"
const kvStoreForYield = await LocalFileStore.fromPath("./messages");
const encoderForYield = new TextEncoder();
// Add some data to the store
await kvStoreForYield.mset(
[
["message:id:key1", encoderForYield.encode("value1")],
["message:id:key2", encoderForYield.encode("value2")],
]
)
const yieldedKeys = [];
for await (const key of kvStoreForYield.yieldKeys("message:id:")) {
yieldedKeys.push(key);
}
console.log(yieldedKeys);
[ 'message:id:key1', 'message:id:key2' ]
import fs from "fs";
// Cleanup
await fs.promises.rm("./messages", { recursive: true, force: true });
API reference
For detailed documentation of all LocalFileStore features and configurations, head to the API reference