首页/AI/RAG 与向量库速查/Weaviate 与内置向量化

Weaviate 与内置向量化

Weaviate 的特点是模块化:可配置向量化模块(如 text2vec-*)在写入时自动生成向量,也支持自带向量;查询提供 GraphQL 与 REST 两套接口。

RAG 与向量库速查AI更新于 2026-10-13

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 相关行为会随版本演进:升级前先看版本说明与迁移提示,避免类结构与属性定义在升级后不可用。
自托管部署建议显式声明向量化模块与持久化路径:镜像默认值随版本变化,显式声明可以避免升级后行为悄悄漂移。
一个类可以配置多个命名向量:多模态或多字段检索时按字段分别查询,但每个字段的维度与距离度量都要单独声明。

易错点

  • 类名大小写写错:查询返回空结果而不报错,排查时容易误判为没有数据
  • 匿名访问开启后暴露公网:数据可被任意写入,甚至被投毒影响答案
  • 容器未挂载数据目录:重启后类结构与数据全部丢失
  • vectorizer 设为 none 却未提供向量:写入直接失败,批量任务成批报错

数据来源与参考

  • Weaviate 官方文档(Quickstart / Schema)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌