想要更好地控制您的搜索设置?了解我们的灵活的基础设施定价

回到主页Meilisearch 的标志
返回文章

Meilisearch 1.8

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

2024年5月7日阅读3分钟
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://: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 字段,它返回查询向量
  • value 字段,包含在 vectorSort 对象中,当您在搜索查询中添加`”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支持如此多语言。🫶


1.8版发布到此结束!本文重点介绍了最重要的更新。如需完整列表,请阅读GitHub上的更新日志

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

如有其他需求,请加入我们的开发者社区Discord

Meilisearch 1.16

Meilisearch 1.16

Meilisearch 1.16 引入了多模态嵌入和新的 API,用于在实例之间传输数据。

Laurent Cazanove
Laurent Cazanove2025年8月5日
Meilisearch 1.15

Meilisearch 1.15

Meilisearch 1.15 引入了新的拼写容错设置、字符串过滤器比较运算符,并改进了对中文的支持。

Carolina Ferreira
Carolina Ferreira2025年6月10日
Meilisearch 1.14

Meilisearch 1.14

Meilisearch 1.14 引入了新的实验性功能,包括复合嵌入器和嵌入缓存以提高性能。它还增加了核心功能,例如细粒度可过滤属性和按 ID 批量检索文档。

Carolina Ferreira
Carolina Ferreira2025年4月14日
© . This site is unofficial and not affiliated with Meilisearch.