Weaviate 本地版 Schema 配置与嵌入模型联动指南

1. 核心概念
  • Schema 配置:定义数据对象的结构(类/属性/数据类型)
  • 嵌入模型:将文本/媒体转换为向量的算法
  • 联动机制:Schema 通过 moduleConfig 字段绑定向量生成模型
2. 配置步骤
(1) 定义类(Class)
{
  "class": "Article",
  "description": "新闻文章",
  "properties": [
    {
      "name": "title",
      "dataType": ["text"]
    },
    {
      "name": "content",
      "dataType": ["text"]
    }
  ]
}

(2) 绑定嵌入模型

关键字段:

"vectorizer": "text2vec-transformers",  // 指定嵌入模块
"moduleConfig": {
  "text2vec-transformers": {
    "model": "bert-base-uncased",       // 模型名称
    "options": {
      "vectorizeClassName": false       // 高级配置
    }
  }
}

3. 主流嵌入模型配置
模型类型 配置示例 适用场景
Transformer "vectorizer": "text2vec-transformers" 文本语义理解
OpenAI "vectorizer": "text2vec-openai" 需要第三方API的场景
CLIP "vectorizer": "multi2vec-clip" 图文跨模态搜索
自定义模型 "vectorizer": "none" + 外部注入向量 私有模型部署
4. 联动工作原理

数据写入流程:

原始文本 
  → Schema路由到指定模型 
    → 模型生成向量 $ \vec{v} = [v_1, v_2, ..., v_n] $ 
      → 存储向量+元数据

查询时:

# 查询示例
client.query.get("Article", ["title"]).with_near_text({
  "concepts": ["人工智能"],
  "certainty": 0.7  // 相似度阈值
}).do()

5. 最佳实践
  1. 模型选择原则

    • 本地部署优先:text2vec-transformers > text2vec-openai
    • 多语言场景:使用 paraphrase-multilingual 系列模型
  2. 性能优化配置

"moduleConfig": {
  "text2vec-transformers": {
    "poolingStrategy": "mean",     // 向量池化策略
    "inferenceUrl": "localhost:8080"  // 自定义推理端点
  }
}

  1. 混合模型方案
{
  "class": "Multimedia",
  "vectorizer": "multi2vec-bind",  // 混合向量化
  "moduleConfig": {
    "multi2vec-bind": {
      "textFields": ["description"],  // 文本用BERT
      "imageFields": ["thumbnail"]   // 图片用ResNet
    }
  }
}

6. 常见问题排查
  • 向量维度不匹配:检查模型输出维度与Weaviate配置
  • 模型加载失败:确认本地模型路径正确
  • 跨语言效果差:切换多语言模型如 bert-base-multilingual-cased

注:本地模型需通过Docker环境变量配置:

docker run -e "TRANSFORMERS_MODEL=bert-large-uncased" ...

7. 验证配置

使用Schema检查接口:

curl http://localhost:8080/v1/schema

确认返回包含:

"vectorizer": "text2vec-transformers",
"moduleConfig": { ... }

参考文档

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐