Weaviate 是一个开源向量数据库,专门设计用于存储和搜索高维向量数据,特别适合构建生成式 AI 应用。让我为你详细介绍它的核心特性和应用场景。

安装教程

https://help.luyouxia.com/weaviate.html

📌 核心概念

什么是 Weaviate?

Weaviate 是一个云原生的向量数据库,结合了:

  • 向量搜索能力 - 高效的相似性搜索

  • 语义理解 - 基于含义而非关键词的搜索

  • GraphQL API - 灵活的查询接口

  • 多模态支持 - 文本、图像、音频等数据类型

工作原理

用户输入 → 向量化 → 相似度计算 → 排序返回 → 结果展示
  (文本)    (向量)   (向量搜索)    (Top-K)

🏗️ 核心特性

1. 高效的向量搜索

  • 使用 HNSW(分层可导航小世界)算法

  • 支持亚毫秒级的搜索延迟

  • 可处理百万级别的向量数据

2. 灵活的数据结构

# 创建数据类型示例
{
  "class": "Article",
  "properties": [
    {
      "name": "title",
      "dataType": ["text"]
    },
    {
      "name": "content",
      "dataType": ["text"]
    },
    {
      "name": "category",
      "dataType": ["string"]
    }
  ]
}

3. 多种向量化方案

  • 内置模型 - Weaviate 集成的 AI 模型

  • 外部模型 - OpenAI、Cohere、HuggingFace 等

  • 自定义向量 - 导入预生成的向量

4. 混合搜索

结合 BM25(全文搜索)+ 向量搜索:

query {
  Get {
    Article(
      hybrid: {
        query: "机器学习",
        alpha: 0.5  # 0.5 = 50% 语义 + 50% 关键词
      }
    ) {
      title
      content
      _score
    }
  }
}

5. GraphQL API

  • 强类型查询语言

  • 支持聚合、分组、过滤

  • RESTful API 也可用

💡 主要应用场景

场景

说明

RAG 系统

检索增强生成 - 为 LLM 提供上下文

语义搜索

按含义而非关键词搜索文档

推荐系统

基于用户偏好的相似项推荐

聊天机器人

知识库查询和上下文管理

图像搜索

多模态向量相似性搜索

异常检测

发现异常的向量模式

🔧 基本使用示例

安装和初始化

import weaviate
from weaviate.connect import ConnectionParams

# 连接到 Weaviate
client = weaviate.connect_to_local()

# 或连接到云端
client = weaviate.connect_to_weaviate_cloud(
    cluster_url="https://your-instance.weaviate.network",
    auth_credentials=weaviate.auth.AuthApiKey("your-api-key")
)

创建数据集

# 定义数据类
client.collections.create(
    name="Article",
    vectorizer_config=weaviate.classes.config.Configure.Vectorizer.text2vec_openai(),
    properties=[
        weaviate.classes.config.Property(name="title", data_type="text"),
        weaviate.classes.config.Property(name="content", data_type="text"),
        weaviate.classes.config.Property(name="author", data_type="text"),
    ]
)

数据导入

# 添加对象
articles = client.collections.get("Article")
articles.data.insert(
    properties={
        "title": "深度学习入门",
        "content": "深度学习是机器学习的一个分支...",
        "author": "张三"
    }
)

向量搜索

# 语义搜索
results = articles.query.near_text(
    query="神经网络的基础知识",
    limit=5,
    return_metadata=weaviate.classes.query.MetadataQuery(distance=True)
)

for result in results.objects:
    print(f"标题: {result.properties['title']}")
    print(f"相似度: {result.metadata.distance}")

混合搜索

# 结合关键词和语义搜索
results = articles.query.bm25(
    query="机器学习",
    return_metadata=weaviate.classes.query.MetadataQuery(score=True)
)

📊 架构特点

向量索引结构

Weaviate Instance
├── Collections (数据类型)
│   ├── Article
│   ├── Product
│   └── User
├── Vector Store (向量存储)
│   └── HNSW Index (高效搜索索引)
└── Storage (持久化存储)
    └── 向量 + 元数据

性能指标

  • 查询延迟 - 通常 < 100ms(取决于数据集大小)

  • 吞吐量 - 单节点可处理数千 QPS

  • 可扩展性 - 支持多节点集群部署

🚀 部署方式

方式

适用场景

Docker

本地开发、测试

Kubernetes

生产环境、高可用

Weaviate Cloud

托管服务、无运维

企业版

大规模部署、专业支持

⚖️ 优缺点

优点 ✅

  • 完全开源,社区活跃

  • 开箱即用的 AI 集成

  • 强大的查询能力(GraphQL)

  • 低延迟高性能

  • 良好的文档和示例

缺点 ⚠️

  • 相对较新,生态还在发展

  • 某些高级功能需要付费

  • 运维成本(自部署情况下)

  • 对初学者学习曲线较陡

🎯 与其他数据库的对比

特性

Weaviate

Pinecone

Milvus

Qdrant

开源

托管服务

GraphQL

混合搜索

易用性

⭐⭐⭐⭐

⭐⭐⭐⭐⭐

⭐⭐⭐

⭐⭐⭐⭐

📚 学习资源