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

Meilisearch 1.8 也可在 Meilisearch 云上使用——立即升级!
新增:负面搜索
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 } }
- 平均值(mean)表示语义搜索分数密集分布的中心点。在提供的代码示例中,该设置表明此模型的语义分数倾向于集中在 0.7 左右。
- 标准差(sigma)值决定了排名分数与平均值的离散程度(标准差)。上面代码示例中提供的标准差意味着在偏移分布之前,结果与平均值的平均距离倾向于为 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 的开发者社区。