查看原文
其他

DocArray x Weaviate | 打造高效的云端数据存储

Emily Jina AI 2023-03-21

Weaviate 作为 DocArray 中的 Document Store,可以使得 Document 在云端的处理和检索更加迅速。


DocArray & Weaviate 大起底


 DocArray: Data structure for unstructured data 


DocArray 是一种可扩展数据结构,完美适配深度学习任务,主要用于嵌套及非结构化数据的传输,支持的数据类型包括文本、图像、音频、视频、3D mesh 等。


与其他数据结构相比:


✅ 表示完全支持,✔ 表示部分支持,❌ 表示不支持


利用 DocArray,深度学习工程师可以借助 Pythonic API,有效地处理、嵌入、搜索、推荐、存储和传输数据。


 Weaviate:开源的向量搜索引擎 


Weaviate 是一个开源的向量搜索引擎,可以同时存储对象和向量,将向量搜索和结构化过滤 (structured filtering) 相结合,从而创建一个稳健、故障容许 (fault-tolerant) 的搜索引擎。


同时,Weaviate 还提供开箱即用的云存储基础设施--Weaviate 集群服务 (Weaviate Cluster Service)。


Jina + Weaviate=?


💥 Jina + Weaviate,能碰撞出怎样的火花?


通过 Weaviate 创建云存储实例的方法包括两种:


* 本地启动 Weaviate 实例

* 创建 Weaviate 云服务实例


 1、本地启动 Weaviate 实例 


想要在后端使用 Weaviate 存储服务,需要启动一个全新的 Weaviate 实例。可以通过创建  docker-compose.yml  实现,具体如下:


---version: '3.4'services:  weaviate:    command:      - --host      - 0.0.0.0      - --port      - '8080'      - --scheme      - http    image: semitechnologies/weaviate:1.11.0    ports:      - "8080:8080"    restart: on-failure:0    environment:      QUERY_DEFAULTS_LIMIT: 25      AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED: 'true'      PERSISTENCE_DATA_PATH: '/var/lib/weaviate'      DEFAULT_VECTORIZER_MODULE: 'none'      ENABLE_MODULES: ''      CLUSTER_HOSTNAME: 'node1'...


创建成功后,就可以运行  docker compose  启动实例。


 2、创建 Weaviate 云服务实例 


你可以借助 Weaviate 云服务 (Weaviate Cloud Service) 免费创建 Weaviate 实例。


注册并创建新实例请访问:

https://console.semi.technology/


观看以下视频,手把手教你创建 Weaviate 实例:



入门级教程演示


学习本教程,你将了解:


* 创建 Weaviate 本地实例,存储 Document

* 创建一个简单的文本搜索系统


1、启动 Weaviate 服务,并创建一个  DocumentArray 数组实例

from docarray import DocumentArray
da = DocumentArray(    storage="weaviate", config={"name": "Persisted", "host": "localhost", "port": 8080})


2、索引 Documents

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


3、用 BERT 模型生成向量

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)


4、查询索引 Documents 并得到结果

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


Output:Persist Documents with Weaviate.


两大神器打造H&M以图搜图系统


整合 DocArray 和 Weaviate,可以更轻松地搭建一个以图搜图的系统。


GitHub Repo 详见:

https://github.com/laura-ham/HM-Fashion-image-neural-search


DocArray 与向量数据库  Qdrant,又能擦出怎样的火花?关注我们,答案下期揭晓!



相关链接:


GitHub Repo 详见:

https://github.com/laura-ham/HM-Fashion-image-neural-search


DocArray Documentation:

https://docarray.jina.ai/advanced/document-store/weaviate/


Jina's Learning Bootcamp:

https://learn.jina.ai/


Weaviate's Documentation:

https://weaviate.io/developers/weaviate/current/ 


点击阅读原文,查看 Jina 相关文档。





下一代开源神经搜索引擎


在 GitHub 找到我们

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


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

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