使用 OpenAI 嵌入的语义搜索
简介
本指南将指导您完成使用 OpenAI 嵌入设置 Meilisearch 的过程,以启用语义搜索功能。通过利用 Meilisearch 的 AI 功能和 OpenAI 的嵌入 API,您可以增强搜索体验并检索更相关的结果。
需求
要遵循本指南,您需要
- 一个 Meilisearch Cloud 项目,其版本为 1.10 或更高版本,并已激活向量存储。
- 一个 OpenAI 账户,并拥有用于生成嵌入的 API 密钥。您可以在 OpenAI 注册 OpenAI 账户。
- 不需要后端。
设置 Meilisearch
要设置 Meilisearch 中的嵌入器,您需要根据您的设置进行配置。您可以参考 Meilisearch 文档 了解有关更新嵌入器设置的更多详细信息。
OpenAI 提供了三种主要的嵌入模型:
text-embedding-3-large
:3072 维text-embedding-3-small
:1536 维text-embedding-ada-002
:1536 维
以下是如何为 OpenAI 配置嵌入器的一个示例:
{
"openai": {
"source": "openAi",
"apiKey": "<OpenAI API Key>",
"dimensions": 1536,
"documentTemplate": "<Custom template (Optional, but recommended)>",
"model": "text-embedding-3-small"
}
}
在此配置中:
source
: 指定嵌入器的来源,此处设置为 "openAi" 以使用 OpenAI 的 API。apiKey
: 将<OpenAI API Key>
替换为您实际的 OpenAI API 密钥。dimensions
: 指定嵌入的维度。对于text-embedding-3-small
和text-embedding-ada-002
设置为 1536,对于text-embedding-3-large
设置为 3072。documentTemplate
: 可选地,您可以提供一个 自定义模板,用于从您的文档生成嵌入。model
: 指定用于生成嵌入的 OpenAI 模型。从text-embedding-3-large
、text-embedding-3-small
或text-embedding-ada-002
中选择。
配置完嵌入器设置后,Meilisearch 将自动为您的文档生成嵌入,并将它们存储在向量存储中。
请注意,OpenAI 有速率限制,由 Meilisearch 管理。如果您有免费账户,索引过程可能需要一些时间,但 Meilisearch 将使用重试策略来处理它。
建议监控任务队列,以确保一切正常运行。您可以使用云 UI 或 Meilisearch API 访问任务队列。
测试语义搜索
设置好嵌入器后,您现在可以使用 Meilisearch 执行语义搜索。当您发送搜索查询时,Meilisearch 将使用配置的嵌入器为查询生成嵌入,然后使用它在向量存储中查找语义上最相似的文档。要执行语义搜索,您只需发出正常的搜索请求,但要包含混合参数
{
"q": "<Query made by the user>",
"hybrid": {
"semanticRatio": 1,
"embedder": "openai"
}
}
在此请求中:
q
: 表示用户的搜索查询。hybrid
: 指定混合搜索的配置。semanticRatio
: 允许您控制语义搜索和传统搜索之间的平衡。值为 1 表示纯语义搜索,值为 0 表示全文本搜索。您可以调整此参数以实现混合搜索体验。embedder
: 用于生成嵌入的嵌入器名称。确保使用与嵌入器配置中指定的相同名称,在本例中为 "openai"。
您可以使用 Meilisearch API 或客户端库执行搜索并检索基于语义相似度的相关文档。
结论
通过遵循本指南,您现在应该已经将 Meilisearch 设置为使用 OpenAI 嵌入,从而能够在您的应用程序中利用语义搜索功能。Meilisearch 的自动批处理和高效的嵌入处理使其成为将语义搜索集成到您的项目中的有力选择。
要进一步探索嵌入器的配置选项,请参阅 有关嵌入器设置可能性的详细文档。