Weaviate是一个开源向量数据库,用于存储数据对象及其向量嵌入,支持快速相似性搜索。它旨在支持基于人工智能和机器学习构建的应用,尤其是涉及大语言模型和生成式人工智能的应用。Weaviate提供灵活的数据模式,支持多种搜索方式,包括向量搜索、关键词搜索和混合搜索,并可集成外部AI模型以生成嵌入。
该项目由荷兰公司SeMI Technologies的Bob van Luijt于2019年发起,采用BSD-3-Clause许可证发布,使其可免费用于商业和研究用途。Weaviate已被开发人员广泛采用,用于构建检索增强生成(RAG)系统、语义搜索引擎和推荐引擎,并常与OpenAI及其他模型提供商一起部署。
架构与核心特性
Weaviate使用Go语言构建,结合倒排索引和HNSW(分层可导航小世界)图来实现高效的向量索引。HNSW算法支持近似最近邻搜索,这对于以低延迟处理大规模数据集至关重要。该数据库支持密集向量(如来自text-embedding-ada-002等模型的向量)和稀疏向量(基于BM25),从而实现结合语义相关性和词汇相关性的混合搜索。
其关键特性之一是基于模式的方法,用户可定义类和属性,类似于图数据库。这允许将结构化过滤与向量搜索结合,例如在执行相似性查询前先按元数据过滤。Weaviate还支持多租户、复制和分片以实现水平扩展,适合生产环境工作负载。
与AI生态系统的集成
Weaviate旨在与更广泛的AI生态系统无缝协作。它提供模块,可使用来自OpenAI、Anthropic、Google DeepMind和Cohere等提供商的模型对数据进行向量化,也可通过Hugging Face Transformers等库使用本地模型。这使开发人员无需管理单独的基础设施即可生成嵌入。
对于生成式人工智能应用,Weaviate包含一个生成式搜索模块,可检索相关对象并将其传递给大语言模型以生成答案或摘要。此功能支撑了许多RAG流水线,其中数据库充当知识库。Weaviate还支持与Amazon Web Services、Azure和Google Cloud集成以进行云部署,并可在CoreWeave及其他GPU加速平台上运行以处理高性能工作负载。
部署与管理
Weaviate可通过多种方式部署:使用Docker或Kubernetes自托管服务、作为托管云服务(Weaviate Cloud Services,WCS),或作为Python或Go应用中的嵌入式库。托管服务提供自动备份、扩展和监控,而自托管则提供对基础设施的完全控制。
该数据库提供GraphQL API用于查询,支持在单个请求中同时进行向量和关键词搜索。它还提供RESTful API用于模式管理和数据操作。Weaviate提供Python、JavaScript、Java、Go等语言的客户端库,简化了与现有应用的集成。
使用场景与性能
常见使用场景包括电子商务的语义搜索、企业知识库的文档检索、网络安全中的异常检测以及个性化推荐系统。Weaviate的混合搜索能力在需要精确关键词匹配的场景中尤为受重视,例如法律或医疗文档检索。
性能基准表明,Weaviate可在普通硬件上处理数百万个对象,查询延迟低于100毫秒,但具体数字取决于向量维度、索引设置和硬件。该数据库支持在向量搜索前对已索引属性进行过滤,这可显著缩小搜索范围并提高速度。
社区与开发
Weaviate由SeMI Technologies的核心团队积极开发,并得到全球社区的贡献。该项目维护公开路线图并定期发布更新,1.0版本于2021年发布。截至2024年,Weaviate已成为Linux基金会AI与数据生态的一部分,反映了其在开源AI基础设施栈中的作用。
社区提供大量文档、教程和示例,项目设有专门的Slack频道用于开发者支持。Weaviate的源代码可在GitHub上获取,并收到了来自三星电子和英特尔等公司工程师的贡献,表明其跨行业相关性。
与其他向量数据库的比较
Weaviate与Pinecone、Milvus和Qdrant等其他向量数据库竞争。与专有的Pinecone不同,Weaviate完全开源。与Milvus相比,Weaviate提供更集成的模式和GraphQL接口,而Milvus专注于高性能分布式索引。Qdrant同样开源,但使用不同的索引方法,核心基于Rust。
Weaviate的优势在于易用性、内置AI集成模块和混合搜索能力。它常被需要灵活、可自托管解决方案且拥有强大社区支持的初创企业和大型企业所选择。
未来方向
开发路线图包括改进索引算法、增强对多模态数据(图像、音频、视频)的支持,以及与深度学习框架的更紧密集成。团队还在探索自动模式推断和更好处理流式数据的功能。随着基于神经网络的搜索需求增长,Weaviate旨在保持其在向量数据库领域领先开源选项的地位。