夜雨聆风学习资料网

ARTICLE · 1300212

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

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

Hold Infinity in the palm of your hand.

纳无穷于掌中。

—— 威廉·布莱克,《天真的预言》[1]

seekdb[2] 终于能在 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]((https://github.com/oceanbase/seekdb-swift "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 管理依赖,就在里面写:

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

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

import SeekDBlet db = trySeekDB.open("/absolute/path/to/database")let options = try db.connectionOptions()try db.close()

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

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

参考资料
[1] 

《天真的预言》: https://poets.org/poem/auguries-innocence

[2] 

seekdb: https://github.com/oceanbase/seekdb

[3] 

SeekDB Shell: https://github.com/oceanbase/seekdb-swift/tree/main/example

[4] 

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

相关内容推荐

了解更多

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

回首页,搜索你想要的文档

在首页搜索框输入关键词,快速定位资料

文库首页搜索指引 立即搜索

相关学习资料