使用Weaviate与OpenAI向量化模块进行混合搜索
本笔记本适用于以下场景: * 您的数据尚未进行向量化 * 您希望在数据上运行混合搜索(了解更多) * 您希望使用Weaviate与OpenAI模块(text2vec-openai)为您生成向量嵌入。
本笔记本将带您完成一个简单的流程,设置Weaviate实例,连接到它(使用OpenAI API密钥),配置数据模式,导入数据(这将自动生成您数据的向量嵌入),并运行混合搜索(向量搜索和BM25搜索的混合)。
这是客户常见的需求,他们希望在安全环境中存储和搜索我们的嵌入,并支持生产用例,如聊天机器人、主题建模等。
什么是Weaviate
Weaviate是一个开源的向量搜索引擎,它将数据对象与它们的向量一起存储。这允许将向量搜索与结构化过滤 相结合。
Weaviate使用KNN算法创建一个向量优化的索引,使您的查询运行非常快。了解更多信息,请点击这里。
Weaviate让您可以使用您喜欢的ML模型,并且可以无缝扩展到数十亿个数据对象。
部署选项
无论您的场景或生产设置如何,Weaviate都有适合您的选项。您可以在以下设置中部署Weaviate: * 自托管 - 您可以在本地使用docker部署Weaviate,或者在任何您想要的服务器上部署。 * SaaS - 您可以使用Weaviate云服务(WCS)来托管您的Weaviate实例。 * 混合SaaS - 您可以在您自己的私有云服务中部署Weaviate。
编程语言
Weaviate提供四种客户端库,允许您从您的应用程序进行通信: * Python * JavaScript * Java * Go
此外,Weaviate还有一个REST层。基本上,您可以从支持REST请求的任何语言调用Weaviate。
演示流程
演示流程如下: - 先决条件设置:创建一个Weaviate实例并安装所需的库 - 连接:连接到您的Weaviate实例 - 模式配置:配置数据的模式 - 注意:在这里我们可以定义要使用哪个OpenAI嵌入模型 - 注意:在这里我们可以配置要索引哪些属性 - 导入数据:加载演示数据集并将其导入Weaviate - 注意:导入过程将根据模式中的配置自动索引您的数据 - 注意:您不需要显式地对数据进行向量化,Weaviate将与OpenAI通信来为您执行此操作 - 运行查询:查询 - 注意:您不需要显式地对查询进行向量化,Weaviate将与OpenAI通信来为您执行此操作
完成本笔记后,您应该对如何设置和使用向量数据库有基本的了解,并可以继续进行更复杂的用例,利用我们的嵌入。
Weaviate中的OpenAI模块
所有Weaviate 实例都配备有text2vec-openai模块。
该模块负责在导入(或任何CRUD操作)期间处理向量化,以及在运行查询时。
无需手动向量化数据
这对您来说是个好消息。使用text2vec-openai,您无需手动向量化您的数据,因为Weaviate会在必要时为您调用OpenAI。
您只需要: 1. 在连接到Weaviate客户端时提供您的OpenAI API密钥 2. 在模式中定义要使用的OpenAI向量化器
先决条件
在开始这个项目之前,我们需要设置以下内容:
- 创建一个
Weaviate
实例 - 安装库
weaviate-client
datasets
apache-beam
- 获取您的OpenAI API密钥
=========================================================== ### 创建 Weaviate 实例
要创建 Weaviate 实例,我们有两个选项:
- (推荐路径)Weaviate 云服务 - 在云中托管您的 Weaviate 实例。免费的沙箱应该足够用于这个示例。
- 使用 Docker 在本地安装和运行 Weaviate。
选项 1 - WCS 安装步骤
使用 Weaviate
云服务(WCS)创建一个免费的 Weaviate
集群。 1. 创建一个免费账户并/或登录 WCS
2. 使用以下设置创建一个 Weaviate 集群
: * 沙箱:Sandbox Free
*
Weaviate 版本:使用默认值(最新版) * OIDC 认证:Disabled
3.
您的实例应该在一两分钟内准备就绪 4. 记下
集群 ID
。链接将带您到您集群的完整路径(稍后您将需要连接到它)。它应该类似于:https://your-project-name.weaviate.network
选项 2 - 使用 Docker 在本地安装 Weaviate 实例
使用 Docker 在本地安装和运行 Weaviate。 1. 下载
./docker-compose.yml 文件 2.
然后打开您的终端,导航到 docker-compose.yml
文件所在的位置,并使用以下命令启动 Docker:docker-compose up -d
3.
一旦准备就绪,您的实例应该在
http://localhost:8080 上可用
注意:要关闭 Docker 实例,您可以运行:docker-compose down
了解更多
要了解更多关于使用 Docker 部署 Weaviate 的信息,请参阅安装文档。
=========================================================== ## 安装所需库
在运行此项目之前,请确保安装以下库:
Weaviate Python客户端
Weaviate Python客户端 允许您从Python项目中与Weaviate实例进行通信。
datasets & apache-beam
要加载示 例数据,您需要 datasets
库及其依赖项 apache-beam
。
# 安装适用于 Python 的 Weaviate 客户端
!pip install weaviate-client>3.11.0
# 安装数据集和apache-beam以加载示例数据集
!pip install datasets apache-beam
=========================================================== ## 准备您的OpenAI API密钥
OpenAI API密钥
用于在导入数据时对数据进行向量化,并用于运行查询。
如果您没有OpenAI API密钥,可以从https://beta.openai.com/account/api-keys获取一个。
获取密钥后,请将其添加到您的环境变量中,名称为 OPENAI_API_KEY
。
# 导出 OpenAI API 密钥
!export OPENAI_API_KEY="your key"
# 测试您的OpenAI API密钥是否已正确设置为环境变量。
# 注意:如果您在本地运行此笔记本,您需要重新加载终端和笔记本,以使环境变量生效。
import os
# 注意:或者,您也可以像这样设置一个临时的环境变量:
# os.environ['OPENAI_API_KEY'] = 'your-key-goes-here'
if os.getenv("OPENAI_API_KEY") is not None:
print ("OPENAI_API_KEY is ready")
else:
print ("OPENAI_API_KEY environment variable not found")
连接到您的Weaviate实例
在本节中,我们将:
- 测试环境变量
OPENAI_API_KEY
- 确保您已完成#准备您的OpenAI API密钥中的步骤 - 使用您的
OpenAI API密钥
连接到您的Weaviate - 并测试客户端连接
客户端
完成这一步之后,client