项目介绍:Marqo
Marqo是什么?
Marqo不仅仅是一个向量数据库,它是一个为文本和图像设计的端到端向量搜索引擎。通过一个简化的API,Marqo能够开箱即用地处理向量的生成、存储和检索,开发者无需自带嵌入模型。
为什么选择Marqo?
向量相似性不足以满足向量搜索的需求。一个完整的向量搜索系统不仅需要一个数据库,还需要机器学习模型的部署和管理,对输入的预处理和转换,以及无需重新训练模型即可修改搜索行为的能力。Marqo集成了这些功能,帮助开发者轻松地将向量搜索嵌入到他们的应用中。
嵌入生成与向量搜索结合的必要性
传统的向量数据库是专注于向量相似性的单一组件,需要另外生产向量、管理机器学习模型以及对输入的协调和处理。Marqo通过提供“文档进-文档出”的方式简化了这个过程,处理文本和图像的预处理、内容嵌入、元数据存储以及推理和存储的部署。
Marqo的核心功能
-
先进的嵌入技术:Marqo使用了最先进的机器学习模型,可以在CPU和GPU上运行。
-
高效性能:嵌入保存在内存中的HNSW索引中,提供了超快的搜索速度,并支持海量文档索引的横向扩展。
-
文档进-文档出模式:自动处理向量生成、存储和检索,支持复杂的语义搜索查询以及搜索结果的过滤。
-
完整的云管理服务:提供低延迟的Marqo部署、高可用性、7x24小时支持并实现了访问控制。
快速上手
要开始使用Marqo,首先需要Docker,然后通过以下步骤即可快速进行向量搜索:
- 下载并运行Marqo的Docker镜像。
- 安装Marqo客户端。
- 创建索引并添加文档。
- 使用简单的Python代码进行搜索操作。
import marqo
mq = marqo.Client(url='http://localhost:8882')
mq.create_index("my-first-index", model="hf/e5-base-v2")
mq.index("my-first-index").add_documents([
{"Title": "The Travels of Marco Polo", "Description": "A 13th-century travelogue describing Polo's travels"},
{"Title": "Extravehicular Mobility Unit (EMU)", "Description": "The EMU is a spacesuit that provides environmental protection, mobility, life support, and communications for astronauts", "_id": "article_591"}
], tensor_fields=["Description"])
results = mq.index("my-first-index").search(q="What is the best outfit to wear on the moon?")
多模式与跨模式搜索
Marqo支持使用CLIP模型进行多模式搜索,能够组合文本与图像,从而实现更复杂的搜索体验。例如,使用图片链接进行搜索,非常适用于需要图文配对检索的应用场景。
与其他工具的集成
Marqo与多种AI和数据处理框架进行了集成,比如Haystack、Griptape和Langchain等,通过这些集成,可以在各种NLP应用中使用Marqo作为文档存储进行搜索增强。
结语
Marqo正致力于为更广泛的开发者社区提供可访问的张量搜索解决方案。无论是构建新的应用还是集成现有系统,Marqo都为开发者提供了强大的工具和支持。更多信息请访问Marqo官网或文档页面。