🚀
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": "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 嵌入器 的文档。

新的嵌入器设置:分布偏移

💡
这是用于自定义模型的高级 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 的平均值附近。
  • 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

👉 此限制不会影响搜索性能。它只控制可以同时排队的搜索请求数量,以提高系统安全性。

💬
请在此 GitHub 讨论 中提供有关并发搜索请求限制的反馈。

贡献者致谢

我们非常感谢所有参与此版本的社区成员。我们要感谢:@availhang@hack3ric@jakobklemm@mohsen-alizadeh@redistay@rohankmr414@shuangcui@Toromyx@6543 对 Meilisearch 的帮助,以及 @Gusted@mosuka@6543Charabia 的工作。

特别感谢我们的 SDK 维护者,感谢他们的努力,Meilisearch 才能在如此多的语言中可用。🫶


v1.8 的发布就到这里了!这篇文章重点介绍了最重要的更新。要查看完整列表,请阅读 Github 上的变更日志

订阅我们的 新闻通讯,随时了解 Meilisearch 的所有动态。要了解更多有关 Meilisearch 的未来并帮助塑造它,请查看我们的 路线图 并参与我们的 产品讨论

其他任何问题,请加入我们的开发者社区,访问 Discord