查看原文
其他

DocArray x Elasticserach | 更迅速的向量检索方案

Emily Jina AI 2023-03-21

本系列的技术分享旨在探索能和 DocArray 配套使用的向量搜索引擎,把 Weaviate、Qdrant、Elasticsearch 作为 DocArray 的存储后端。由 DocArray 封装数据,和上述的搜索擎一起构建出向量搜索的解决方案。


DocArray & Elasticsearch 大起底


 DocArray: 为机器学习而生的数据结构 
DocArray 是由 Jina AI 开发的,用来存储非结构化数据的数据结构工具包。它是一个小而精的入口,能够友好地带你走进多模态/跨模态的世界。利用 DocArray,开发者可以借助 Pythonic API,轻松有效地处理、搜索、推荐、存储和传输数据。

 Elasticsearch:开源的搜索引擎 
Elasticsearch 支持高并发、高可用、易扩展的分布式搜索,通过简单易用的 RESTful API,无需深入了解背后复杂的原理,就可实现基本的全文检索功能。因此许多个人开发者和企业都选择用 ES 来处理数据源划分、文档召回、标签管理等任务。

💥 DocArray + Elasticsearch = ?

那么 DocArray 和 Elasticsearch,能碰撞出怎样的火花呢?
使用 Elasticsearch 作为 DocArray 的文档存储,能更迅速地完成向量检索!

入门级教程演示


学习本教程,你将了解如何创建一个简单的文本搜索系统1. 启动 Elasticsearch 服务,新建 docker-compose.yml 文件
version: "3.3"services: elastic: image: docker.elastic.co/elasticsearch/elasticsearch:8.1.0 environment: - xpack.security.enabled=false - discovery.type=single-node ports: - "9200:9200" networks: - elastic
networks: elastic: name: elastic

接着

docker-compose up


2. 创建一个 DocumentArray 数组实例

from docarray import DocumentArray
da = DocumentArray( storage='elasticsearch', config={'n_dim': 128})


3. 索引 Documents

da.extend(    [        Document(text="Persist Documents with Weaviate."),        Document(text="And enjoy fast nearest neighbor search."),        Document(text="All while using DocArray API."),    ])


4. 用 BERT 模型生成 embeddings

from transformers import AutoModel, AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased")model = AutoModel.from_pretrained("bert-base-uncased")
def collate_fn(da):    return tokenizer(da.texts, return_tensors="pt", truncation=True, padding=True)
da.embed(model, collate_fn=collate_fn)


5. 查询索引 Documents 并得到结果

results = da.find(    DocumentArray([Document(text="How to persist Documents")]).embed(        model, collate_fn=collate_fn    ),    limit=1,)print(results[0].text)


Output:使用 Elasticsearch 保存文档.


Jina AI 神器打造多模态搜索系统

随着数据量的爆发式增长、并发请求增加、使用场景的不断变化,多模态、跨模态技术越来越受到各方关注,复杂的搜索系统需要更多的组件一起来完成,而 Jina AI 所推出的一系列产品正是为了解决这一难题。

Jina AI 产品大起底:都有啥?能做啥?

本文相关链接:
  • DocArray Documentation:
https://docarray.jina.ai/advanced/document-store/elasticsearch/
  • Jina's Learning Bootcamp:
https://learn.jina.ai/
想要更详细地了解 DocArray ?关注我们,下一期我们通过详细介绍 DocArray,带你走进多模态、跨模态的世界!
点击阅读原文,查看 Jina 相关文档。

更多精彩内容(点击图片阅读)


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存