日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

使用向量檢索插件(aliyun-knn)

向量檢索插件是阿里云Elasticsearch團隊自主開發的向量檢索引擎插件,基于阿里巴巴達摩院proxima向量檢索庫實現,能夠幫助您快速實現圖像搜索、視頻指紋采樣、人臉識別、語音識別和商品推薦等向量檢索場景的需求。本文介紹如何使用向量檢索插件。

背景信息

  • 應用場景

    • 阿里云Elasticsearch向量檢索引擎已成熟應用于拍立淘、阿里云圖像搜索服務、趣頭條視頻指紋采樣、猜您喜歡、搜索個性化、CrossMedia搜索等大規模生產應用場景。

    • 同時,在阿里巴巴集團內,智能開放搜索OpenSearch-向量檢索版作為阿里自研大規模分布式搜索引擎,支持淘寶、天貓、菜鳥、優酷乃至海外電商等整個集團的搜索業務。詳細信息請參見向量檢索版介紹

  • 原理

    阿里云Elasticsearch向量檢索功能基于Elasticsearch插件擴展機制實現,能夠完全兼容原生Elasticsearch版本,您無需額外的學習成本即可使用向量檢索引擎。向量索引除了支持實時增量寫入、近實時(Near Real Time,簡稱NRT)搜索查詢,還具備了所有原生Elasticsearch的分布式能力,同時支持多副本、錯誤恢復等功能。

    說明

    阿里云Elasticsearch向量檢索插件不支持通過OSS快照、DataWorks等方式進行數據遷移,建議使用Logstash方式。

  • 算法說明

    在算法上,目前向量檢索引擎已經支持了hnsw算法以及linear算法,適用于單機數據量小(全內存)的業務場景。兩種算法性能對比如下。

    表 1. hnsw算法和linear算法性能對比

    表格中為阿里云Elasticsearch 6.7.0版本環境實測數據,測試環境配置如下:

    • 機器配置:數據節點16核64 GB*2 + 100 GB SSD云盤。

    • 數據集:sift128維float向量

    • 數據總量:2千萬條。

    • 索引配置:全部采用默認參數。

    性能指標

    hnsw

    linear

    top10召回率

    98.6%

    100%

    top50召回率

    97.9%

    100%

    top100召回率

    97.4%

    100%

    延遲(p99)

    0.093s

    0.934s

    延遲(p90)

    0.018s

    0.305s

    說明

    表中的p表示百分比,例如延遲(p99)表示99%的查詢能在多少秒返回。

前提條件

  • 安裝向量檢索插件(英文名稱為aliyun-knn)。插件的默認安裝情況與阿里云Elasticsearch的實例版本和內核版本相關,具體說明如下。

    Elasticsearch版本

    內核版本

    插件安裝情況說明

    6.7.0

    1.2.0以下

    • 需要在插件配置頁面手動安裝向量檢索插件,安裝方法請參見安裝或卸載系統默認插件

    • 不支持使用script檢索和索引預熱等功能配置。如有需求,建議使用有AliES內核版本的實例,詳細信息請參見內核版本發布記錄

    • 創建向量索引時僅支持默認的SquaredEuclidean,不支持通過distance_method參數指定具體的距離度量函數。

    6.8

    7.4

    7.7

    6.7.0

    1.2.0及以上

    • 向量檢索插件默認集成在apack插件中(默認已安裝),安裝或卸載向量檢索插件都需對apack插件進行操作。詳細信息請參見使用apack插件的物理復制功能

    • 支持使用script檢索、索引預熱、擴展函數等擴展功能,但需要將內核版本升級至1.3.0及以上,具體操作請參見升級版本

    • 如果創建向量索引時遇到解析mapping報錯,請升級內核版本至1.3.0及以上后再重試。

    7.10.0

    1.4.0及以上

    • 向量檢索插件默認集成在apack插件中(默認已安裝),安裝或卸載向量檢索插件都需對apack插件進行操作。詳細信息請參見使用apack插件的物理復制功能

    • 內核小版本大于等于1.4.0時,apack插件版本已為最新版本,無需更新。使用時,可通過GET _cat/plugins?v命令獲取插件版本。

    其他版本

    不支持向量檢索功能。

    說明

    內核版本不等同于apack插件版本,使用時可通過GET _cat/plugins?v命令獲取apack插件版本。

  • 完成索引規劃。

    算法

    適用場景

    是否全內存

    其他

    hnsw

    • 單機數據量小。

    • 對延遲要求高。

    • 對召回率要求高。

    • hnsw是基于“鄰居的鄰居可能是鄰居”的核心思想,它在距離衡量算法上有一定的限制,需要滿足三角形不等式,即三角形的兩邊之和大于第三邊。例如,對于內積向量空間,由于不滿足三角形不等式,需要轉化為歐式空間或球面空間,才能使用hnsw檢索方法。

    • 建議寫入結束后,在業務低峰期定期forceMerge,有助于降低查詢延遲。

    linear

    • 暴力檢索。

    • 召回率100%。

    • 延遲與數據量成正比。

    • 效果對照。

    無 。

  • 完成集群規劃。

    規劃項

    說明

    數據節點規格(必須)

    16核64 GB及以上。

    說明

    使用aliyun-knn插件構建索引時,需要消耗大量的計算資源。由于小規格集群極易達到瓶頸,嚴重時會影響集群穩定性,因此建議您使用16核64 GB及以上規格的集群。

    節點類型

    集群中需要有獨立的專有主節點。

    集群堆外內存

    大于集群總向量數據*2。

    示例: 索引中只有一個960維float字段,索引總文檔數是400,float類型數據占4字節內存,此索引向量數據內存占用=960*400*4=1.5MB,內存空間中堆外內存>1.5*2=3MB。

    說明
    • 如果存在forcemerge操作,考慮到新老數據會出現同時占用內存的情況,請在上面公式的基礎上再乘以2。

    • 64GB及以上內存規格,堆外大小≈總內存-32G。

    寫入限流

    向量索引的構建屬于CPU密集型任務,建議業務控制寫入流量不要太高。以16核64 GB的數據節點為例,建議單節點寫入峰值控制在5000tps以內。

    同時,由于在向量索引的查詢過程中,會把索引文件全部加載到系統內存,因此建議在業務查詢期間,不要同時進行大批量的寫入,避免因節點內存緊張導致分片重啟的情況。

    說明

    以上均為預估,以業務實際的應用情況為準,建議提前進行壓測,并提供充足的內存空間。

使用限制

  • 開啟共享彈性存儲功能的6.7版本實例不支持向量檢索插件。

  • 在安裝向量檢索插件前,需要確保阿里云Elasticsearch實例的數據節點規格為16核64 GB及以上。如果不滿足,請先將數據節點規格升級至16核64 GB及以上,詳細信息請參見升配集群

  • 使用向量檢索插件的場景中,部分AliES內核的增強功能將不能使用。以物理復制功能為例,如果您使用了物理復制功能,使用向量檢索插件前,需要先關閉該功能,具體操作請參見使用apack插件的物理復制功能

  • 阿里云Elasticsearch向量檢索插件不支持通過OSS快照、DataWorks等方式進行數據遷移,建議使用Logstash方式。

創建向量索引

  1. 登錄目標阿里云Elasticsearch實例的Kibana控制臺,根據頁面提示進入Kibana主頁。
    登錄Kibana控制臺的具體操作,請參見登錄Kibana控制臺
    說明 本文以阿里云Elasticsearch 6.7.0版本為例,其他版本操作可能略有差別,請以實際界面為準。
  2. 在左側導航欄,單擊Dev Tools
  3. Console中執行如下命令,創建向量索引結構。

    PUT test
    {
      "settings": {
        "index.codec": "proxima",
        "index.vector.algorithm": "hnsw"
      },
      "mappings": {
        "_doc": {
          "properties": {
            "feature": {
              "type": "proxima_vector", 
              "dim": 2, 
              "vector_type": "float", 
              "distance_method": "SquaredEuclidean" 
            }
          }
        }
      }
    }
    說明
    • 在向量索引結構的基礎上,支持添加Elasticsearch支持的其他字段類型。

    • 如果創建向量索引時遇到解析mapping報錯:"type": "mapper_parsing_exception", "reason": "Mapping definition for [feature] has unsupported parameters: [distance_method : SquaredEuclidean],請及時升級內核版本至最新后重試。

    類型

    參數

    默認值

    含義

    setting

    index.codec

    proxima

    是否需要底層構建proxima knn索引,可選值如下:

    • proxima(推薦):底層構建proxima knn索引,支持向量檢索。

    • null:創建索引的時候,底層不構建proxima knn索引,只構建正排索引。此時,proxima_vector類型字段僅支持script檢索,不支持hnswlinear檢索。

    說明

    當數據量較大,且對查詢延遲要求不高的場景,可以把該項配置去掉或設置為null,此時可使用script檢索方式進行knn向量查詢。支持script檢索方式的版本:實例版本為6.7.0且apack插件版本≥1.2.1或實例版本為7.10.0且apack插件版本≥1.4.0。

    index.vector.algorithm

    hnsw

    指定向量檢索算法,可選值如下:

    • hnsw:hnsw算法。

    • linear:linear算法。

    index.vector.general.builder.offline_mode

    false

    指定knn索引構建是否使用離線優化模式,可選值如下:

    • false: 不使用離線優化模式。

    • true: 使用離線優化模式,寫入構建的segment碎片將會大幅度減少,提升整體寫入吞吐能力。

    說明
    • 開啟離線優化模式需要保證:實例版本為6.7.0且apack插件版本≥1.2.1或實例版本為7.10.0且apack插件版本≥1.4.0;開啟離線模式構建的索引,不支持使用script檢索數據。

    • 當一次性批量導入全量數據時,建議開啟離線優化模式。

    mapping

    type

    proxima_vector

    向量字段類型。例如:將feature字段指定為proxima_vector,說明feature為向量字段。

    dim

    2

    向量維度,必填,僅支持1~2048維。

    vector_type

    float

    向量數據類型,可選值如下:

    • float:浮點型。

    • short:短整型。

    • binary:二進制類型。

    其中binary類型為二進制類型,向量數據需要用無符號的32位十進制(uint32)數組表示,且dim必須為32的整數倍。

    例如:業務數據為64位二進制1000100100100101111000001001111101000011010010011010011010000100,那么寫入vector[-1994006369, 1128900228]

    說明

    實例版本為6.7.0且apack插件版本≥1.2.1或實例版本為7.10.0且apack插件版本≥1.4.0,向量數據類型支持以上三種類型。否則,向量數據類型僅支持float類型。

    distance_method

    SquaredEuclidean(未開方)

    距離度量函數,可選值如下:

    • SquaredEuclidean:歐氏距離(未開方)。

    • InnerProduct:內積。

    • Cosine:余弦相似度。

    • Hamming:漢明距離(僅支持binary類型)。

    說明
    • 實例版本為6.7.0且apack插件版本≥1.2.1或實例版本為7.10.0且apack插件版本≥1.4.0時,支持以上四種距離度量函數。其他版本(6.8,7.4和7.7)實例創建向量時僅支持使用默認的SquaredEuclidean,不支持通過distance_method參數指定其他距離度量函數。

    • 距離度量函數詳細說明請參見距離度量函數

    • 因Hamming函數實現比較特殊,索引使用hnsw或linear時,不支持標準的knn查詢方式,僅支持script方式,且查詢語句兼容script_score。在不同的場景下,您需要根據具體業務測試查詢語句的可用性。

    說明
    • 您可以通過GET /_cat/plugins?v命令獲取apack插件版本,如果apack插件版本不滿足要求,可提交工單,由阿里云工程師幫您升級。

    • knn向量檢索還提供高級查詢參數,詳細信息請參見高階參數

  4. 執行如下命令,添加文檔。

    POST test/_doc
    {
      "feature": [1.0, 2.0]
    }
    說明

    除binary類型外,其他類型數組長度必須與dim保持一致,而binary類型的向量數據需要轉換成無符號的32位十進制(uint32)數組表示,且dim必須為32的整數倍。

向量查詢

  • 標準檢索

    執行如下命令,對文檔進行標準檢索。

    GET test/_search
    {
      "query": {
        "hnsw": {  
          "feature": {
            "vector": [1.5, 2.5], 
            "size": 10 
          }
        }
      }
    }

    常用參數說明如下。

    參數

    說明

    hnsw

    向量查詢算法,與創建索引時指定的algorithm一致。

    vector

    查詢的向量數據,數組長度必須與創建索引時,mapping指定的dim保持一致。

    size

    指定召回的文檔數。

    說明
    • 向量檢索中的size參數與Elasticsearch自帶的size參數存在區別,前者控制向量檢索插件knn召回的文檔數,后者控制整個查詢的召回文檔數。使用時,系統會先通過向量檢索中的size參數召回topN的文檔,然后再由Elasticsearch自帶的size參數召回整個查詢的文檔,最終返回結果。

    • 建議向量檢索中的size參數值和Elasticsearch自帶的size參數值(默認值為10)保持一致。

    說明

    knn向量檢索還提供高級查詢參數,詳細信息請參見高階參數

  • script檢索

    script向量檢索僅支持在script_score方式下使用。例如使用script_score對查詢返回的每個文檔進行打分,該分數等于1/(1+l2Squared(params.queryVector, doc['feature'])) 。示例命令如下。

    GET test/_search
    {
      "query": {
        "match_all": {}
      },
      "rescore": {
        "query": {
          "rescore_query": {
            "function_score": {
              "functions": [{
                "script_score": {
                  "script": {
                      "source": "1/(1+l2Squared(params.queryVector, doc['feature'])) ", 
                      "params": {
                        "queryVector": [2.0, 2.0]
                      }
                  }
                }
              }]
            }
          }
        }
      }
    }

    knn向量script檢索不支持X-Pack提供的函數,僅支持以下函數:

    函數

    說明

    l2Squared(float[] queryVector, DocValues docValues)

    歐式算法函數。

    hamming(float[] queryVector, DocValues docValues)

    漢明距離函數。

    • cosineSimilarity(float[] queryVector, DocValues docValues)

    • cosine(float[] queryVector, DocValues docValues)

    余弦相似度函數。

    說明

    阿里云Elasticsearch 6.7版本請使用cosineSimilarity(float[] queryVector, DocValues docValues)函數,7.10版本請使用cosine(float[] queryVector, DocValues docValues)函數。

    說明
    • 使用script檢索功能,需要確保:實例版本為6.7.0且apack插件版本≥1.2.1版本或實例版本為7.10.0版本且apack插件版本≥1.4.0。您可以通過GET /_cat/plugins?v命令獲取apack插件版本,如果apack插件版本不滿足要求,可提交工單,由阿里云工程師幫您升級。

    • 函數參數:

      • float[] queryVector:用于表示查詢向量,可傳入形參和實參。

      • DocValues docValues:用于指定文檔向量。

    • script向量檢索不支持處于離線模式(index.vector.builder.offlineMode = true)下構建的索引。

  • 索引預熱(降低延遲)

    knn索引由于需要進行全內存檢索,所以在索引冷加載時會出現查詢延遲較高的情況。因此knn插件提供了索引預熱功能,可以在knn索引提供檢索服務之前,提前對knn索引進行預熱,加載到本地內存,從而大大降低冷啟動時的查詢延遲。

    • 所有向量索引實現預熱。

      POST _vector/warmup
    • 特定向量索引實現預熱能力。

      POST _vector/{indexName}/warmup
    說明
    • 使用索引預熱功能,需要確保:實例版本為6.7.0且apack插件版本≥1.2.1或實例版本為7.10.0且apack插件版本≥1.4.0。您可以通過GET _cat/plugins?v命令獲取apack插件版本,如果apack插件版本不滿足要求,可提交工單,由阿里云工程師幫您升級。

    • 如果集群中向量索引比較多且數據量比較大,業務只需要對特定索引實現向量檢索,建議只對特定向量使用預熱能力,提升內存檢索能力。

向量打分

向量檢索擁有統一的打分公式,而打分機制主要依賴距離度量函數。不同的距離函數直接性的影響檢索排序。

打分公式:

分數= 1/(向量距離函數+1)

說明
  • 向量打分機制默認使用未開方的歐式距離。

  • 在實際應用中,您可以通過查詢分數反推向量間的距離,優化向量數據,提升打分。

距離度量函數

不同的距離度量函數對應不同的打分機制,下面是aliyun-knn插件支持的度量算法:

距離函數

定義

打分公式

應用場景

示例

SquaredEuclidean歐氏距離(未開方)

歐幾里得度量(euclidean metric)也稱歐氏距離,是一個通常采用的距離定義,指在m維空間中兩個點之間的真實距離,或者向量的自然長度(即該點到原點的距離)。在二維和三維空間中的歐氏距離就是兩點之間的實際距離。

以兩個n維向量A = [A1, A2,…, An]和B= [B1, B2,…, Bn]為例:

  • 未開方歐式距離= (A1-B1)2 + (A2-B2)2 + ... + (An-Bn)2

  • 分數= 1/(距離+1)

說明

向量打分默認使用未開方的歐式距離計算。

歐氏距離能夠體現個體數值特征的絕對差異,所以更多的用于需要從維度的數值大小中體現差異的分析,例如使用用戶行為指標分析用戶價值的相似度或差異。

例如:兩個二維向量[0,0]和[1,2],未開方歐式距離= (1-0)2 + (2-0)2 = 5。

Cosine余弦相似度

余弦相似度,又稱為余弦相似性,是通過計算兩個向量的夾角的余弦值來評估它們之間的相似性。

以兩個n維向量A = [A1, A2,…, An]和B= [B1, B2,…, Bn]為例:

  • 公式如下:Cosine余弦距離

  • 分數=1/(距離+1)

余弦相似度更多的是從方向上區分差異,而對絕對的數值不敏感,更多的用于用戶對內容評分來區分興趣的相似度和差異,同時修正了用戶間可能存在的度量標準不統一的問題(因為余弦相似度對絕對數值不敏感)。

例如兩個二維向量[1,1]和[1,0],向量余弦相似度=0.707。

InnerProduct內積

內積又稱點積,是指接受在實數R上的兩個向量,并返回一個實數值標量的二元運算。

以兩個n維向量A = [A1, A2,…, An]和B= [B1, B2,…, Bn]為例:

  • 向量內積距離= A1B1+A2B2+...+AnBn

  • 分數= 1/(內積+1)

內積同時考慮了兩個向量的夾角及絕對長度。當向量歸一化后,內積與余弦相似度計算公式等價。

例如兩個二維向量[1,1]和[1,5],向量內積=1+5=6。

Hamming漢明距離(僅支持binary類型)

在信息理論中,Hamming Distance表示兩個等長字符串在對應位置上不同字符的數量,我們以d(x, y)表示字符串x和y之間的漢明距離。從另外一個方面看,漢明距離度量了通過替換字符的方式將字符串x變成y所需要的最小的替換次數。

以兩個n位的二進制編碼x和y為例:

  • d(x,y)=∑x[i]⊕y[i](i=0,1,..n-1;⊕表示異或)

  • 分數=1/(距離+1)

典型的用例包括數據通過計算機網絡傳輸時的錯誤糾正或檢測。它可以用來確定二進制字中不同字符的數目,作為估計誤差的一種方法。

例如:1011101與1001001之間的漢明距離是2。

說明

在aliyun-knn插件使用中,binary類型的向量數據需要轉換成無符號的32位十進制(uint32)數組表示,且dim必須為32的整數倍。

說明
  • 使用多種距離度量函數,需要確保:實例版本為6.7.0且apack插件版本≥1.2.1版本或實例版本為7.10.0版本且apack插件版本≥1.4.0。您可以通過GET _cat/plugins?v命令獲取apack插件版本,如果apack插件版本不滿足要求,則knn距離度量函數僅支持SquaredEuclidean歐氏距離(未開方)。如果您需要使用其他距離函數,可提交工單,由阿里云工程師幫您升級插件版本。

  • 您可以在索引mapping中,通過distance_method參數指定不同的距離度量函數。

熔斷參數

參數

描述

默認值

indices.breaker.vector.native.indexing.limit

如果堆外內存使用超過該值,寫入操作會被熔斷;等待后臺構建完成釋放內存后,寫入恢復正常。出現熔斷錯誤表示當前系統內存消耗已經過高,建議業務上降低寫入流量。

70%

indices.breaker.vector.native.total.limit

向量索引后臺構建最多使用的堆外內存比例。如果實際使用的堆外內存超過了這個比例,可能會發生shard重啟的情況。

80%

重要

向量熔斷參數配置屬于集群配置,可通過GET _cluster/settings命令查看,建議您不要調整熔斷值。

高階參數

表 2. 構建參數(hnsw)

參數

描述

默認值

index.vector.hnsw.builder.max_scan_num

用于控制構圖過程中的近鄰考察范圍,保證最壞情況的性能。

100000

index.vector.hnsw.builder.neighbor_cnt

hnsw 0層圖每個節點的鄰居數。建議配置為100。該值越大,離線索引存儲消耗越大,圖構建質量越高。

100

index.vector.hnsw.builder.upper_neighbor_cnt

hnsw上層圖(除0層之外)中每個節點的鄰居上限數。一般建議配置為neighbor_cnt的一半,最大不能超過255。

50

index.vector.hnsw.builder.efconstruction

控制圖構建過程中近鄰掃描區域大小,該值越大,離線構圖質量越好,索引構建越慢。建議初始值設置為400。

400

index.vector.hnsw.builder.max_level

hnsw總層數,包含0層圖和上層圖。例如總共1000萬文檔,scaling_factor為30,那么層數可以以max level=30為底,取1000萬的對數向上取整,計算得5。

該值對效果影響不大,一般建議初始配置為6。

6

index.vector.hnsw.builder.scaling_factor

下層圖是上層圖數據的多少倍,呈指數關系。通常設置在10~100之間。scaling_factor越大,實際生成的圖層數越低。建議初始配置為50。

50

說明

以上參數需在索引setting中設置使用,并且僅支持在hnsw算法模型中使用。

表 3. 查詢參數(hnsw)

參數

描述

默認值

ef

用于控制在線檢索時,考察的子圖范圍大小。該值越大,召回越高,性能越差。建議取值[100,1000]。

100

查詢示例如下。

GET test/_search
{
  "query": {
    "hnsw": {
      "feature": {
        "vector": [1.5, 2.5],
        "size": 10,
        "ef": 100       
      }
    }
  }
}

常見問題

  • Q:如何評估查詢的召回率?

    A:可以同時創建兩個索引,一個為hnsw算法,一個為linear算法,其他配置相同。客戶端向兩個索引同時推送相同的向量數據,刷新后,用同樣的查詢向量對比linear索引和hnsw索引召回的文檔ID,交集的文檔ID個數/召回總數,即為待測向量的召回率。

    說明

    交集的文檔ID個數是指兩個索引召回的文檔ID的交集。

  • Q:集群寫入期間報錯circuitBreakingException,如何處理?

    A:這個錯誤表明此時系統的堆外內存使用率超過了indices.breaker.vector.native.indexing.limit指定的比例(默認為70%),觸發了寫入的熔斷操作,一般等待后臺的索引構建任務完成后會自動釋放。建議客戶端寫入時添加錯誤重試機制。

  • Q:為什么寫入任務已經停止了,CPU依然在工作?

    A:向量索引的構建發生在refresh或flush期間,雖然寫入流量已經停止,但后臺的向量索引構建任務可能仍然在繼續。等待最后一輪refresh結束后,計算資源就會被釋放。

  • Q:使用aliyun-knn插件查詢時報錯class_cast_exception: class org.apache.lucene.index.SoftDeletesDirectoryReaderWrapper$SoftDeletesFilterCodecReader cannot be cast to class org.apache.lucene.index.SegmentReader (org.apache.lucene.index.SoftDeletesDirectoryReaderWrapper$SoftDeletesFilterCodecReader and org.apache.lucene.index.SegmentReader are in unnamed module of loader 'app'),如何處理?

    A:關閉索引的物理復制功能,具體操作請參見使用apack插件的物理復制功能

  • Q:使用aliyun-knn插件進行向量檢索,速度過慢或出現內存熔斷,怎么辦?

    A:aliyun-knn插件進行向量檢索時,使用的是全內存型向量,非常消耗內存。當索引數據量較大時,由于需要將數據加載到內存,因此會出現速度慢或內存熔斷的情況。建議索引數據量是機器內存的一半,在數據量無法變更的情況下,如果內存太小,建議您升配集群

  • Q:關于aliyun-knn插件是否有提供最佳實踐文檔供參考?

    A:您可以參見阿里云開發者社區提供的aliyun-knn插件業務場景aliyun-knn最佳實踐

  • Q:如果當下阿里云Elasticsearch集群的向量檢索能力不滿足業務需求,怎么辦?

    A:推薦您使用阿里巴巴自主研發的大規模分布式搜索引擎OpenSearch-向量檢索版,詳細信息請參見向量檢索版介紹

  • Q:knn場景使用must_not exists無法過濾出feature字段為空的文檔,如何編寫語句過濾出feature字段為空的數據?

    A:knn數據存儲比較特殊,可能會存在個別DSL查詢不兼容的情況,您可以使用以下腳本進行過濾。

    GET jx-similar-product-v1/_search
    {
       "query": {
         "bool": {
           "must": {
             "script": {
               "script": {
                 "source": "doc['feature'].empty",
                 "lang": "painless"
                 }
             }
           }
         }
       }
    }