AI 驅動的混合搜尋功能正在封閉測試中。 加入候補名單 以搶先體驗!

前往首頁Meilisearch 的標誌
返回文章
2023 年 8 月 1 日

v1.3 版本的新功能有哪些?

v1.3 引入了許多令人興奮的功能,包括向量搜尋、排名分數詳情、搜尋篩選值以及在查詢時可搜尋的欄位。

Carolina Ferreira
Carolina FerreiraMeilisearch 開發人員倡導者@CarolainFG
What’s new in v1.3?

讓我們來看看 Meilisearch 最新更新中的一些最重要的變化。我們將在本篇文章中介紹主要變化,但您也可以在 GitHub 上查看完整變更日誌

v1.3 現在已在Meilisearch Cloud上提供,包括所有實驗性功能。一鍵升級您的 Meilisearch 實例,而不會停機。

實驗性功能:向量搜尋

正在使用 LangChain 嗎?您現在可以使用 Meilisearch 向量儲存區 來利用強大的搜尋功能!

我們很高興推出向量儲存!現在,您可以使用向量嵌入(數據的數字表示)來索引和搜尋文件。對於此功能的第一個迭代,您需要使用外部工具,例如 Hugging FaceCohereOpenAI 來建立這些嵌入。查看[公告文章](/blog/vector-search-announcement/),以了解此功能的廣泛可能性和潛在應用。

此功能為實驗性功能,您可以使用新的experimental-features 端點來啟用它。

若要根據文件的向量鄰近度來搜尋文件,請確保它們包含 _vectors 欄位

curl -X POST -H 'content-type: application/json' 
  'localhost:7700/indexes/songs/documents' 
  --data-binary '[
      { "id": 0, "_vectors": [0, 0.8, -0.2], "title": "Across The Universe" },
      { "id": 1, "_vectors": [1, -0.2, 0], "title": "All Things Must Pass" },
      { "id": 2, "_vectors": [[0.5, 3, 1], [-0.2, 4, 6]], "title": "And Your Bird Can Sing" }
  ]'

儲存後,您可以結合使用新的 vector 搜尋參數與searchmulti-search路由,來搜尋向量化文件。

curl -X POST -H 'content-type: application/json' 
'localhost:7700/indexes/songs/search' 
--data-binary '{ "vector": [0, 1, 2] }'

👉 請注意,您需要使用第三方工具在查詢中產生向量。

傳回的文件包含一個 _semanticScore 欄位,表示每個文件與查詢的語義相似性或相關性。

{
  "hits": [
    { "id": 0, "_vectors": [0, 0.8, -0.2], "title": "Across The Universe", "_semanticScore": 0.6754 },
    { "id": 1, "_vectors": [1, -0.2, 0], "title": "All Things Must Pass", "_semanticScore": 0.7546 },
    { "id": 2, "_vectors": [[0.5, 3, 1], [-0.2, 4, 6]], "title": "And Your Bird Can Sing", "_semanticScore": 0.78 }
  ],
  "query": "",
  "vector": [0, 1, 2],
  "processingTimeMs": 0,
  "limit": 20,
  "offset": 0,
  "estimatedTotalHits": 2
}

此功能為實驗性功能,我們需要您的幫助來改進它!在此 GitHub 討論中分享您的意見回饋。

新功能:在搜尋時顯示排名分數

使用新的 showRankingScore 搜尋參數來查看每個文件的相關性排名分數

curl 
  -X POST 'https://127.0.0.1:7700/indexes/movies/search' 
  -H 'Content-Type: application/json' 
  --data-binary '{ "q": "Batman Returns", "showRankingScore": true }'

回應中的每個文件都將包含一個 _rankingScore 屬性,表示介於 0 和 1 之間的分數

"_rankingScore": 0.8575757575757575,

_rankingScore 越高,表示文件越相關。

實驗性功能:排名分數詳情

對於傳回的每個文件,Meilisearch 都會提供每個排名規則的排名分數詳情。此功能是 [社群參與如何豐富 Meilisearch 設計過程](/blog/from-ranking-to-scoring/) 的一個完美範例。

此功能為實驗性功能,您可以使用新的experimental-features 端點來啟用它。

showRankingScoreDetails 搜尋參數設定為 true 以查看排名分數詳情

curl 
  -X POST 'https://127.0.0.1:7700/indexes/movies/search' 
  -H 'Content-Type: application/json' 
  --data-binary '{ "q": "Batman Returns", "showRankingScoreDetails": true }'

回應應包含每個規則的相關性分數

"_rankingScoreDetails": {
  "words": {
    "order": 0,
    "matchingWords": 1,
    "maxMatchingWords": 1,
    "score": 1.0
  },
  "typo": {
    "order": 1,
    "typoCount": 0,
    "maxTypoCount": 1,
    "score": 1.0
  },
  "proximity": {
    "order": 2,
    "score": 1.0
  },
  "attribute": {
    "order": 3,
    "attributesRankingOrder": 0.8,
    "attributesQueryWordOrder": 0.6363636363636364,
    "score": 0.7272727272727273
  },
  "exactness": {
    "order": 4,
    "matchType": "noExactMatch",
    "score": 0.3333333333333333
  }
}

此功能為實驗性功能。您可以在此 GitHub 討論中分享您的意見回饋,以幫助我們改進它。

新功能:搜尋篩選值

定義您的可篩選屬性後,您可以使用新的端點 POST /indexes/{index}/facet-search搜尋篩選值

 curl 
  -X POST 'https://127.0.0.1:7700/indexes/movies/facet-search' 
  -H 'Content-Type: application/json'  
  --data-binary '{
    "facetName": "genres",
    "facetQuery": "a"
  }'

由於篩選搜尋具有容錯性並支援字首搜尋,因此上述查詢將傳回以下結果

{
    "facetHits": [
        {
            "value": "Action",
            "count": 5403
        },
        {
            "value": "Adventure",
            "count": 3020
        },
        {
            "value": "Animation",
            "count": 1969
        }
    ],
    "facetQuery": "a",
    "processingTimeMs": 0
}

若要測試此功能,請查看我們更新的電子商務範例

新功能:依計數排序篩選值

預設情況下,篩選器會依遞增字母數字順序排序。現在,您可以根據包含每個篩選值的相符文件數,以遞減順序排序篩選值。

若要依計數排序篩選器,您可以使用  篩選索引設定中的新 sortFacetValuesBy 屬性。

若要修改所有篩選器的順序,您可以使用星號 (*) 萬用字元

 curl 
  -X PATCH 'https://127.0.0.1:7700/indexes/movies/settings/faceting 
  -H 'Content-Type: application/json'  
  --data-binary '{
    "sortFacetValuesBy": {"*": "count"}
  }'

或者,您可以彈性地依計數排序單一篩選器,同時維持其他屬性的字母數字順序

 curl 
  -X PATCH 'http://127.0.0.1:7700/indexes/movies/settings/faceting 
  -H 'Content-Type: application/json'  
--data-binary '{
    "sortFacetValuesBy": {"*": "alpha", "genre": "count"}
  }'

您也可以在電子商務範例中嘗試此功能。

新功能:在查詢時可搜尋的屬性

使用新的 attributesToSearchOn 搜尋參數,您現在可以在查詢時將搜尋限制可搜尋屬性的子集。它接受一個字串陣列,表示一個或多個文件屬性

{
  "q": "adventure",
  "attributesToSearchOn": ["genre"]
}

假設有以下文件,則上述查詢只會傳回 ID 為 1 的文件。

{
    "id": 0,
    "name": "An Adventure in Space and Time",
    "genre": ["drama"]
},
{
    "id": 1,
    "name": "A Strange and Stubborn Endurance",
    "genre": ["adventure"]
}

相關性變更:屬性排名規則

在 v1.3 中,當查詢詞組在查詢中的位置越接近時,屬性排名規則會將較高的相關性指派給文件,相較之下,查詢詞組在查詢中的位置離其越遠,則相關性越低。

之前,此規則會根據詞組在屬性中的位置而非它們在搜尋查詢中的位置來衡量相關性。屬性開頭包含查詢詞組的文件被認為更相關。

請考量以下查詢:「蝙蝠俠黑暗騎士歸來」和對應的文件

{ 
    "id": 0, 
    "title": "Batman the dark knight returns" 
},
{ 
    "id": 1, 
    "title": "Dark the Batman knight returns" 
},
{ 
    "id": 2, 
    "title": "Batman returns: a retrospective", 
    "description": "The Dark knight is analyzed in this new Batman documentary" 
}

在 1.3 版之前,屬性排名規則會將文件 2 放在清單頂端,其次是文件 0 和 1,並列排名。

自 1.3 版起,順序嚴格為:文件 0、文件 1、文件 2,這提供了更自然的排名。

其他改進

  • /tasks 路由現在會使用 total 屬性顯示佇列中任務的總數。它也會根據特定篩選器顯示任務總數
  • 增強日語支援和分段
  • 改進 Prometheus /metrics 實驗性功能

貢獻者

我們非常感謝所有參與此版本的社群成員。我們要感謝:@vvv@jirutka@gentcys@cuishuang@0xflotus@roy9495Meilisearch 提供協助。

我們還要特別感謝我們的 Meilistar,@mosuka,感謝他在 Charabia 上持續改進日語支援。

結論

這就是 v1.3 的所有內容!請記得查看變更日誌以取得完整版本資訊,下次見!

您可以訂閱我們的電子報,以保持關注。若要深入瞭解 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日