本地文件存储
兼容性
仅适用于 Node.js。
这将帮助你快速开始使用 LocalFileStore。如需了解所有 LocalFileStore 功能和配置的详细文档,请前往 API 参考文档。
概述
LocalFileStore 是对 fs 模块的封装,用于以键值对的形式存储数据。
每对键值都有自己的文件,嵌套在传递给 .fromPath 方法的目录中。
文件名是键,文件内容则是键的值。
info
传递给 .fromPath 的路径必须是一个目录,而不是一个文件。
danger
此文件存储可以在提供的目录及其子文件夹中修改任何文本文件。 请确保在初始化存储时指定的路径中没有其他文件。
集成详情
| 类 | 包 | 本地支持 | PY 支持 | 包下载量 | 最新包 |
|---|---|---|---|---|---|
| LocalFileStore | langchain | ✅ | ✅ | ![]() | ![]() |
准备工作
安装
LangChain 的 LocalFileStore 集成位于 langchain 包中:
:::提示 请参阅安装集成包的一般说明部分。 :::
- npm
- yarn
- pnpm
npm i langchain @langchain/core
yarn add langchain @langchain/core
pnpm add langchain @langchain/core
实例化
现在我们可以实例化我们的字节存储器:
import { LocalFileStore } from "langchain/storage/file_system";
const kvStore = await LocalFileStore.fromPath("./messages");
定义一个编码器和解码器,用于将数据转换为 Uint8Array 并还原:
const encoder = new TextEncoder();
const decoder = new TextDecoder();
用法
你可以使用 mset 方法将数据设置在键下,如下所示:
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)));
[ 'value1', 'value2' ]
并且你可以使用 mdelete 方法删除数据:
await kvStore.mdelete(["key1", "key2"]);
await kvStore.mget(["key1", "key2"]);
[ undefined, undefined ]
产出值
如果你想获取所有的键,可以调用 yieldKeys
方法。此外,你还可以选择性地传入一个键的前缀,以只获取匹配该前缀的键。
import { LocalFileStore } from "langchain/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 参考
有关 LocalFileStore 所有功能和配置的详细文档,请访问 API 参考

