Weaviate:云原生开源向量数据库

Weaviate 在 GitHub 上已经拿到 16,265 Star 了。

这是一个开源的云原生向量数据库,用 Go 语言写成。它同时存储对象和向量,把语义搜索、关键词过滤、RAG 和重排序装进同一个查询接口里。

正文顶部截图

1、这玩意儿是干嘛的

向量数据库的核心逻辑是把文本、图片这类非结构化数据转成高维向量,然后按语义相近程度来检索。

Weaviate 在这个基础上做了不少扩展。它支持两种向量写入方式:导入时自动向量化,接入 OpenAI、Cohere、HuggingFace 等模型直接生成嵌入;也可以直接导入自己提前算好的向量。查询时可以纯向量检索,也可以把 BM25 关键词搜索和向量相似度混合起来,用一套 API 拿到结果。

除了文本语义搜索,Weaviate 也支持图像搜索。你扔进去一张图,它能按视觉语义相近程度把相似的图捞出来。

常见的使用场景包括 RAG 系统、语义搜索、图像搜索、推荐引擎、聊天机器人和内容分类。

README区域截图

2、为什么值得关注

做过搜索或 RAG 的人大多遇到过一个问题:向量检索和关键词过滤各跑各的,中间还要自己写逻辑把结果拼起来,延迟和准确率都很难兼顾。

Weaviate 把这几层揉进了一个查询里。语义相似度、关键词匹配、RAG 生成、结果重排序,一次调用就能走完。官方给出的数据是可以在十亿级向量上做毫秒级搜索,向量压缩功能还能把内存占用压下去。

生产环境需要的功能它基本都内置了:多租户隔离、数据复制、基于角色的权限控制,还有对象级别的 TTL 来自动清理过期数据。生态方面,LangChain、LlamaIndex、Haystack 这些主流框架都接入了 Weaviate。

3、怎么用

部署方式很灵活。本地测试可以用 Docker 一键起:

docker compose up -d

生产环境可以上 Kubernetes,或者直接使用 Weaviate Cloud 托管服务。

客户端覆盖了主流语言:Python、JavaScript/TypeScript、Java、Go、C#。同时也暴露了 REST、gRPC 和 GraphQL 三套 API。

Python 里建集合、灌数据、做语义搜索的代码很短:

import weaviate
from weaviate.classes.config import Configure, DataType, Property

client = weaviate.connect_to_local()

client.collections.create(
    name="Article",
    properties=[Property(name="content", data_type=DataType.TEXT)],
    vector_config=Configure.Vectors.text2vec_model2vec(),
)

articles = client.collections.get("Article")
articles.data.insert_many([
    {"content": "Vector databases enable semantic search"},
    {"content": "Machine learning models generate embeddings"},
])

results = articles.query.near_text(query="Search objects by meaning", limit=1)
print(results.objects[0])

client.close()

4、适合哪些人用

  • 在搭 RAG 系统或语义搜索平台的开发者
  • 需要把关键词搜索和向量检索统一到一起的工程团队
  • 做推荐引擎、聊天机器人、内容分类的 AI 应用团队
  • 对搜索延迟和系统稳定性有要求、需要处理大规模向量数据的场景

底层存储选 Weaviate,可以把向量检索、关键词过滤和生成式搜索这三件事合成一个查询来完成。

统稳定性有要求、需要处理大规模向量数据的场景

底层存储选 Weaviate,可以把向量检索、关键词过滤和生成式搜索这三件事合成一个查询来完成。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐