其他
DocArray x Elasticserach | 更迅速的向量检索方案
本系列的技术分享旨在探索能和 DocArray 配套使用的向量搜索引擎,把 Weaviate、Qdrant、Elasticsearch 作为 DocArray 的存储后端。由 DocArray 封装数据,和上述的搜索引擎一起构建出向量搜索的解决方案。
DocArray & Elasticsearch 大起底
DocArray: 为机器学习而生的数据结构
DocArray 是由 Jina AI 开发的,用来存储非结构化数据的数据结构工具包。它是一个小而精的入口,能够友好地带你走进多模态/跨模态的世界。利用 DocArray,开发者可以借助 Pythonic API,轻松有效地处理、搜索、推荐、存储和传输数据。
Elasticsearch 支持高并发、高可用、易扩展的分布式搜索,通过简单易用的 RESTful API,无需深入了解背后复杂的原理,就可实现基本的全文检索功能。因此许多个人开发者和企业都选择用 ES 来处理数据源划分、文档召回、标签管理等任务。
💥 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:
Jina's Learning Bootcamp:
想要更详细地了解 DocArray ?关注我们,下一期我们通过详细介绍 DocArray,带你走进多模态、跨模态的世界!
点击阅读原文,查看 Jina 相关文档。
更多精彩内容(点击图片阅读)