头图
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 实例。

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

观看本视频,手把手教你创建 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 详见:Here

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

相关链接:

GitHub Repo

DocArray Documentation

Jina's Learning Bootcamp

Weaviate's Documentation


JinaAI
21 声望12 粉丝

Jina AI 的愿景是铺设通往多模态 AI 的未来之路,我们是您通往多模态人工智能的最佳通道!