
Weaviate 是一个开源的、云原生的向量数据库,既存储对象也存储向量,支持大规模语义搜索。它通过统一的查询接口,将向量相似度搜索与关键词过滤、检索增强生成(RAG)和重排序相结合。常见用例包括 RAG 系统、语义和图像搜索、推荐引擎、聊天机器人和内容分类。
Weaviate 支持两种向量存储方式:使用集成模型(OpenAI、Cohere、HuggingFace 等)在导入时自动向量化,或者直接导入预先计算的向量嵌入。生产环境部署时,可以利用内置的多租户、复制、RBAC 授权以及众多其他功能。
要快速上手,请查看以下教程:
Weaviate 提供多种安装和部署选项:
你可以使用 Docker 轻松启动 Weaviate 和本地向量嵌入模型。
创建一个 docker-compose.yml 文件:
services:
weaviate:
image: cr.weaviate.io/semitechnologies/weaviate:1.36.0
ports:
- "8080:8080"
- "50051:50051"
environment:
ENABLE_MODULES: text2vec-model2vec
MODEL2VEC_INFERENCE_API: http://text2vec-model2vec:8080
# 一个轻量级嵌入模型,在导入时根据对象生成向量
text2vec-model2vec:
image: cr.weaviate.io/semitechnologies/model2vec-inference:minishlab-potion-base-32M
使用以下命令启动 Weaviate 和嵌入服务:
docker compose up -d
安装 Python 客户端(或使用其他客户端库):
pip install -U weaviate-client
以下 Python 示例展示了如何轻松地向 Weaviate 数据库导入数据、创建向量嵌入并执行语义搜索:
import weaviate
from weaviate.classes.config import Configure, DataType, Property
# 连接到 Weaviate
client = weaviate.connect_to_local()
# 创建一个集合
client.collections.create(
name="Article",
properties=[Property(name="content", data_type=DataType.TEXT)],
vector_config=Configure.Vectors.text2vec_model2vec(), # 使用向量化器在导入时生成嵌入
# vector_config=Configure.Vectors.self_provided() # 如果你想导入自己预先生成的嵌入
)
# 插入对象并生成嵌入
articles = client.collections.get("Article")
articles.data.insert_many(
[
{"content": "向量数据库支持语义搜索"},
{"content": "机器学习模型生成嵌入"},
{"content": "Weaviate 支持混合搜索功能"},
]
)
# 执行语义搜索
results = articles.query.near_text(query="根据含义搜索对象", limit=1)
print(results.objects[0])
client.close()
此示例使用了 Model2Vec 向量化器,但你也可以选择其他嵌入模型提供商或使用自己预先生成的向量。
Weaviate 为多种编程语言提供了客户端库:
此外还有社区维护的库。
Weaviate 提供了 REST API、gRPC API 和 GraphQL API 用于与数据库服务器通信。
以下功能可帮助你构建 AI 驱动的应用程序:
⚡ 快速搜索性能:在毫秒级内对数十亿向量执行复杂的语义搜索。Weaviate 的架构使用 Go 语言构建,追求速度和可靠性,确保即使在高负载下你的 AI 应用也能高度响应。更多信息请参阅我们的 ANN 基准测试。
🔌 灵活的向量化:使用来自 OpenAI、Cohere、HuggingFace、Google 等的集成向量化器在导入时无缝向量化数据。你也可以导入自己的向量嵌入。
🔍 高级混合与图像搜索:通过一次 API 调用,将语义搜索的强大能力与传统关键词(BM25)搜索、图像搜索和高级过滤相结合,以获得最佳结果。
🤖 集成的 RAG 与重排序:通过内置的生成式搜索(RAG)和重排序功能,超越简单的检索。无需额外工具,即可直接从数据库中驱动复杂的问答系统、聊天机器人和摘要器。
📈 生产就绪与可扩展:Weaviate 专为关键任务应用而构建。借助对水平扩展、多租户、复制和细粒度基于角色的访问控制(RBAC)的原生支持,你可以从快速原型开发快速扩展到生产环境的大规模应用。
💰 经济高效的运维:通过内置的向量压缩大幅降低资源消耗和运维成本。向量量化和多向量编码可在对搜索性能影响最小的情况下降低内存使用。
⏱️ 对象 TTL:通过每个集合可配置的生存时间(TTL)设置,配合完整的 RBAC 和多租户支持,自动过期和移除陈旧数据。
如需完整的功能列表,请访问官方 Weaviate 文档。
Weaviate Agent Skills 是一套为 AI 编码代理(Claude Code、Cursor、GitHub Copilot 等)提供的技能集,使它们能更准确、更高效地与 Weaviate 协作。技能涵盖搜索、查询、集合管理、数据导入以及完整的应用程序蓝图(RAG、代理 RAG、聊天机器人等)。
使用以下命令安装:
npx skills add weaviate/agent-skills
以下演示是能够展示 Weaviate 部分能力的可运行应用程序。它们的源代码可在 GitHub 上获取。
我们还维护了大量的 Jupyter Notebooks 和 TypeScript 代码片段库,涵盖如何使用 Weaviate 的功能和集成:
Weaviate 与许多外部服务集成:
| 类别 | 描述 | 集成 |
|---|---|---|
| 云超算服务商 | 大规模计算和存储 | AWS, Google |
| 计算基础设施 | 运行和扩展容器化应用 | Modal, Replicate, Replicated |
| 数据平台 | 数据摄取和网页抓取 | Airbyte, Aryn, Boomi, Box, Confluent, Astronomer, Context Data, Databricks, Firecrawl, IBM, Unstructured |
| LLM 与代理框架 | 构建代理和生成式 AI 应用 | Agno, Composio, CrewAI, DSPy, Dynamiq, Haystack, LangChain, LlamaIndex, N8n, Semantic Kernel |
| 运维 | 用于监控和分析生成式 AI 工作流的工具 | AIMon, Arize, Cleanlab, Comet, DeepEval, Langtrace, LangWatch, Nomic, Patronus AI, Ragas, TruLens, Weights & Biases |
我们欢迎并感谢所有贡献!请查看我们的贡献者指南了解开发环境搭建、代码风格指南、测试要求和提交流程。
加入我们的社区论坛讨论想法并寻求帮助。
BSD 3-Clause 许可证。详情请参阅 LICENSE。