文档模板最佳实践
当使用 AI 驱动的搜索时,Meilisearch 通过使用每个文档的数据填充您的嵌入器的 documentTemplate
来生成提示。您的提示越好,您的搜索结果就越相关。
本指南向您展示了编写 documentTemplate
时应该做什么和应该避免什么。
示例文档
查看电影数据库中的此文档
{
"id": 2,
"title": "Ariel",
"overview": "Taisto Kasurinen is a Finnish coal miner whose father has just committed suicide and who is framed for a crime he did not commit. In jail, he starts to dream about leaving the country and starting a new life. He escapes from prison but things don't go as planned...",
"genres": [
"Drama",
"Crime",
"Comedy"
],
"poster": "https://image.tmdb.org/t/p/w500/ojDg0PGvs6R9xYFodRct2kdI6wC.jpg",
"release_date": 593395200
}
不要使用默认的 documentTemplate
在您的嵌入器配置中使用自定义的 documentTemplate
值。
默认的 documentTemplate
包含所有具有非 null
值的可搜索字段。在大多数情况下,这会增加噪声和比嵌入器提供相关搜索结果所需的信息更多的信息。
仅包含高度相关的信息
查看您的文档并确定最相关的字段。示例文档的一个好的 documentTemplate
可以是
"A movie called {{doc.title}} about {{doc.overview}}"
在示例文档中,poster
和 id
包含语义重要性很小的数据,可以安全地排除。genres
和 release_date
中的数据对于过滤器非常有用,但对于这部特定的电影来说,信息量很少。
这留下了两个相关字段:title
和 overview
。
保持提示简短
为了获得最佳结果,请将提示保持在 15 到 45 个单词之间
"A movie called {{doc.title}} about {{doc.overview | truncatewords: 20}}"
在示例文档中,仅 overview
就有 49 个单词。使用 Liquid 的 truncate
或 truncatewords
来缩短它。
简短的提示没有足够的信息供嵌入器正确理解查询上下文。相反,冗长的提示提供的信息过多,使嵌入器难以识别文档的真正相关之处。
结论
在本文中,您看到了生成提示以获得相关 AI 驱动的搜索结果的主要步骤
- 不要使用默认的
documentTemplate
- 仅包含相关数据
- 截断长字段