@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 字节,没有控制
字符键。 现有有效载荷不归于其最新出版商;
来源是诊断,而不是执行证明或兼容性检查.