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": "https://127.0.0.1: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 上的开发者社区。