Weaviate快速入门教程:10分钟搭建向量搜索引擎
前言:为什么选择Weaviate?
在AI应用爆发的时代,传统数据库已无法满足向量搜索、语义理解等现代需求。你还在为以下问题头疼吗?
- 🔍 如何实现高效的相似性搜索?
- 🏗️ 如何将向量搜索与结构化过滤结合?
- 🌐 如何构建可扩展的云原生AI应用?
Weaviate(向量数据库)正是为解决这些问题而生!本文将带你10分钟快速上手,搭建你的第一个向量搜索引擎。
什么是Weaviate?
Weaviate是一个开源的向量数据库,它能够同时存储对象和向量,具备以下核心特性:
| 特性 | 描述 | 优势 |
|---|---|---|
| 向量搜索 | 支持高维向量相似性搜索 | 实现语义搜索、推荐系统 |
| 结构化过滤 | 结合传统数据库查询能力 | 灵活的数据检索 |
| 云原生架构 | 分布式、可扩展设计 | 生产环境就绪 |
| 多协议支持 | GraphQL、REST、多语言客户端 | 开发便捷 |
环境准备
在开始之前,确保你的系统满足以下要求:
- Docker和Docker Compose
- 至少4GB内存
- Python 3.7+(可选,用于客户端示例)
第一步:快速部署Weaviate
使用Docker Compose部署
创建docker-compose.yml文件:
version: '3.4'
services:
weaviate:
image: semitechnologies/weaviate:latest
ports:
- "8080:8080"
environment:
- QUERY_DEFAULTS_LIMIT=25
- AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED=true
- PERSISTENCE_DATA_PATH=/var/lib/weaviate
- DEFAULT_VECTORIZER_MODULE=none
volumes:
- weaviate_data:/var/lib/weaviate
volumes:
weaviate_data:
启动服务:
docker-compose up -d
验证安装
访问 http://localhost:8080/v1/meta 查看服务状态:
{
"hostname": "http://localhost:8080",
"version": "1.18.0",
"modules": {}
}
第二步:核心概念理解
Weaviate数据模型
关键组件说明
- Class(类): 类似数据库表,定义数据结构
- Property(属性): 类的字段,支持多种数据类型
- Object(对象): 具体的实例数据
- Vector(向量): 高维数值表示,用于相似性搜索
第三步:实战操作指南
1. 创建数据模式(Schema)
使用REST API创建文章类:
curl -X POST http://localhost:8080/v1/schema -H 'Content-Type: application/json' -d '{
"class": "Article",
"description": "文章数据",
"properties": [
{
"name": "title",
"dataType": ["string"],
"description": "文章标题"
},
{
"name": "content",
"dataType": ["text"],
"description": "文章内容"
},
{
"name": "category",
"dataType": ["string"],
"description": "文章分类"
}
]
}'
2. 插入带向量数据
curl -X POST http://localhost:8080/v1/objects -H 'Content-Type: application/json' -d '{
"class": "Article",
"properties": {
"title": "人工智能的未来",
"content": "人工智能正在改变世界...",
"category": "科技"
},
"vector": [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0]
}'
3. 执行向量搜索
curl -X POST http://localhost:8080/v1/graphql -H 'Content-Type: application/json' -d '{
"query": "{
Get {
Article(nearVector: {
vector: [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0]
distance: 0.7
}) {
title
content
category
_additional {
distance
}
}
}
}"
}'
第四步:Python客户端集成
安装客户端库
pip install weaviate-client
基本操作示例
import weaviate
import json
# 连接Weaviate
client = weaviate.Client("http://localhost:8080")
# 创建数据对象
article_data = {
"title": "机器学习入门",
"content": "机器学习是AI的核心技术...",
"category": "教育"
}
# 插入数据
client.data_object.create(article_data, "Article")
# 向量搜索
query_vector = [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0]
result = client.query.get("Article", ["title", "content"]).with_near_vector({
"vector": query_vector
}).with_limit(5).do()
print(json.dumps(result, indent=2))
第五步:高级功能探索
混合搜索:向量+关键词
{
Get {
Article(
nearVector: {
vector: [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0]
distance: 0.7
}
where: {
path: ["category"]
operator: Equal
valueString: "科技"
}
) {
title
content
_additional {
distance
}
}
}
}
自动向量化集成
Weaviate支持多种向量化模块:
| 模块 | 描述 | 适用场景 |
|---|---|---|
| text2vec-transformers | 使用Transformer模型 | 文本语义搜索 |
| text2vec-contextionary | 多语言支持 | 国际化应用 |
| img2vec-neural | 图像向量化 | 视觉搜索 |
性能优化建议
索引策略
推荐配置
# 生产环境配置示例
services:
weaviate:
environment:
- DEFAULT_VECTORIZER_MODULE=text2vec-transformers
- ENABLE_MODULES=text2vec-transformers
- TRANSFORMERS_INFERENCE_API=http://t2v-transformers:8080
- INDEX_HNSW_EF_CONSTRUCTION=128
- INDEX_HNSW_M=16
常见问题解答
Q1: Weaviate支持哪些向量维度?
A: 理论上支持任意维度,但推荐使用128-1536维以获得最佳性能。
Q2: 如何备份和恢复数据?
A: 使用Weaviate的快照功能或直接备份持久化卷。
Q3: 支持集群部署吗?
A: 是的,Weaviate原生支持水平扩展和集群部署。
总结与展望
通过本教程,你已经掌握了:
✅ Weaviate核心概念和架构 ✅ 快速部署和基本配置 ✅ 数据建模和CRUD操作 ✅ 向量搜索和混合查询 ✅ Python客户端集成
Weaviate作为现代AI应用的基础设施,为以下场景提供强大支持:
- 🔍 智能搜索引擎
- 🎯 个性化推荐系统
- 📊 知识图谱构建
- 🤖 聊天机器人和问答系统
下一步学习建议:
- 探索更多向量化模块
- 学习集群部署和监控
- 实践生产环境优化
- 结合具体业务场景深度应用
开始你的向量搜索之旅吧!如果在实践中遇到问题,欢迎在社区交流讨论。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



