向量檢索
更新時間 2025-07-25 12:04:42
最近更新時間: 2025-07-25 12:04:42
分享文章
本文為您介紹天翼云云搜索服務的向量檢索能力及使用方法。
功能簡介
支持向量檢索(Vector Search)是搜索引擎的一個高級功能,它允許用戶在高維向量空間中進行相似性搜索,而不僅僅是基于傳統的關鍵詞匹配。
向量檢索的核心在于,它通過將文本、圖像或其他數據轉換為向量(即一組多維的數值表示),基于這些向量之間的距離來查找相似的項目。與傳統的基于關鍵字的檢索方法相比,向量檢索更適合處理復雜的數據類型,如自然語言處理、推薦系統和計算機視覺等場景。
在搜索引擎中,支持向量檢索的功能通過集成高效的向量索引結構(如近似最近鄰搜索算法)實現。這使得搜索引擎能夠在處理大規模數據集時,依然保持高效的查詢速度和準確性。通過向量檢索,用戶可以在海量數據中快速找到與查詢向量最相似的結果,從而提升搜索體驗和應用的智能化水平。
天翼云云搜索服務提供的OpenSearch和Elasticsearch都可以支持向量檢索能力。OpenSearch 2.19.1版本在向量檢索能力上相比Elasticsearch 7.10.2(搭配早期OpenDistro插件)有明顯提升。其內置的KNN插件持續演進,升級集成了更高版本的FAISS庫,在構建索引速度、內存管理、查詢性能等方面有較大優化。這些改進使得OpenSearch 2.19.1更適用于大規模、高并發的向量檢索場景。
使用示例
以下是OpenSearch支持向量檢索示例。
創建索引:
PUT my-knn-index-1
{
"settings": {
"index": {
"knn": true,
"knn.algo_param.ef_search": 100
}
},
"mappings": {
"properties": {
"category": {
"type": "keyword"
},
"brand": {
"type": "keyword"
},
"style": {
"type": "keyword"
},
"my_vector": {
"type": "knn_vector",
"dimension": 3
}
}
}
}插入3條數據:
PUT my-knn-index-1/_doc/1
{
"category": "electronics",
"brand": "brandA",
"style": "modern",
"my_vector": [0.5, 0.8, 0.3]
}
PUT my-knn-index-1/_doc/2
{
"category": "furniture",
"brand": "brandB",
"style": "vintage",
"my_vector": [0.2, 0.4, 0.7]
}
PUT my-knn-index-1/_doc/3
{
"category": "clothing",
"brand": "brandC",
"style": "casual",
"my_vector": [0.9, 0.1, 0.6]
}查詢:
POST my-knn-index-1/_search
{
"size": 10,
"query": {
"knn": {
"my_vector": {
"vector": [0.5, 0.8, 0.3],
"k": 2
}
}
}
}返回結果:
{
"took" : 4,
"timed_out" : false,
"_shards" : {
"total" : 1,
"successful" : 1,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : {
"value" : 2,
"relation" : "eq"
},
"max_score" : 1.0,
"hits" : [
{
"_index" : "my-knn-index-1",
"_id" : "1",
"_score" : 1.0,
"_source" : {
"category" : "electronics",
"brand" : "brandA",
"style" : "modern",
"my_vector" : [
0.5,
0.8,
0.3
]
}
},
{
"_index" : "my-knn-index-1",
"_id" : "2",
"_score" : 0.7092199,
"_source" : {
"category" : "furniture",
"brand" : "brandB",
"style" : "vintage",
"my_vector" : [
0.2,
0.4,
0.7
]
}
}
]
}
}