Weaviate 与内置向量化
Weaviate 的特点是模块化:可以配置向量化模块在写入时自动生成向量,也支持自带向量(把 vectorizer 设为 none);查询同时提供 GraphQL 与 REST 两套接口,类之间还能建立关联,形成简单的关系结构。自托管场景常选择自带向量,好处是 embedding 管线统一可控,与其它检索链路共用同一套向量,避免两套标准并存。
基本信息
| 部署方式 | Docker 单容器 |
|---|---|
| 服务端口 | 8080 |
| 查询接口 | GraphQL 与 REST |
| 向量化 | 内置模块自动生成,或自带向量 |
| 数据持久化 | 必须挂载数据目录 |
| 鉴权 | 匿名访问开关需谨慎使用 |
典型使用场景
- 希望写入时自动向量化,减少外部管线维护
- 需要 GraphQL 查询与对象关联的场景
- 自带向量、统一 embedding 管线的自托管部署
- 一个对象挂多个向量(多字段、多模态)
- 快速验证检索效果的原型环境
建类与写入
建类与写入
curl -X POST http://localhost:8080/v1/schema \
-H "Content-Type: application/json" -d '
{"class": "KbChunk", "vectorizer": "none", # none 表示自带向量
"properties": [{"name": "source", "dataType": ["text"]}]}'
# 类名大小写敏感:查询时类名写错会返回空结果关键配置读法
| 配置 | 含义 | 注意 |
|---|---|---|
| vectorizer | 向量化模块,或设为 none | 设为 none 时必须自带向量,否则写入失败 |
| 匿名访问开关 | 是否允许无凭据访问 | 开启并暴露公网等于开放写入 |
| 数据目录 | 持久化路径 | 不挂载卷,重启后数据全丢 |
| class 名称 | 类名大小写敏感 | 查询写错类名返回空结果,不易察觉 |
vectorizer 设为 none 时需自带向量;自托管场景常用这种方式,以便与其它链路共用同一套 embedding 标准。
schema 相关行为会随版本演进:升级前先看版本说明与迁移提示,避免类结构与属性定义在升级后不可用。
自托管部署建议显式声明向量化模块与持久化路径:镜像默认值随版本变化,显式声明可以避免升级后行为悄悄漂移。
一个类可以配置多个命名向量:多模态或多字段检索时按字段分别查询,但每个字段的维度与距离度量都要单独声明。