@dreamlake/dreamdb

中文文档
0.5.10发布于 2026/11/13MIT OR Apache-2.0TypeScriptESM + CJS零依赖近 30 天下载 4038

DreamDB SDK — 异形( 浏览器+节点) 读取并写入, 从 Rust 核心编译

中文使用文档
文档目录9 节
  1. 阅读
  2. 写入
  3. 锚是纳秒,你应该通过 bigint
  4. 服务器侧作者
  5. 入境点
  6. 执行后端
  7. 有两样东西会咬你
  8. 遵约
  9. 许可证

@dreamlake/梦想b

这栋0.5.10建筑包括只读 SqlSession.open(refName, backend),同步 query 和同步 explain见 SQL 适配器指南。 。 。 . 浏览器SQL文物首开后加载;节点直接包括. 这个 添加不是以前发布的npm版本支持SQL的说法.

软件包范围:npm0.5.10更新共享核心. 一个JavaScript API 由于0.5.8是 Space.readEmbeddingColumn,首次发表于0.5.9: 精确读取 整个嵌入式列 拒绝而不是 返回部分列。 其余是共用核心写作和阅读成本 减少和修正。 从0.5.8到0.5.6到SQL,以及 每份出版物的SDK/构建诊断和延后收缩承诺固定 从0.5.5保留。 现有实体键、几何、结构阵列和 仍然保留了查询本地排序控制。 Rust操作员 API 不是自动 JS 出口. 见 发布注释, (中文(简体) ), 特性指南 财务报告和审定财务报表 SDK 参考。 。 。 .

DreamDB SDK — 在浏览器和服务器上读取和写入, 编译到 Web Assembly from the same Rust core 使用CLI和Python SDK的同一种Rust Centre 的网络大会.

没有单独的 JavaScript 执行协议,这就是 点。 手写端口必须复制 BLAKE3, 犬形 CBOR, 空间键 编码、桶头和索引布局 位数永远 前一个 TypeScript 端口没有,而且它的测试都是绿色的,因为都是 自己的读者阅读自己的作家.

npm install @dreamlake/dreamdb

阅读

import { Space } from '@dreamlake/dreamdb'

const space = await Space.fromUri('https://bucket.s3.amazonaws.com/refs/my-dataset', null)
const hits = await space.queryVector('visual', queryVec, 24, 8)

通过 null 用于后端直接 fetch 对抗URI的基地—— 足够做一个公共桶。 其它的,请提供后端.

写入

import { Writer, PresignedBackend } from '@dreamlake/dreamdb'

const backend = new PresignedBackend({
  readBase: 'https://bucket.s3.amazonaws.com',
  mintPut: async (paths) => (await postJson('/api/dreamdb/sign', { paths })).urls,
  commitRef: async (path, opts, bytes) =>
    await postJson('/api/dreamdb/ref', {
      path,
      bytesBase64: base64(bytes),
      ifMatch: opts.ifMatch,
      ifNoneMatchStar: opts.ifNoneMatchStar,
    }),
})

const w = await Writer.open('https://bucket.s3.amazonaws.com/refs/my-dataset', backend)
await w.appendMany([
  {
    anchor: 1735689600000000000n,          // nanoseconds — pass a bigint
    visual: { kind: 'embedding', algorithm: 'dreamdb.lsh-cosine', vector: vec },
    caption: { kind: 'categorical', value: 'a red car' },
  },
])
const manifest = await w.commit()

证书从不输入浏览器: 您的服务器在短命的预签名 PUT URL,并进行裁判的比较和抽取本身.

锚是纳秒,你应该通过 bigint

A 类 number 只在下文中被接受 Number.MAX_SAFE_INTEGER上; 上层 sDK投出而不是绕来绕去 这不是私奔。 前一个 TypeScript SDK 写入了主锚 微秒 专门保留在 2^53,以及它制作的每张记录在任何符合要求的读者中都读作1970年.

服务器侧作者

Authoring 添加数据集创建,分层,合并,收缩和历史. 没错 只有节点 ——浏览器构建导出一个以一个 解释.

import { Authoring } from '@dreamlake/dreamdb'   // resolves to the Node build

const a = await Authoring.create(
  'my-dataset',
  [
    { name: 'visual', kind: 'embedding', dim: 768, algorithm: 'dreamdb.lsh-cosine' },
    { name: 'caption', kind: 'scalar', valueType: 'categorical', required: false },
  ],
  'https://bucket.s3.amazonaws.com',
  backend,
)
await a.writer().appendMany(samples)
await a.compact(null, 1, 0)

分出是一个有机制的大小边界. create 编辑 嵌入层构建器 SpatialDispatcher,这是一个enum——所以 一个可达到的建筑制造 每个 索引家族的构建代码可达 (IVF, IMI, LSH, Vamana, AdaIVF, 外加密码本训练). 测量: 484 KB gzipped for the 浏览器的构建与包含作者的607 KB相对.

嵌入字段声明 dreamdb.ivf-cosine 或者说 dreamdb.imi-cosine 无法 完全在这里创建:这些指数家庭需要培训数据而不需要 在创建时存在。 用默认创建 dreamdb.lsh-cosine 并附上 被训练的索引为一层,或者用CLI来构建.

入境点

导入决定页:1
@dreamlake/dreamdb 在捆绑器中--target bundler需求 vite-plugin-wasm 下维特
@dreamlake/dreamdb 在节点--target nodejs(b) 无害环境管理和共同司法支助系统的工作 Authoring
@dreamlake/dreamdb/web--target web不需要捆绑插件; await ready() 第一个
<script type="module">
  import ready, { Space } from 'https://esm.sh/@dreamlake/dreamdb/web'
  await ready()                 // fetches and instantiates the wasm
</script>

执行后端

仅 get 需要;a get- 只有后端是只读的 v1 形状和 仍然为阅读工作。 执行 getStream 以保留全部对象 当 DreamDB 必须扫描一个历史超大小的内行音轨时。 写入点 检查 put 正面拒绝,并留言 命名缺失的东西.

interface Backend {
  // `range` is half-open: start is included, end is excluded.
  get(path: string, range?: { start: number; end: number })
    : Promise<Uint8Array | { bytes: Uint8Array; etag?: string; totalLength?: number }>
  getStream?(path: string)
    : Promise<ReadableStream<Uint8Array> | {
        stream: ReadableStream<Uint8Array>
        etag?: string
        totalLength?: number
      }>
  head?(path: string): Promise<{ exists?: boolean; etag?: string; size?: number }>
  put?(path: string, bytes: Uint8Array,
       opts?: { ifMatch?: string; ifNoneMatchStar?: boolean })
    : Promise<{ status: 'created' | 'exists' | 'casFailed'; etag?: string }>
  delete?(path: string): Promise<void>
  list?(prefix: string): Promise<string[]>
}

getStream 块本身必须被绑定;返回一个对象大小 Uint8Array 功能上有效,但没有提供边框模型 简介。 SDK将每个块都散开,并显示没有解码结果,直到 完整回复符合其内容地址。 现有后端无 getStream 继续通过 get 并被故意归类为 未绑定的相容性描述文件 .

有两样东西会咬你

你的桶的 CORS 规则必须包括 ExposeHeaders: ["ETag"]。 。 。 .

通过比较和抽查获得参考进展。 SDK发送 If-Match: <etag> 当它 知道裁判的当前版本 If-None-Match: * 当它没有。 无 ExposeHeaders,浏览器可以读取响应正文而不是ETag头, 因此,SDK从不学习当前版本,倒回只创建 第二届 承诺任何裁判失败,而第一个裁判成功。 这不对称是 是什么使得它很难识别.

{
  "AllowedOrigins": ["https://your.app"],
  "AllowedMethods": ["GET", "HEAD", "PUT"],
  "AllowedHeaders": ["*"],
  "ExposeHeaders": ["ETag", "Content-Range", "Content-Length"]
}

你放在水桶前的任何HTTP层都必须遵守 Range。 。 。 .

DreamDB读取精确矢量由字节偏移. 一个忽略的服务器 Range 财务报告和审定财务报表 返回 200,整个对象使每个范围读取的返回相抵 0,以及 搜索后返回可视结果, 余弦分数为 0. 0 0 - 与真正腐败的指数是分不开的python3 -m http.server 完全这样。 )

遵约

dreamdb-conformance/vectors/ 拥有85个语言不可知JSON向量。 这个 软件包将48张地图运行到表面的纯函数——Canonic CBOR, BLAKE3 相位键、空间键、时间锚和桶、地址回路、, 模式解析、HTTP范围翻译——按名称和 而不是默默地忽略它们.

node test/conformance.mjs

该套件的首次运行在这个包的 HTTP 范围内发现了一个真正的错误 翻译,这大概就是重点.

许可证

麻省理工学院或阿帕奇2.0

出版者身份

作家/授权出版物记录 @dreamlake/dreamdb 实际数字 现有《宣言》中的版本 writer 标签。 使用 writer.setApplication(name, revision) (或 authoring.writer().setApplication(中文(简体) ) 关于以后出版物的可选应用元数据 Space.history() 检查它。 应用程序组件为 1–128 UTF-8 字节,没有控制 字符键。 现有有效载荷不归于其最新出版商; 来源是诊断,而不是执行证明或兼容性检查.

版本与发布记录

@dreamlake/dreamdb 共发布 19 个版本,首次发布于 2026/05/25;过去 12 个月发布了 19 个版本。

版本发布日期距今
0.5.10latest2026/11/13今天
0.5.92026/11/103 天前
0.5.82026/10/131 个月前
0.5.72026/09/181 个月前
0.5.62026/09/171 个月前
0.5.52026/09/151 个月前

关于 @dreamlake/dreamdb 的常见问题

@dreamlake/dreamdb 是什么?

DreamDB SDK — 异形( 浏览器+节点) 读取并写入, 从 Rust 核心编译

如何安装 @dreamlake/dreamdb?

在项目目录运行 npm install @dreamlake/dreamdb,或使用 pnpm add / yarn add / bun add。

@dreamlake/dreamdb 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@dreamlake/dreamdb 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@dreamlake/dreamdb 可以商用吗?

@dreamlake/dreamdb 使用 MIT OR Apache-2.0 许可。可在 MIT、Apache-2.0 中任选其一遵守。选择 MIT 时,宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@dreamlake/dreamdb 的下载量有多少?

根据 npm 官方下载统计,@dreamlake/dreamdb 在 2026/10/13 – 2026/11/11 这 30 天内被下载 4,038 次,日均约 135 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@dreamlake/dreamdb 还在维护吗?

最新版本 0.5.10 发布于 2026/11/13(今天);至今共发布 19 个版本,其中过去 12 个月发布了 19 个;首次发布于 2026/05/25。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。