跳至主要内容
前往文档
⌘U
Weaviate 数据库

使用 Weaviate 的 APIs 和工具开发 AI 应用

部署

部署、配置和维护 Weaviate 数据库

Weaviate Agents

使用 Weaviate 构建和部署智能代理

Weaviate Cloud

在云端管理和扩展 Weaviate

更多资源

集成
贡献者指南
活动 & 工作坊
Weaviate Academy

需要帮助?

Weaviate Logo询问 AI 助手⌘K
社区论坛

使用 Weaviate 的 NVIDIA 嵌入

v1.28.5v1.29.0 中添加

Weaviate 与 NVIDIA 的 API 集成使您可以直接从 Weaviate 访问其模型的功能。

配置 Weaviate 向量索引 以使用 NVIDIA 上的嵌入模型,Weaviate 将使用指定的模型和您的 NVIDIA NIM API 密钥为各种操作生成嵌入。此功能称为向量化器

导入时间,Weaviate 生成文本对象嵌入并将它们保存到索引中。对于 向量混合 搜索操作,Weaviate 将文本查询转换为嵌入。

Embedding integration illustration

要求

Weaviate 配置

您的 Weaviate 实例必须配置为使用 NVIDIA 向量化器集成 (text2vec-nvidia) 模块。

对于 Weaviate Cloud (WCD) 用户

此集成在 Weaviate Cloud (WCD) 实例上默认启用。

对于自托管用户

API 凭证

您必须向 Weaviate 提供有效的 NVIDIA NIM API 密钥才能进行此集成。请访问 NVIDIA 注册并获取 API 密钥。

使用以下方法之一向 Weaviate 提供 API 密钥

  • 设置可供 Weaviate 使用的 NVIDIA_APIKEY 环境变量。
  • 在运行时提供 API 密钥,如下所示。
py docs  API 文档
更多信息文档中的代码片段反映了最新的客户端库和 Weaviate 数据库版本。请查看 发行说明 以获取特定版本。

如果某个片段无法工作或您有任何反馈,请打开一个 GitHub issue
import weaviate
from weaviate.classes.init import Auth
import os

# Recommended: save sensitive data as environment variables
nvidia_key = os.getenv("NVIDIA_APIKEY")
headers = {
"X-NVIDIA-Api-Key": nvidia_key,
}

client = weaviate.connect_to_weaviate_cloud(
cluster_url=weaviate_url, # `weaviate_url`: your Weaviate URL
auth_credentials=Auth.api_key(weaviate_key), # `weaviate_key`: your Weaviate API key
headers=headers
)

# Work with Weaviate

client.close()

配置向量化器

配置 Weaviate 索引 以使用 NVIDIA 嵌入模型,如下所示

py docs  API 文档
更多信息文档中的代码片段反映了最新的客户端库和 Weaviate 数据库版本。请查看 发行说明 以获取特定版本。

如果某个片段无法工作或您有任何反馈,请打开一个 GitHub issue
from weaviate.classes.config import Configure

client.collections.create(
"DemoCollection",
vector_config=[
Configure.Vectors.text2vec_nvidia(
name="title_vector",
source_properties=["title"],
)
],
# Additional parameters not shown
)

选择一个模型

您可以为向量化器指定一个 可用模型,如以下配置示例所示。

py docs  API 文档
更多信息文档中的代码片段反映了最新的客户端库和 Weaviate 数据库版本。请查看 发行说明 以获取特定版本。

如果某个片段无法工作或您有任何反馈,请打开一个 GitHub issue
from weaviate.classes.config import Configure

client.collections.create(
"DemoCollection",
vector_config=[
Configure.Vectors.text2vec_nvidia(
name="title_vector",
source_properties=["title"],
model="nvidia/nv-embed-v1"
)
],
# Additional parameters not shown
)

您可以 指定 Weaviate 使用的 可用模型。如果没有指定模型,则使用 默认模型

向量化行为

Weaviate 遵循集合配置和一组预定义的规则来向量化对象。


除非在集合定义中另有说明,否则默认行为是


  • 仅向量化使用 texttext[] 数据类型的属性(除非 跳过
  • 在连接值之前,按字母顺序 (a-z) 对属性进行排序
  • 如果 vectorizePropertyNametrue (默认值为 false),则将属性名称前缀添加到每个属性值
  • 用空格连接(前缀)属性值
  • 前缀类名(除非 vectorizeClassNamefalse
  • 将生成的字符串转换为小写

向量化器参数

以下示例演示如何配置 NVIDIA 特定的选项。

py docs  API 文档
更多信息文档中的代码片段反映了最新的客户端库和 Weaviate 数据库版本。请查看 发行说明 以获取特定版本。

如果某个片段无法工作或您有任何反馈,请打开一个 GitHub issue
from weaviate.classes.config import Configure

client.collections.create(
"DemoCollection",
vector_config=[
Configure.Vectors.text2vec_nvidia(
name="title_vector",
source_properties=["title"],
model="nvidia/nv-embed-v1",
base_url="https://integrate.api.nvidia.com/v1",
)
],
# Additional parameters not shown
)

有关模型参数的更多详细信息,请参阅 NVIDIA NIM API 文档

数据导入

配置向量化器后,导入数据 到 Weaviate。Weaviate 将使用指定的模型为文本对象生成嵌入。

py docs  API 文档
更多信息文档中的代码片段反映了最新的客户端库和 Weaviate 数据库版本。请查看 发行说明 以获取特定版本。

如果某个片段无法工作或您有任何反馈,请打开一个 GitHub issue
source_objects = [
{"title": "The Shawshank Redemption", "description": "A wrongfully imprisoned man forms an inspiring friendship while finding hope and redemption in the darkest of places."},
{"title": "The Godfather", "description": "A powerful mafia family struggles to balance loyalty, power, and betrayal in this iconic crime saga."},
{"title": "The Dark Knight", "description": "Batman faces his greatest challenge as he battles the chaos unleashed by the Joker in Gotham City."},
{"title": "Jingle All the Way", "description": "A desperate father goes to hilarious lengths to secure the season's hottest toy for his son on Christmas Eve."},
{"title": "A Christmas Carol", "description": "A miserly old man is transformed after being visited by three ghosts on Christmas Eve in this timeless tale of redemption."}
]

collection = client.collections.use("DemoCollection")

with collection.batch.fixed_size(batch_size=200) as batch:
for src_obj in source_objects:
# The model provider integration will automatically vectorize the object
batch.add_object(
properties={
"title": src_obj["title"],
"description": src_obj["description"],
},
# vector=vector # Optionally provide a pre-obtained vector
)
if batch.number_errors > 10:
print("Batch import stopped due to excessive errors.")
break

failed_objects = collection.batch.failed_objects
if failed_objects:
print(f"Number of failed imports: {len(failed_objects)}")
print(f"First failed object: {failed_objects[0]}")
重用现有向量

如果您已经有兼容的模型向量可用,您可以将其直接提供给 Weaviate。这在您已经使用相同的模型生成了嵌入并希望在 Weaviate 中使用它们(例如,从另一个系统迁移数据)时很有用。

搜索

配置向量化器后,Weaviate 将使用指定的 NVIDIA 模型执行向量和混合搜索操作。

Embedding integration at search illustration

当您执行 向量搜索 时,Weaviate 将文本查询转换为嵌入,使用指定的模型,并返回数据库中最相似的对象。

以下查询返回数据库中 n 个最相似的对象,由 limit 设置。

py docs  API 文档
更多信息文档中的代码片段反映了最新的客户端库和 Weaviate 数据库版本。请查看 发行说明 以获取特定版本。

如果某个片段无法工作或您有任何反馈,请打开一个 GitHub issue
collection = client.collections.use("DemoCollection")

response = collection.query.near_text(
query="A holiday film", # The model provider integration will automatically vectorize the query
limit=2
)

for obj in response.objects:
print(obj.properties["title"])
什么是混合搜索?

混合搜索执行向量搜索和关键字 (BM25) 搜索,然后 组合结果 以返回数据库中最佳匹配的对象。

当您执行 混合搜索 时,Weaviate 将文本查询转换为嵌入,使用指定的模型,并返回数据库中得分最高的对象。

以下查询返回数据库中 n 个得分最高的对象,由 limit 设置。

py docs  API 文档
更多信息文档中的代码片段反映了最新的客户端库和 Weaviate 数据库版本。请查看 发行说明 以获取特定版本。

如果某个片段无法工作或您有任何反馈,请打开一个 GitHub issue
collection = client.collections.use("DemoCollection")

response = collection.query.hybrid(
query="A holiday film", # The model provider integration will automatically vectorize the query
limit=2
)

for obj in response.objects:
print(obj.properties["title"])

参考

可用模型

您可以使用任何文本嵌入模型 在 NVIDIA NIM API 上 与 Weaviate 一起使用。

默认模型是 nvidia/nv-embed-v1

更多资源

其他集成

代码示例

配置完集成后,Weaviate 中的数据管理和搜索操作与任何其他集合的工作方式相同。请参阅以下非模型特定的示例

外部资源

问题和反馈

如果您有任何问题或反馈,请在 用户论坛 中告诉我们。