gRPC
从 Weaviate v1.19.0 开始,gRPC 接口已逐步添加到 Weaviate 中。gRPC 是一种高性能、开源的通用 RPC 框架,它基于契约,可以在任何环境中运行。它基于 HTTP/2 和 Protocol Buffers,因此非常快速和高效。
截至 Weaviate v1.23.7,gRPC 接口被认为是稳定的。 Python (v4 版本) 和 TypeScript (v3 版本) 客户端库支持 gRPC,其他客户端库也将陆续支持。
Protocol Buffer (Protobuf) 定义
gRPC 接口通过其 Protocol Buffer,或 Protobuf (了解更多) 定义来定义。
在 Weaviate 的情况下,.proto 文件列在 Core 库的 proto 目录 中。
该目录包含以下文件
weaviate.proto:主要的 Protobuf 定义文件。该文件定义了Weaviate服务,并指定了 Weaviate 服务中可用的 RPC 方法。batch.proto:定义用于处理批量对象操作的数据结构。该文件由weaviate.proto导入。search_get.proto:定义用于处理搜索(获取)操作的数据结构。该文件由weaviate.proto导入。base.proto:定义要在其他地方使用 的基本数据结构。该文件由batch.proto和search_get.proto导入。
如何使用 gRPC
服务器端
例如,下面的代码片段将 50051 映射为宿主机端口,以便可以从容器外部访问它。50051 端口映射到容器内的 50051 端口用于 gRPC 调用,而 8080 端口映射到容器内的 8080 端口用于 REST 调用。
我们建议使用默认端口 50051 进行 gRPC 调用。可以通过 GRPC_PORT 环境变量 进行修改。请注意,Weaviate Cloud 使用端口 443 进行 gRPC。
```yaml
---
services:
weaviate:
# ... Other settings
ports:
- "8080:8080" # REST calls
- "50051:50051" # gRPC calls
# ... Other settings
客户端
您可以通过 Python (v4 版本) 和 TypeScript (v3 版本) 客户端库使用 gRPC 接口。其他客户端库也将很快推出 gRPC 支持。
或者,您可以使用其他工具,例如 grpcurl 命令行工具,与 gRPC API 交互。一些选项包括
grpcurl命令行工具 (GitHub 仓库)- Postman (如何使用 Postman 发送 gRPC 请求)
问题和反馈
如果您有任何问题或反馈,请在 用户论坛 中告诉我们。
