向量检索 本文为您介绍天翼云云搜索服务的向量检索能力及使用方法。 功能简介 支持向量检索(Vector Search)是搜索引擎的一个高级功能,它允许用户在高维向量空间中进行相似性搜索,而不仅仅是基于传统的关键词匹配。 向量检索的核心在于,它通过将文本、图像或其他数据转换为向量(即一组多维的数值表示),基于这些向量之间的距离来查找相似的项目。与传统的基于关键字的检索方法相比,向量检索更适合处理复杂的数据类型,如自然语言处理、推荐系统和计算机视觉等场景。 在搜索引擎中,支持向量检索的功能通过集成高效的向量索引结构(如近似最近邻搜索算法)实现。这使得搜索引擎能够在处理大规模数据集时,依然保持高效的查询速度和准确性。通过向量检索,用户可以在海量数据中快速找到与查询向量最相似的结果,从而提升搜索体验和应用的智能化水平。 天翼云云搜索服务提供的OpenSearch和Elasticsearch都可以支持向量检索能力。OpenSearch在向量检索能力上相比Elasticsearch 7.10.2(搭配早期OpenDistro插件)有明显提升。其内置的KNN插件持续演进,升级集成了更高版本的FAISS库,在构建索引速度、内存管理、查询性能等方面有较大优化。这些改进使得OpenSearch更适用于大规模、高并发的向量检索场景。 使用示例 以下是OpenSearch支持向量检索示例。 创建索引: plaintext PUT myknnindex1 { "settings": { "index": { "knn": true, "knn.algoparam.efsearch": 100 } }, "mappings": { "properties": { "category": { "type": "keyword" }, "brand": { "type": "keyword" }, "style": { "type": "keyword" }, "myvector": { "type": "knnvector", "dimension": 3 } } } } 插入3条数据: plaintext PUT myknnindex1/doc/1 { "category": "electronics", "brand": "brandA", "style": "modern", "myvector": [0.5, 0.8, 0.3] } PUT myknnindex1/doc/2 { "category": "furniture", "brand": "brandB", "style": "vintage", "myvector": [0.2, 0.4, 0.7] } PUT myknnindex1/doc/3 { "category": "clothing", "brand": "brandC", "style": "casual", "myvector": [0.9, 0.1, 0.6] } 查询: plaintext POST myknnindex1/search { "size": 10, "query": { "knn": { "myvector": { "vector": [0.5, 0.8, 0.3], "k": 2 } } } } 返回结果: plaintext { "took" : 4, "timedout" : false, "shards" : { "total" : 1, "successful" : 1, "skipped" : 0, "failed" : 0 }, "hits" : { "total" : { "value" : 2, "relation" : "eq" }, "maxscore" : 1.0, "hits" : [ { "index" : "myknnindex1", "id" : "1", "score" : 1.0, "source" : { "category" : "electronics", "brand" : "brandA", "style" : "modern", "myvector" : [ 0.5, 0.8, 0.3 ] } }, { "index" : "myknnindex1", "id" : "2", "score" : 0.7092199, "source" : { "category" : "furniture", "brand" : "brandB", "style" : "vintage", "myvector" : [ 0.2, 0.4, 0.7 ] } } ] } }