新功能:否定搜索
Meilisearch 1.8 允许您使用 -
运算符从搜索结果中排除特定词语。
例如,要查找包含“room”但不是“escape”的文档,请在“escape”之前放置一个 -
。
curl \
-X POST 'https://edge.meilisearch.com/indexes/places/search' \
-H 'Content-Type: application/json' \
--data-binary '{ "q": "-escape room" }'
实验性功能:改进的混合搜索
新的 Ollama 嵌入器
Meilisearch 1.8 引入了对 Ollama 模型的支持。您可以在索引设置中 配置嵌入器
"default": {
"source": "ollama", // 👈 Use the ollama source
"url": "https://:11434/api/embeddings",
// ☝️ optional, fetched from MEILI_OLLAMA_URL environment variable if missing
"apiKey": "<your-api-key>",
// ☝️ optional
"model": "nomic-embed-text",
"documentTemplate": "{{doc.field_name}}" // like for openAI and huggingFace sources
}
新的 REST 嵌入器
从 Meilisearch 1.8 开始,您可以使用任何可以通过 REST API 访问的嵌入器。以下是如何使用 rest
源配置 OpenAI 嵌入器。
{
"source": "rest",
"apiKey": "<your-openai-api-key>",
"dimensions": 1536,
"url": "https://api.openai.com/v1/embeddings",
"query": {
"model": "text-embedding-ada-002"
},
"inputField": ["input"],
"inputType": "textArray",
"pathToEmbeddings": ["data"],
"embeddingObject": ["embedding"]
}
有关 API 和可用参数的更多详细信息,请参阅有关 REST 嵌入器 的文档。
新的嵌入器设置:分布偏移
根据嵌入模型的不同,向量嵌入 并不总是均匀地分布在 向量空间 中。当向量过于集中时,语义搜索评分可能排名非常接近。由于语义评分被压缩,混合结果可能具有次优的相关性。
为了解决此问题,您现在可以通过仿射变换来改变结果的分布。此变换会标准化语义评分,以防止它们过高或过紧地聚集,使其更可比 关键字评分。
"default": {
"source": "huggingFace",
"model": "MODEL_NAME",
"distribution": { // describes the natural distribution of results
"mean": 0.7, // mean value
"sigma": 0.3 // standard deviation
}
}
- 均值 值表示您观察到语义搜索评分密集聚集的中心点。在提供的代码示例中,该设置表明此模型的语义评分倾向于聚集在 0.7 的平均值附近。
- sigma 值决定了排名评分从均值(标准差)的扩散程度。上面代码示例中提供的 sigma 意味着在改变分布之前,结果的平均距离到均值大约为 0.3。
这允许更有效地比较语义和关键字搜索结果之间的 _rankingScore
,从而改善结果排名。
重大更新:修剪的 API 响应
为了加快搜索响应速度并减少带宽使用,Meilisearch v1.8 不再在搜索响应中返回以下字段:
vector
字段,它返回查询向量- 包含在
vectorSort
对象中的value
字段,当您在搜索查询中添加“"showRankingScoreDetails": true"
”时会返回此字段 _semanticScore
字段;它的值与_rankingScore
相同,您应该使用后者。在搜索参数中设置"showRankingScore": true"
搜索鲁棒性改进
新的搜索截止设置
为了提高稳定性和性能,Meilisearch 会自动终止任何超过 1500 毫秒的搜索请求。
要调整此超时阈值,您可以自定义 searchCutoffMs
设置。
curl \
-X PATCH 'https://edge.meilisearch.com/indexes/movies/settings' \
-H 'Content-Type: application/json' \
--data-binary '{
"searchCutoffMs": 150
}'
实验性功能:并发搜索请求限制
此版本引入了并发搜索请求的限制,以防止 Meilisearch 使用过多的 RAM 并崩溃。默认队列限制设置为 1000 个请求。
要修改此限制,请使用 --experimental-search-queue-size
选项重新启动您的自托管实例。
./meilisearch --experimental-search-queue-size 100
👉 此限制不会影响搜索性能。它只控制可以同时排队的搜索请求数量,以提高系统安全性。
贡献者致谢
我们非常感谢所有参与此版本的社区成员。我们要感谢:@availhang、@hack3ric、@jakobklemm、@mohsen-alizadeh、@redistay、@rohankmr414、@shuangcui、@Toromyx、@6543 对 Meilisearch 的帮助,以及 @Gusted、@mosuka、@6543 对 Charabia 的工作。
特别感谢我们的 SDK 维护者,感谢他们的努力,Meilisearch 才能在如此多的语言中可用。🫶
v1.8 的发布就到这里了!这篇文章重点介绍了最重要的更新。要查看完整列表,请阅读 Github 上的变更日志。
订阅我们的 新闻通讯,随时了解 Meilisearch 的所有动态。要了解更多有关 Meilisearch 的未来并帮助塑造它,请查看我们的 路线图 并参与我们的 产品讨论。
其他任何问题,请加入我们的开发者社区,访问 Discord。