HDFS基础编程常用命令
2026/5/8 5:51:33
SeekDB是一款由OceanBase公司专为AI时代设计和开源的AI原生数据库,它整合了向量搜索、全文检索和结构化查询能力,能够在一个查询内实现多模态数据的混合搜索,非常适合用于RAG系统、智能体记忆等AI应用。
下面的表格整理了它的核心特性和关键信息:
| 特性维度 | 具体说明 |
|---|---|
| 核心定位 | AI-Native 搜索数据库,致力于成为大模型与私有数据融合的“实时入口层”。 |
| 核心能力 | 支持向量、全文、标量(结构化)、JSON、空间地理数据的统一存储与混合检索。 |
| 突出优势 | 一体化设计:替代传统多数据库拼接架构,避免数据同步延迟与不一致问题。 |
| 部署与资源 | 极致轻量,最低仅需1核CPU、2GB内存;支持pip install一键安装(嵌入式模式)和Docker部署。 |
| 兼容性与生态 | 完全兼容MySQL协议及客户端工具;原生支持Hugging Face、LangChain等30+主流AI框架。 |
| 开源协议 | 采用Apache 2.0协议开源,允许自由使用、修改和商业集成。 |
SeekDB通过其Python SDKpyseekdb提供了简洁的API,其核心操作对象是Collection(集合),类似于一个可以自由存储文档(含向量、文本、元数据)的容器。
首先需要安装SeekDB。最简单的方式是使用其嵌入式模式,无需启动独立服务。
pipinstallpyseekdb连接数据库并创建一个集合:
importpyseekdb# 连接到嵌入式数据库(默认路径)client=pyseekdb.Client()# 创建一个集合,指定向量维度和距离度量方式collection=client.create_collection(name="my_knowledge_base",# 集合名dimension=384,# 向量维度,需与嵌入模型匹配metric="cosine"# 距离度量,可选 cosine/l2/inner_product)SeekDB采用Schema-free设计,无需预定义表结构即可直接插入数据。add方法会自动将文档文本转换为向量。
# 准备数据documents=["SeekDB是一款优秀的AI原生数据库。","它支持向量、全文和结构化数据的混合搜索。","该产品由OceanBase公司开源。"]metadatas=[{"category":"introduction","source":"web"},{"category":"feature","source":"doc"},{"category":"background","source":"news"}]ids=["doc_1","doc_2","doc_3"]# 为每条数据指定唯一ID# 插入数据(自动生成向量)collection.add(ids=ids,documents=documents,metadatas=metadatas)注意:插入时建议提供唯一的ids。如果不提供,系统会自动生成。
这是SeekDB的核心能力,你可以进行多种模式的查询:
# 1. 语义(向量)搜索:查找与查询语句语义相似的文档results=collection.query(query_texts=["什么是AI原生数据库?"],# 查询文本n_results=3# 返回结果数量)# 2. 元数据过滤:按附加属性进行筛选results=collection.query(query_texts=["搜索"],where={"category":{"$eq":"feature"}},# 过滤条件n_results=2)# 3. 混合搜索:结合语义搜索与元数据过滤,是SeekDB的杀手锏results=collection.query(query_texts=["搜索"],where={"category":{"$eq":"feature"}},n_results=2)更强大的原生混合搜索(同时在语义、全文、标量中进行)可以通过SQL接口完成,但目前在pyseekdb的API中可能被封装或需调用特定方法。
你可以更新集合中已有ID对应的文档或元数据。
# 更新文档内容及元数据collection.update(ids=["doc_1"],documents=["SeekDB是一款强大且易用的AI原生数据库。"],# 新文档metadatas=[{"category":"introduction","source":"official","verified":True}]# 新元数据)根据ID或条件删除数据。
# 1. 按ID删除collection.delete(ids=["doc_3"])# 2. 按条件删除(例如删除来源为‘web’的所有数据)collection.delete(where={"source":{"$eq":"web"}})在实际项目中,以下几点可以帮助你更好地使用SeekDB:
cosine、l2、inner_product)对性能至关重要。category、user_rating),可以通过SQL语句创建索引以提升查询速度。VectorStore使用,无需编写复杂的中间层代码。