由人工智能驱动的混合搜索正在封闭测试中。 加入候补名单,抢先体验!

前往主页Meilisearch 的标志
返回文章
2024 年 5 月 7 日

Meilisearch 1.8

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

Carolina Ferreira
Carolina FerreiraMeilisearch 开发者布道师@CarolainFG
Meilisearch 1.8

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@6543Charabia 的工作。

特别感谢我们的 SDK 维护者,感谢他们让 Meilisearch 可以支持如此多的语言。🫶


这就是 v1.8 的总结!此版本帖子重点介绍了最重要的更新。有关详尽列表,请阅读 Github 上的更新日志

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

如有其他任何问题,请加入我们在 Discord 上的开发者社区。

Meilisearch 1.12

Meilisearch 1.12

Meilisearch 1.12 带来了显着的索引速度改进,并引入了新的 API,用于禁用前缀搜索和分面搜索,以及检索任务批次。

Laurent Cazanove
Laurent Cazanove2024 年 12 月 23 日
Meilisearch Q4 2024 release wrap-up

Meilisearch 2024 年第四季度发布总结

Meilisearch 第四季度发布包括更快的搜索速度、对 UI 中设置的更多控制以及一个新区域。

Maya Shin
Maya Shin2024 年 11 月 27 日
Meilisearch 1.11

Meilisearch 1.11

Meilisearch 1.11 通过关键改进(包括二进制量化),将 AI 驱动的搜索推向稳定化。此版本还根据用户反馈增强了联合搜索功能。

Carolina Ferreira
Carolina Ferreira2024 年 10 月 29 日