把 seekdb 塞进 iOS App:让混合检索嵌入手机

Hold Infinity in the palm of your hand.

纳无穷于掌中。

------ 威廉·布莱克,《天真的预言》1

seekdb2 终于能在 iOS 上跑了!

完整的 seekdb 内核引擎被打包成了 ​ SeekDB.framework ,几行 Swift 代码就能打开一个数据库。全文检索、向量检索、混合搜索、FORK TABLE,seekdb 的全部功能在 iOS App 里都能用啦~

欢迎大家关注 OceanBase 社区公众号"老纪的技术唠嗑局"。在这里,我们会持续为大家更新与 #AI 和 #Data 相关的技术内容~

seekdb 正式支持 iOS 生态

iOS 生态大、用户多,开发者活跃。 2026 年 1 月,Apple CEO Tim Cook 在财报会上说,全球正在使用的 iPhone、Mac 和其他 Apple 设备已经有 25 亿台。现在 seekdb 为内嵌模式提供了原生的 Swift 支持:

  • 在 Xcode 里添加 `seekdb-swift`((github.com/oceanbase/s... "seekdb-swift")) 这个 Swift package 就能用,SwiftPM 会自动下载引擎并校验 checksum,不用自己编译和集成 C++ 引擎。
  • package 不依赖第三方 Swift 库,SQL 用任意一个支持 MySQL 协议的 client 执行,比如纯 Swift 的 MySQLNIO。

seekdb 在 iOS 生态中的优势

  1. 和主流数据库比 :MySQL 从 8.0 起去掉了内嵌版本 libmysqld,PostgreSQL 一直是 client/server 结构、没有官方的内嵌版本,它们都不能直接放进 iOS App;iOS 上常用的内嵌数据库 SQLite 不兼容 MySQL,向量检索也要另加扩展。seekdb 兼容 MySQL、又能内嵌进 iOS App 并自带向量检索。
  2. iOS App 需要的数据库功能,seekdb 都有。 在 AI 时代,移动端 App 不只要存数据、查数据,很多还要做 AI 功能,比如在本地按语义检索聊天记录和笔记、用一句话描述从相册里找出照片,或者给 App 里的 AI 助手接上本地知识库,让它回答问题时能查用户自己的数据。seekdb 把这些需要的能力都放进了同一个数据库内核:关系数据管理、向量检索、全文检索、半结构化与空间数据处理、数据库内 AI 调用,以及面向 Agent 的 Fork/Diff/Merge 数据工作流。它兼容 MySQL,支持 ACID,一条 SQL 就能同时做向量检索、全文检索和条件过滤。
  3. 数据库内嵌在 App 里。 存数据和检索都不用经过服务端,应用的复杂度更低。聊天记录、笔记、embedding 都存在本地,检索也在本地做,数据不离开设备,安全性更好。

App 代码调用 seekdb_open 后,framework 会启动引擎线程。

之后 App 只通过 Unix socket 用 MySQL client 访问它,数据会写在 App sandbox 的目录里。

How to use ?

引入一个 Swift package,调一次 ​ SeekDB.open,就能拿到连接用的 socket。

在 Xcode 里添加:

  1. 打开 App 的工程,选菜单 File > Add Package Dependencies...。
  2. 在弹出窗口右上角的搜索框里粘贴 https://github.com/oceanbase/seekdb-swift,等列表里出现 seekdb-swift。
  3. 在下一步的列表里,把 SeekDB 这个 product 的 Add to Target 选成你的 App target,再点 Add Package。

如果用 Package.swift 管理依赖,就在里面写:

plain 复制代码
.package(url: "https://github.com/oceanbase/seekdb-swift.git", from: "0.1.0")// target 的 dependencies 里:.product(name: "SeekDB", package: "seekdb-swift")

SwiftPM 解析依赖时会从 GitHub release 下载引擎,打开数据库只要几行:

plain 复制代码
import SeekDBlet db = try SeekDB.open("/absolute/path/to/database")let options = try db.connectionOptions()try db.close()

SQL 可以通过任意的 MySQL client 库来执行。我们的 seekdb-swift 仓库提供了一个用 Swift 开发的原生 iOS App demo,它用 seekdb 实现了一个 SeekDB Shell3:

更多信息,欢迎感兴趣的朋友们访问和阅读:seekdb 官方文档4。

参考资料

1

《天真的预言》: poets.org/poem/auguri...

2

seekdb: github.com/oceanbase/s...

3

SeekDB Shell: github.com/oceanbase/s...

4

seekdb 官方文档: docs.seekdb.ai/

相关内容推荐

了解更多

添加社区小助手,加入微信交流群~

相关推荐
ClouGence1 小时前
开源数据库管理工具 CloudDM 新版本发布,支持 OpenSearch、IoTDB 数据源
数据库·开源
徐小黑ACG1 小时前
Redis-基础
数据库·redis·缓存
火山引擎开发者社区1 小时前
案例实践 | 让 Agent 读懂业务口径:ContextSearch 在广告数据查询中的实践
数据库
10年前端老司机3 小时前
Milvus 8种检索能力实践
数据库·python·agent
Decay__3 小时前
14_MySQL 高可用与容灾架构 —— MGR / InnoDB Cluster / Keepalived+VIP / 双主 / 读写分离 / 两地三中心
运维·数据库·sql·mysql·架构
freejackman3 小时前
【实战三】撕开脱敏盲区:深度解析 CASE WHEN 与窗口函数血缘
大数据·数据库·sql
codigger5 小时前
线上数据库连接池打满:从应急止损到架构根治的完整方案
数据库·sql·程序员
倔强的石头_6 小时前
集中式与分布式怎么选?我把手头11套系统重新过了一遍秤
数据库
挖掘狂人6 小时前
线上数据库连接池打满:从应急止损到架构根治的完整方案
数据库·sql·程序员