利用 Mistral 词嵌入进行语义搜索
介绍
本指南将引导你完成使用 Mistral 词嵌入设置 Meilisearch 的过程,以启用语义搜索功能。通过利用 Meilisearch 的 AI 功能和 Mistral 的词嵌入 API,你可以增强搜索体验并获得更相关的搜索结果。
要求
若要按照本指南进行操作,你需要
- 使用矢量存储且运行版本 1.10 或更高版本的 Meilisearch Cloud 项目。
- 一个拥有用于生成嵌入 API 密钥的 Mistral 帐户。您可以在 Mistral 注册 Mistral 帐户。
- 不需要后端。
设置 Meilisearch
要设置 Meilisearch 中的嵌入器,您需要根据您的设置对它进行配置。您可以参阅 Meilisearch 文档 了解有关更新嵌入器设置的更多详情。
在使用 Mistral 生成嵌入时,您需要使用模型 mistral-embed
。与某些其他服务不同,Mistral 目前仅提供一个嵌入模型。
以下是 Mistral 的嵌入器设置示例
{
"mistral": {
"source": "rest",
"apiKey": "<Mistral API Key>",
"dimensions": 1024,
"documentTemplate": "<Custom template (Optional, but recommended)>",
"url": "https://api.mistral.ai/v1/embeddings",
"request": {
"model": "mistral-embed",
"input": ["{{text}}", "{{..}}"]
},
"response": {
"data": [
{
"embedding": "{{embedding}}"
},
"{{..}}"
]
}
}
}
在此配置中
source
: 指定嵌入器的源,为使用 REST API 设置为“rest”。apiKey
: 使用您实际的 Mistral API 密钥替换<Mistral API Key>
。dimensions
: 指定嵌入的维度,为mistral-embed
模型设置 1024。documentTemplate
: 可选择提供一个 自定模板 以根据您的文档生成嵌入。url
: 指定 Mistral API 端点的 URL。request
: 定义 Mistral API 的请求结构,包括模型名称和输入参数。response
: 定义 Mistral API 的预期响应结构,包括嵌入数据。
在配置了嵌入器设置后,Meilisearch 将自动为您生成嵌入并将其存储在矢量存储中。
请注意,大多数第三方工具都有速率限制,由 Meilisearch 管理。如果您有免费帐户,则索引处理可能需要一些时间,但 Meilisearch 将通过重试策略来处理。
建议监控任务队列以确保一切都正常运行。可使用 Cloud UI 或访问 Meilisearch API 来访问任务队列
测试语义搜索
嵌入器设置完毕,现在可以通过 Meilisearch 执行语义搜索。当发送搜索查询时,Meilisearch 会使用已配置的嵌入器为查询生成嵌入,然后使用它在向量存储中查找语义最相似的文档。要执行语义搜索,只需进行常规搜索请求,但包括混合参数
{
"q": "<Query made by the user>",
"hybrid": {
"semanticRatio": 1,
"embedder": "mistral"
}
}
在这个请求中
q
:表示用户的搜索查询。hybrid
:指定混合搜索的配置。semanticRatio
:允许控制语义搜索和传统搜索之间的平衡。值 1 表示纯语义搜索,而值 0 表示全文搜索。可调整此参数来实现混合搜索体验。embedder
:用于生成嵌入的嵌入器的名称。请确保使用嵌入器配置中指定的相同名称,在本例中为“mistral”。
可使用 Meilisearch API 或客户端库根据语义相似性来执行搜索和检索相关文档。
结论
按照本指南,现在应已将 Meilisearch 设置为具有 Mistral 嵌入,以便在应用中利用语义搜索功能。Meilisearch 的自动批处理和对嵌入的高效处理使其成为在项目中集成语义搜索功能的有力选择。
要进一步了解嵌入器的配置选项,请查阅 关于嵌入器设置选项的详细文档。