当前位置: 首页 > news >正文

向 AI Search 迈进,腾讯云 ES 自研 v-pack 向量增强插件揭秘

作者:来自腾讯云刘忠奇

2025 年 1 月,腾讯云 ES 团队上线了 Elasticsearch 8.16.1 AI 搜索增强版,此发布版本重点提升了向量搜索、混合搜索的能力,为 RAG 类的 AI Search 场景保驾护航。除了紧跟 ES 官方在向量搜索上的大幅优化动作外,腾讯云 ES 还在此版本上默认内置了一个全新的插件 —— v-pack 插件。v-pack 名字里的 "v" 是 vector 的意思,旨在提供更加丰富、强大的向量、混合搜索能力。本文将对该版本 v-pack 插件所包含的功能做大体的介绍。

腾讯云 ES AI 搜索优化实践 刘忠奇 20250605

一、存储优化:突破向量搜索的存储瓶颈

1.1 行存裁剪:无损瘦身节省 70% 存储

技术原理

传统 Elasticsearch 默认将向量数据同时存储在行存 _source(.fdt) 和列存 doc_value(.dvd/.vec) 中,造成冗余。利用腾讯云 ES 贡献给社区的向量列存读取能力(PR #114484),在安装了 v-pack 插件的集群上,默认无损排除 _source 中的向量(dense_vector)字段,实现存储空间的高效利用。

技术亮点

  • 动态开关:通过集群级参数 vpack.auto_exclude_dense_vector 控制(默认开启)
  • 无损兼容:通过 docvalue_fields 语法仍可获取原始向量值(用于业务开发调试、reindex 等操作)

实测效果

场景

原始存储

优化后存储

节省比例

纯向量场景(250w条)

4.78GB

1.09GB

77%

混合场景(200w条)

32.21GB

9.10GB

72%

使用方法

无需手动启用,安装了 v-pack 插件的集群即生效。v-pack 会在创建新索引时,自动在索引 settings 中扩增 index.mapping.source.auto_exclude_types 参数来裁剪向量字段。

如需关闭,可关闭集群维度的动态开关,此后新创建的索引则不会做裁剪。

PUT _cluster/settings
{"persistent": {"vpack.auto_exclude_dense_vector": false}
}

场景建议

所有生产场景

1.2 量化裁剪:极致瘦身节省 90% 存储

技术原理

量化实际是将原始高位向量压缩成低位向量的一种算法,如果把量化比作 “脱水”,那这类算法函数的逆运算,就可以实现反向 “复水” 得到原来的向量。当然由于低位不能完全表示高位,在精度上会有一定损失,但它带来的是磁盘存储的进一步下降,对于存储有强烈需求的客户仍然具有很高的实际意义。在上文行存裁剪的基础上,进一步节省存储到 90%。

技术亮点

在社区标量量化技术int8_hnsw基础上,首创int8_only_hnsw索引类型:

  • “脱水”存储:仅保留量化后的 int8 向量(.veq文件)
  • 动态“复水”:merge 时通过量化参数还原近似原始向量

实测效果

场景

原始存储

优化后存储

节省比例

纯向量场景(250w条)

4.78GB

0.44GB

90%

混合场景(200w条)

32.21GB

1.09GB

91%

技术对比

使用方法

在安装了 v-pack 插件的集群,创建索引时,将 index_options.type 设置为 int8_only_hnsw 索引类型

PUT product_vector_index
{"mappings": {"properties": {"embedding": {"type": "dense_vector","dims": 768,"index_options": {"type": "int8_only_hnsw","m": 32,"ef_construction": 100}}}}
}

场景建议

  • 搜推系统:对存储敏感的场景
  • RAG 应用:海量的知识库数据

1.3 小结

下图展示了 v-pack 的两种向量存储裁剪的效果。详细的技术方案解析详见:《ES8向量功能窥探系列(二):向量数据的存储与优化》

二、排序优化:多策略融合的灵活组合

2.1 权重可调 RRF 融合:

算法演进

在标准 RRF(Reciprocal Rank Fusion)公式中引入权重因子:

加权得分 = Σ( weight_i / (k + rank_i) )

突破传统多路召回等权融合的限制,支持业务自定义权重策略。

混合排序示例

GET news/_search
{"retriever": {"rank_fusion": {"retrievers": [{"standard": {"query": {"match": {"title": "人工智能"}}}},{"knn": {"field": "vector","query_vector": [...],"k": 50}}],"weights": [2, 1],"rank_constant": 20}}
}

适用场景

  • 电商搜索:提升关键词权重(权重比 3:1 或更大)
  • 内容推荐:增强语义相关性(权重比 1:2 或更大)
  • 知识库检索:平衡语义与关键词(权重比 1:1 微调)

2.2 归一化 Score 融合

算法原理

通过动态归一化将不同评分体系统一到 0,1 区间:

  1. BM25 归一化(score - min_score)/(max_score - min_score)
  2. 向量相似度归一化cosine_similarity + 1 / 2

混合排序示例

{"retriever": {"score_fusion": {"retrievers": [...],"weights": [1.5, 1]}}
}

适用场景

  • 结果可解释性强
  • 多维度加权评分的精排搜索

2.3 基于模型的 Rerank 融合

算法原理

借助腾讯云智能搜索的原子能力,腾讯云 ES 8.16.1 搜索增强版,已支持调用第三方 rerank 模型对混合搜索的结果进行重排。当前已支持内置下列重排序模型,这些模型都部署在 GPU 上,性能有极大提升。

原子服务

token限制

维度

语言

备注

bge-reranker-large

514

1024

中文、英文

bge经典模型

bge-reranker-v2-m3

8194

1024

多语言

bge经典模型

bge-reranker-v2-minicpm-layerwise

2048

2304

多语言

在英语和中文水平上均表现良好,可以自由选择输出层,有助于加速推理

使用示例

PUT _inference/rerank/tencentcloudapi_bge-reranker-large
{"service": "tencent_cloud_ai_search","service_settings": {"secret_id": "xxx","secret_key": "xxx","url": "https://aisearch.internal.tencentcloudapi.com","model_id": "bge-reranker-large","region":  "ap-beijing","language":  "zh-CN","version":  "2024-09-24"}
}
POST _inference/rerank/tencentcloudapi_bge-reranker-large
{"query": "中国","input": ["美国","中国","英国"]
}
{"rerank": [{"index": 1,"relevance_score": 0.99990976,"text": "中国"},{"index": 0,"relevance_score": 0.013636836,"text": "美国"},{"index": 2,"relevance_score": 0.00941259,"text": "英国"}]
}

混合排序示例

{"retriever": {"tencent_cloud_ai_reranker": {"retrievers": [...],"model_id": "tencentcloudapi_bge-reranker-large",                           "rank_field": "content","rank_text": "nice day","rank_window_size": 10,                                                             "min_score": 0.6}}
}

适用场景

  • 对语义相关性有更高需求的场景
  • 对准召率有更高需求的场景

2.4 小结

下图展示了 v-pack 提供的多种融合排序算法,所带来的更丰富的准召率提升手段。

v-pack 提供的融合算法,支持自定义的灵活组合,可以参考如下的做法来组合使用。

三、推理飞跃:无缝连接最强模型

3.1 对话推理:一键接入满血 Deepseek 大模型

借助腾讯云智能搜索的 LLM 生成服务,腾讯云 ES 8.16.1 搜索增强版亦可以一键接入 DeepSeek 以及混元系列大模型进行推理。

模型类型

模型名称(model)

Tokens

特性

deepseek-r1

最大输入128k

最大输出8k

擅长复杂需求拆解、技术方案直译,提供精准结构化分析及可落地方案,实现了与GPT-4o和Claude Sonnet 3.5等顶尖模型相媲美的性能

deepseek-v3

最大输入128k

最大输出8k

通用型AI模型,拥有庞大参数规模及强大多任务泛化能力,擅长开放域对话、知识问答、创意生成等多样化需求

deepseek-r1-distill-qwen-32b

最大输入128k

最大输出8k

r1-36b参数蒸馏版,效果没有r1好,但响应速度更快,资源成本更低

hunyuan-turbo

最大输入28k

最大输出4k

腾讯新一代旗舰大模型,混元Turbo模型,在语言理解、文本创作、数学、推理和代码等领域都有较大提升,具备强大的知识问答能力

...

使用示例

PUT _inference/completion/deepseek
{"service": "tencent_cloud_ai_search","service_settings": {"secret_id": "xxx","secret_key": "xxx","url": "https://aisearch.internal.tencentcloudapi.com","model_id": "deepseek-v3","region":  "ap-beijing","language":  "zh-CN","version":  "2024-09-24"}
}
POST _inference/completion/deepseek
{"input": "你是谁?"
}
{"completion": [{"result": "我是DeepSeek Chat,一个由深度求索公司开发的智能助手,旨在通过自然语言处理和机器学习技术来提供信息查询、对话交流和解答问题等服务。"}]
}

我们可以借助该能力,使用 Deepseek 代替 OpenAI 实现官方最佳实践中的相关功能:https://www.elastic.co/search-labs/blog/elasticsearch-openai-completion-support

3.2 嵌入推理:接入 GPU embedding 消除推理高延迟

借助腾讯云智能搜索的 LLM 生成服务,腾讯云 ES 8.16.1 搜索增强版支持内网无缝推理,目前支持以下主流的 embedding 模型。

原子服务

token限制

维度

语言

备注

bge-base-zh-v1.5

512

768

中文

bge经典模型

bge-m3

8194

1024

多语言

bge经典模型

conan-embedding-v1

512

1792

中文

腾讯自研,在MTEB榜单一度综合排第一

使用示例

PUT _inference/text_embedding/tencentcloudapi_bge_base_zh-v1.5
{"service": "tencent_cloud_ai_search","service_settings": {"secret_id": "xxx","secret_key": "xxx","url": "https://aisearch.internal.tencentcloudapi.com","model_id": "bge-base-zh-v1.5","region":  "ap-beijing",   "language":  "zh-CN","version":  "2024-09-24"}
}
PUT semantic_text_index
{"mappings": {"properties": {"content": {"type": "semantic_text","inference_id": "tencentcloudapi_bge_base_zh-v1.5"}}}
}

3.3 小结

借助腾讯云智能搜索的原子服务,腾讯云 ES 允许用户将 ES 作为 AI Search 的服务中枢,成为向量、文本、模型的统一引擎,all in one 一站式地完成整套 RAG 场景的搜索和推理需求。

四、持续进化:社区贡献与自研特性齐头并进

腾讯云 ES 团队持续投入开源生态建设,覆盖最新的向量场景:

  • 核心贡献:累计提交 200+ 社区PR,向量相关 10+

让技术回归本质,用创新驱动价值

腾讯云 ES 将持续深耕 AI Search 基础设施,致力服务好当今日益增长的 RAG 与多模态搜索需求,与开发者共同探索搜索技术的无限可能。

相关文章:

  • 【基础算法】差分算法详解
  • 在 Windows 11 或 10 上将 Visual Studio Code 添加到系统路径
  • 永恒之蓝(CVE-2017-0146)详细复现
  • 每日Prompt:治愈动漫插画
  • 测试工程师的AI测试开发进阶:LangChain在多测试领域的实战与思考
  • 六、Sqoop 导出
  • C++之STL--list
  • 技巧小结:根据寄存器手册写常用外设的驱动程序
  • Qt/C++学习系列之列表使用记录
  • C++调试(肆):WinDBG分析Dump文件汇总
  • AI浪潮下的IT行业:威胁、转变与共生之道
  • 从温湿度控制切入:楼宇自控系统打造舒适建筑环境的路径
  • aws(学习笔记第四十三课) s3_sns_sqs_lambda_chain
  • opencv_stereoRectify源码解析
  • java_网络服务相关_gateway_nacos_feign区别联系
  • vue3 + vite实现动态路由,并进行vuex持久化设计
  • Swagger和OpenApi的前世今生
  • 基于Java+VUE+MariaDB实现(Web)仿小米商城
  • conda指定包安装的channel
  • linux 用户态时间性能优化工具perf/strace/gdb/varlind/gprof
  • wordpress做网站好吗/seo排名优化公司哪家好
  • 网站建设计划书/八上数学优化设计答案
  • 网站主页 优帮云/今日的头条新闻
  • 纪实摄影网站推荐/泰安网站建设优化
  • 嘉兴网站建设推广/如何提升百度关键词排名
  • 编程和做网站那个号/谷歌seo代运营