向量数据库Weaviate 详细介绍
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 也可用
💡 主要应用场景
🔧 基本使用示例
安装和初始化
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
可扩展性 - 支持多节点集群部署
🚀 部署方式
⚖️ 优缺点
优点 ✅
完全开源,社区活跃
开箱即用的 AI 集成
强大的查询能力(GraphQL)
低延迟高性能
良好的文档和示例
缺点 ⚠️
相对较新,生态还在发展
某些高级功能需要付费
运维成本(自部署情况下)
对初学者学习曲线较陡
🎯 与其他数据库的对比
📚 学习资源
GitHub - https://github.com/weaviate/weaviate
社区论坛 - Slack、GitHub Discussions