Meilisearch 1.8
Meilisearch 1.8 带来了负关键词搜索、搜索鲁棒性和 AI 搜索的改进,包括新的嵌入器。

Meilisearch 1.8 也已在 Meilisearch Cloud 上提供——立即升级!
新增:负搜索
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" }'
实验性功能:改进的混合搜索
AI 搜索是一项实验性功能。请在这个 GitHub 讨论中提供反馈。
新的 Ollama 嵌入器
Meilisearch 1.8 引入了对 Ollama 模型 的支持。在您的索引设置中配置嵌入器
"default": { "source": "ollama", // 👈 Use the ollama source "url": "http://localhost: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 嵌入器的文档。
新的嵌入器设置:分布偏移
这是一个用于自定义模型的高级 API。OpenAI 和 Hugging Face 模型不需要此设置。
根据嵌入模型,向量嵌入并非始终在 向量空间内均匀分布。当向量过度聚集时,语义搜索分数可能会非常接近排名。由于语义分数被压缩,混合结果可能具有次优的相关性。
为了解决这个问题,您现在可以使用仿射变换来偏移结果的分布。此变换标准化语义分数,以防止它们聚集过高或过紧,从而使它们更易于与 关键词分数相比较。
"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 的均值附近。
- 西格玛值确定了排名分数与均值(标准差)的离散程度。上面代码示例中提供的西格玛意味着在偏移分布之前,结果往往具有与均值 0.3 的平均距离。
这允许更有效地比较语义搜索结果和关键词搜索结果之间的 _rankingScore
,从而改进结果排名。
重大变更:精简的 API 响应
为了加快搜索响应速度并减少带宽使用,Meilisearch v1.8 不再在搜索响应中返回以下字段
- 返回查询向量的
vector
字段 - 当您向搜索查询添加 `”showRankingScoreDetails”: true”` 时返回的
vectorSort
对象中包含的value
字段 _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
👉 此限制不会影响搜索性能。它仅控制可以同时排队的搜索请求数量,以增强系统安全性。
请在这个 GitHub 讨论中提供关于并发搜索请求限制的反馈。
贡献者致谢
我们衷心感谢所有参与此版本的社区成员。我们要感谢:@availhang、@hack3ric、@jakobklemm、@mohsen-alizadeh、@redistay、@rohankmr414、@shuangcui、@Toromyx、@6543 对 Meilisearch 的帮助,以及 @Gusted、@mosuka、@6543 对 Charabia 的工作。
特别感谢我们的 SDK 维护者,感谢他们使 Meilisearch 可以在如此多的语言中使用。🫶
v1.8 的内容就是这些!此版本发布文章重点介绍了最重要的更新。有关详尽的列表,请阅读 Github 上的更新日志。
订阅我们的 新闻通讯,随时了解 Meilisearch 的一切动态。要了解有关 Meilisearch 未来并帮助塑造它的更多信息,请查看我们的 路线图 并参与我们的 产品讨论。
如有其他任何问题,请加入我们在 Discord 上的开发者社区。