2018 年,Zilliz 发起了开源向量数据库项目 Milvus[1] ,很大程度上扩展了数据检索的方式。在此前的文章中[2],大家已经见识过 embedding 及向量数据库的魔力,今天我们将从 embedding 的角度,深入了解它的魅力。
在 Milvus 早期的研发工作中, 我们主要聚焦于提升向量数据库的核心功能。为此,团队投入了大量精力以完善用户体验,同时对 Milvus 的稳定性、性能、可扩展性进行了相应的提升。在此影响下,可以看到 Milvus 的社区用户和贡献者数量呈稳步增长状态,而 GitHub star 数也即将突破 15000。
最近几个月,特别是自 Milvus 2.2 发布以来,社区对完善向量数据库技术生态的呼声非常高,包括可视化、工具、连接器等。其中最受关注的需求是与上游 embedding 模型生态的对接。为此,我们对 Milvus/Zilliz Cloud 与上游 embedding 模型的对接进行了初步的探索。
为适应 embedding 模型与应用场景的多样性,我们提供了两套不同的对接方案,方便用户轻松将各种开源或付费模型接入 Milvus 或 Zilliz Cloud[3]。
方案一
Milvus/Zilliz Cloud 与上游 Embedding 模型生态的 low-level API 对接
这种方式没有引入额外的代码封装,方便用户在自己的应用中进行非常灵活的集成与定制。我们提供了一系列 PoC-ready 的示例和可运行脚本。在这些示例中,我们演示了从原始数据生成 embedding 向量,到向量数据库操作的全流程。
为方便阅读,以下代码示例进行了简化:
from pymilvus import connections, Collection
import openai
...
connections.connect(uri=URI, user=USER, password=PASSWORD, secure=True)
collection = Collection(name=COLLECTION_NAME, schema=schema)
collection.create_index(field_name="embedding", index_params=index_params)
...
for text in document:
embedding = openai.Embedding.create(
input=text,
engine=OPENAI_ENGINE)["data"][0]["embedding"]
collection.insert([embedding])
...复制
更多详细内容请阅读 Zilliz Cloud 官方文档[4]。
方案二
对端到端的流程进行封装
虽然基于 low-level API 的代码高度灵活,但具有较高的使用门槛。同时,这些脚本的复用潜力很高——几乎所有示例都会执行模型推理(model inference)和数据入库、数据检索几个步骤。为了解决这些问题,我们推出了 Towhee[5]。
Towhee 是 Milvus 生态中的一个开源项目,集成了上百种开源模型和 embedding 商业服务 API。只需要几行代码,用户便可使用 Towhee 组装端到端的数据检索流水线。
下面的代码展示了如何通过 Towhee 完成 OpenAI embedding API 与 Milvus/Zilliz Cloud 的对接:
pipeline = (
pipe.input('id', 'text')
.map(
ops.text_embedding.openai(
engine='embedding-engine',
api_key='my-api-key'
)
)
.map(
ops.ann_insert.milvus_client(
host='my-vector-database.url',
port='19530',
collection_name='my-collection'
)
)
.output()
)复制
更多详细内容请参考 Milvus bootcamp[6]中 Towhee 相关案例或 Towhee[7]文档中的完整指南。
Zilliz 团队会一如既往地作为 Milvus 的中坚力量,不断推动项目发展。未来,我们将更加关注与机器学习(machine learning)技术生态的合作。
如果您有生态合作的需要,欢迎联系我们[8]。同时,如果您对共建 Milvus 开源社区感兴趣,也欢迎加入我们!
参考资料
[1] https://milvus.io/
[2] https://zilliz.com/learn/what-is-vector-database
[3] https://zilliz.com/cloud
[4] https://zilliz.com/doc/integrate_with_openai
[5] https://github.com/towhee-io/towhee
[6] https://github.com/milvus-io/bootcamp
[7] https://docs.towhee.io/
[8] https://zilliz.com/contact
Zilliz 是向量数据库系统领域的开拓者和全球领先者,研发面向 AI 生产系统的向量数据库系统。Zilliz 以发掘非结构化数据价值为使命,致力于打造面向 AI 应用的新一代数据库技术,帮助企业便捷地开发 AI 应用。Zilliz 的产品能显著降低管理 AI 数据基础设施的成本,帮助 AI 技术赋能更多的企业、组织和个人。
评论
