向量数据库weaviate

1.简介

  • Weaviate 是一种开源的类型向量搜索引擎数据库。
  • Weaviate 允许您以类属性的方式存储 JSON 文档,同时将机器学习向量附加到这些文档上,以在向量空间中表示它们。
  • Weaviate 可以独立使用(即带上您的向量),也可以与各种模块一起使用,这些模块可以为您进行向量化并扩展核心功能。
  • Weaviate 具有 GraphQL-API,以便轻松访问您的数据。
    Weaviate 详细介绍:
    Weaviate 是一种低延迟的向量搜索引擎,支持不同的媒体类型(文本、图像等)。它提供语义搜索、问答提取、分类、可定制模型(PyTorch/TensorFlow/Keras)等功能。Weaviate 从头开始使用 Go 构建,可以存储对象和向量,允许将向量搜索与结构化过滤器和云原生数据库的容错性结合起来。通过 GraphQL、REST 和各种客户端编程语言都可以访问它。
    官网地址:https://weaviate.io/

2.各种向量库对比

向量数据库对比:Weaviate、Milvus和Qdrant

3.安装weaviate

1.使用Xshell连接到Ubuntu服务器
2.下载Weaviate Docker镜像

注意:从Docker Hub下载Weaviate的最新镜像,如果拉不下来需要替换镜像。

docker pull semitechnologies/weaviate:latest
3.运行Weaviate容器
docker run -d --name weaviate \
    --restart=always \
    -p 8080:8080 \
    -p 50051:50051 \
    -e "AUTHENTICATION_APIKEY_ENABLED=true" \
    -e "AUTHENTICATION_APIKEY_ALLOWED_KEYS=test-secret-key,test2-secret-key" \
    -e "AUTHENTICATION_APIKEY_USERS=test@2024.com,test2@2024.com" \
    -e "AUTHORIZATION_ADMINLIST_ENABLED=true" \
    -e "AUTHORIZATION_ADMINLIST_USERS=test@2024.com" \
    -e "AUTHORIZATION_ADMINLIST_READONLY_USERS=test2@2024.com" \
    -e WEAVIATE_HOSTNAME=0.0.0.0 \
    semitechnologies/weaviate:latest

-d: 这个选项让容器在后台运行,即以守护进程模式运行。
–name weaviate: 给容器命名为 weaviate,这有助于以后通过名称来引用该容器。
–restart=always: 配置容器在宿主机重启后自动启动。
-p 8080:8080: 将容器内的 8080 端口映射到宿主机的 8080 端口。这样,你就可以通过访问宿主机的 8080 端口来访问容器内的服务。
-p 50051:50051: 同上,但映射的是 50051 端口,通常用于 gRPC 通信。
-e “AUTHENTICATION_APIKEY_ENABLED=true”: 启用 API 密钥认证功能。
-e “AUTHENTICATION_APIKEY_ALLOWED_KEYS=test-secret-key,test2-secret-key”: 指定允许使用的 API 密钥列表。
-e “AUTHENTICATION_APIKEY_USERS=test@2024.com,test2@2024.com”: 关联密钥与用户邮箱,这里两个密钥分别对应两个用户。
-e “AUTHORIZATION_ADMINLIST_ENABLED=true”: 开启管理员列表授权。
-e “AUTHORIZATION_ADMINLIST_USERS=test@2024.com”: 指定管理员列表中的用户,这里的 test@2024.com 具有管理员权限。
-e “AUTHORIZATION_ADMINLIST_READONLY_USERS=test2@2024.com”: 指定只读权限的用户列表,test2@2024.com 在此配置下只能进行读取操作。
-e WEAVIATE_HOSTNAME=0.0.0.0: 设置 Weaviate 的主机名。0.0.0.0 表示监听所有可用网络接口。
semitechnologies/weaviate:latest: 指定要从 Docker Hub 下载并运行的 Weaviate 镜像的最新版本。
通过这个命令,你将启动一个安全配置的 Weaviate 实例,具有用户身份验证和访问控制功能。

4.测试连接

导入依赖

pip install -U weaviate-client

test.py

import weaviate
from weaviate.auth import AuthApiKey

client = weaviate.connect_to_local(
    auth_credentials=AuthApiKey("test-secret-key")
)
# 自定义连接
client = weaviate.connect_to_custom(
    skip_init_checks=False,
    http_host="127.0.0.1",
    http_port=8080,
    http_secure=False,
    grpc_host="127.0.0.1",
    grpc_port=50051,
    grpc_secure=False,
    # 对应AUTHENTICATION_APIKEY_ALLOWED_KEYS中的密钥
    # 注意:此处只需要密钥即可,不需要用户名称
    auth_credentials=AuthApiKey("test-secret-key")
)
print(client.is_ready())
print(client.close())

注意:weaviate.connect_to_local连接的本地部署的,weaviate.connect_to_custom可以连接服务器上部署的向量服务器。http_host和grpc_host替换服务器地址,两个是一样的

5.注意事项

如果你翻墙了或者开了代理,weaviate.connect_to_custom/weaviate.connect_to_local报502,连接失败。
开启代理解决办法:Clash Verge点击系统代理,代理绕过里面添加192.168.*(代理里面使用规则,不要使用全球)

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐