检索相关搜索结果
本指南向您展示如何使用相似文档端点来创建 AI 驱动的电影推荐工作流程。
首先,您将创建一个嵌入器并将文档添加到您的索引。然后,您将执行搜索,并使用排名靠前的结果的主键来检索数据库中相似的电影。
先决条件
- 一个正在运行的 Meilisearch 项目
- 一个 tier >=2 OpenAI API 密钥
创建一个新索引
创建一个名为 movies
的索引,并将此 movies.json
数据集添加到其中。如有必要,请查阅入门指南,以获取有关索引创建的更多说明。
数据集中的每个文档代表一部电影,并具有以下结构
id
:数据库中每个文档的唯一标识符title
:电影的标题overview
:电影情节的简要摘要genres
:与电影相关的类型数组poster
:电影海报图像的 URLrelease_date
:电影的上映日期,以 Unix 时间戳表示
配置嵌入器
接下来,使用 Cloud UI 配置 OpenAI 嵌入器
您也可以使用 /settings/embedders
API 子路由来配置您的嵌入器
curl -X PATCH 'MEILISEARCH_URL/indexes/movies/settings'
-H 'Content-Type: application/json'
-H 'Authorization: Bearer MEILISEARCH_API_KEY'
--data-binary '{
"embedders": {
"movies-text": {
"source": "openAi",
"apiKey": "OPENAI_API_KEY",
"model": "text-embedding-3-small",
"documentTemplate": "A movie titled '{{doc.title}}' released in {{ doc.release_date }}. The movie genres are: {{doc.genres}}. The story is about: {{doc.overview|truncatewords: 20}}"
}
}
}'
将 MEILISEARCH_URL
、MEILISEARCH_API_KEY
和 OPENAI_API_KEY
替换为您应用程序中的相应值。
Meilisearch 将开始为数据集中的所有电影生成嵌入。使用返回的 taskUid
来跟踪此任务的进度。完成后,您就可以开始搜索了。
执行混合搜索
添加文档并生成所有嵌入后,您可以执行搜索
curl -X POST 'MEILISEARCH_URL/indexes/INDEX_NAME/search' \
-H 'content-type: application/json' \
-H 'Authorization: Bearer DEFAULT_SEARCH_API_KEY' \
--data-binary '{
"q": "batman",
"hybrid": {
"embedder": "EMBEDDER_NAME"
}
}'
此请求返回电影列表。选择排名靠前的结果,并记下其主键在 id
字段中。在本例中,它是电影“蝙蝠侠”,id
为 192。
返回相似文档
将“蝙蝠侠”的 id
传递给索引的 /similar
路由,指定 movies-text
作为您的嵌入器
curl \
-X POST 'MEILISEARCH_URL/indexes/movies/similar' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer DEFAULT_SEARCH_API_KEY' \
--data-binary '{
"id": 192,
"embedder": "EMBEDDER_NAME"
}'
Meilisearch 将返回一个列表,其中包含与您选择的电影最相似的 20 个文档。然后,您可以选择向用户展示其中一些相似的结果,向他们推荐可能也感兴趣的其他电影。
结论
恭喜!您已成功使用 Meilisearch 构建了一个 AI 驱动的电影搜索和推荐系统,通过:
- 设置 Meilisearch 项目并将其配置为 AI 驱动的搜索
- 实施混合搜索,结合关键词和语义搜索能力
- 集成 Meilisearch 的相似性搜索以实现电影推荐
在实际应用中,您现在将开始把这个工作流程集成到前端,例如这篇 Meilisearch 官方博客文章 中所示。