Weaviate 是什么?
Weaviate 是一个开源的、AI原生的向量数据库,旨在存储、索引和搜索数据对象及其对应的向量嵌入。它通过将向量相似性搜索的强大功能与传统过滤相结合,使开发人员能够构建复杂的人工智能应用程序。与传统数据库不同,Weaviate 从头开始构建,以满足人工智能的独特需求,使其成为语义搜索、推荐引擎和检索增强生成(RAG)系统的完美后端。
主要特点
- 混合搜索: 结合基于关键字(稀疏)和向量(密集)的搜索,以提供更准确和上下文相关的结果。
- AI原生架构: 为速度和规模而构建,能够处理数十亿个对象,查询时间达到亚秒级。
- 向量化模块: 在导入时使用OpenAI、Cohere和Hugging Face等流行模型自动向量化数据,或允许您使用自己的自定义向量。
- 高级过滤: 支持对数据属性进行复杂的实时过滤,即使在向量搜索操作期间也能实现高度针对性和精确的搜索查询。
- 检索增强生成(RAG)就绪: 与大型语言模型(LLM)无缝集成,以提供基于您自己数据的可信赖且具有上下文感知能力的人工智能助手。
- 开发者友好: 提供Python、Go、Java和TypeScript的SDK,以及GraphQL和RESTful API,便于集成。
使用案例
- 语义搜索: 创建能够理解用户查询背后的含义和上下文的搜索引擎,而不仅仅是关键字。
- 推荐引擎: 根据用户的行为和项目之间的相似性,向用户推荐产品、文章或媒体。
- AI驱动的聊天机器人: 构建聊天机器人和虚拟助手,可以从知识库中检索相关信息以提供准确的答案。
- 图像和多模态搜索: 实现可以根据文本描述查找图像,或查找与给定图像相似的图像的搜索功能。
- 异常检测: 通过查找与其余数据点不相似的数据点,识别数据中的异常值或不寻常模式。
入门指南
这是一个“Hello World”风格的示例,使用Weaviate Python客户端连接到本地实例,创建集合,添加数据并执行向量搜索。
首先,安装客户端库: ```bash pip install -U weaviate-client
接下来,运行此Python脚本。此示例假定您本地正在运行Weaviate实例(例如,通过Docker)。
```python import weaviate import weaviate.classes as wvc import os
连接到本地Weaviate实例
确保您在本地运行Weaviate,例如通过Docker
try: client = weaviate.connect_to_local() print(“成功连接到Weaviate!”)
# 定义一个新集合(如果它不存在)
collection_name = "MyAwesomeCollection"
if client.collections.exists(collection_name):
client.collections.delete(collection_name)
my_collection = client.collections.create(
name=collection_name,
# 此示例使用默认的向量化器。
# 对于生产环境,请配置一个特定的,如text2vec-openai
vectorizer_config=wvc.config.Configure.Vectorizer.text2vec_huggingface()
)
print(f"集合 '{collection_name}' 已创建。")
# 添加数据对象
data_to_add = [
{"text": "天空是蓝色的。"},
{"text": "海洋广阔而深邃。"},
{"text": "一个晴朗的好天气。"},
{"text": "探索我们世界之外的宇宙。"},
]
my_collection.data.insert_many(data_to_add)
print("数据已添加到集合中。")
# 执行向量搜索
query_text = "天空是什么颜色的?"
response = my_collection.query.near_text(
query=query_text,
limit=1
)
# 打印结果
print(f"\n查询: '{query_text}'")
if response.objects:
print(f"最相似的结果: '{response.objects[0].properties['text']}'")
else:
print("未找到结果。")
finally: # 关闭连接 if ‘client’ in locals(): client.close() print(“\n与Weaviate的连接已关闭。”)
定价
Weaviate是开源的,可以免费自行托管。对于喜欢托管解决方案的用户,Weaviate提供了一个无服务器云(Serverless Cloud)选项,这是一个完全托管的、按使用付费的服务,并提供免费试用。他们还为大规模生产部署提供企业云(Enterprise Cloud)和自带云(BYOC)计划,提供专门的支持和基础设施。这种“免费增值”模式允许开发人员免费开始,并随着需求的增长而扩展。