SuperAPI AI 工具集

lancedb

智能体与模型

查看项目

更新于 10-15 23:48

技能介绍

用途:编写、审查、调试或文档化 LanceDB 管道,产出可在本地表与远程表之间移植、且符合所选 SDK 习惯的代码。

两种表模式:本地表为嵌入式开源、进程内执行,从本地路径或对象存储 URI 打开数据;远程表经由 db://... URI 打开,数据可能非常大、常由对象存储支撑并经远程服务查询。不要假设远程表存在本地表的辅助方法。任务涉及 jobs 时一律走远程路径,需先处理远程服务器连接。

主要流程:先确认 SDK(Python、TypeScript 或两者)与表模式;若涉及列元数据、分支操作、远程连接或 job REST,先读对应参考文档(references/column_metadata.md、branch_ops.md、remote_connect.md、remote_jobs.md)。方法名与签名以官方 Python/TypeScript 文档与源码为准,不要凭记忆。

关键用法:Python 推荐 Pydantic 模型并在写入前校验记录,Arrow 原生或流式场景可用 PyArrow schema;读取优先用 search() 或 query() 并显式 select() 与 limit()。有界结果收集正常,如 Python 的 table.search(...).select([...]).limit(10).to_pandas()、TypeScript 的 await table.search(...).select([...]).limit(10).toArray()。

限制:远程或可移植代码避免表级全量物化,如 table.to_pandas()、to_arrow()、to_polars(),以及无 limit() 的 await table.query().toArray()。嵌入式 OSS 摄取成功后调用 table.optimize(),Enterprise/Cloud 不要调用(远程维护自动)。批量或数千行写入,禁止逐行循环写。本地约 10 万向量以上再建向量索引,过滤列与 merge/upsert 键建标量索引。

Enterprise 写限制:绝不在缓存 TTL(默认 300 秒)内复用刚 drop/overwrite 的同名表,也不要对已有表用 mode="overwrite";应写入全新表名,创建前 list_tables() 检查,若要落到旧名需先删除、等待 TTL 后再 rename_table。

脚本:审查现有代码时可运行 python skills/lancedb/scripts/check_materialization.py path/to/file_or_dir,其结果仅作审查提示,不构成确证。