在人工智能应用从原型走向生产的过程中,搜索能力始终是决定应用质量的关键环节。传统的基于关键字的搜索擅长精确匹配,但无法理解语义层面的相似性。向量搜索能够捕捉文本的深层含义,却在处理专有名词、日期范围和精确数值时表现不佳。这两种能力单独使用都存在明显的盲区,而将它们结合起来正是混合搜索的核心价值所在。
本文将带领读者从零开始,理解混合搜索的基本原理,并通过实际案例演示如何在主流AI数据库平台上完成混合搜索的部署与使用。文章不堆砌理论概念,而是以可运行的代码和具体的查询示例为主线,帮助读者快速上手。
一、什么是混合搜索
1.1 从单一检索到多路召回
在AI应用开发中,检索环节通常面临一个两难选择。纯向量检索通过嵌入模型将文本映射到高维空间,能够找到语义相似但关键词不匹配的内容,但对于人名、产品型号、日期范围等精确信息的匹配往往不够准确。纯全文检索能够精确定位包含特定关键词的文档,但无法处理同义词或概念层面的语义关联。
以一个餐饮推荐场景为例,用户提问寻找五百米以内、人均消费二十五元、评价四点五分以上且不用排队的餐厅。这个查询同时包含空间位置约束、标量数值过滤和基于评论语义的理解。如果数据库不支持混合检索,就需要通过多种组件分别获取结果再进行多路归并,这种方式相比全局排序会损失精度,进而影响AI应用的效果。
1.2 混合搜索的核心设计模式
混合搜索的基本工作方式是针对同一数据源并行执行全文搜索和向量搜索,然后通过融合算法将两路结果合并为统一的排序列表。在这个过程中,全文检索通常基于BM25算法计算相关性分数,向量检索基于余弦距离或内积计算语义相似度,融合层负责将这两种不同尺度的分数统一为最终的排序依据。
当前主流的融合策略主要有两种。倒数排名融合(RRF)不依赖原始分数,而是基于文档在两路检索结果中的排名位置计算融合分数,公式为1除以常数加排名的和,这种方法对不同评分尺度天然鲁棒。线性加权融合则通过对归一化后的分数进行加权求和来计算最终得分,提供了更灵活的调优空间。
1.3 为什么混合搜索是AI数据库的分水岭
OceanBase的技术负责人曾指出,向量搜索只是AI数据库的初级阶段,最终所有的向量搜索都会逐步演进为混合搜索,能不能支持混合搜索是AI数据库核心能力的分水岭。这个判断背后有一个清晰的逻辑:在真实的AI应用场景中,用户查询几乎总是同时包含语义理解需求和精确匹配需求。仅依赖向量检索可能漏掉关键的结构化数据,如日期范围或类别标签,导致召回率不足,进而引发AI生成看似合理但事实上错误的幻觉内容。
二、混合搜索的核心技术组件
2.1 全文检索与向量检索的协同
理解混合搜索的关键在于理解两种检索方式各自的优势和局限。全文检索基于倒排索引和BM25评分,能够快速定位包含特定词语的文档,在匹配专有名词、产品代码和精确术语时表现优异。向量检索将文本编码为稠密向量,通过近似最近邻搜索找到语义相近的内容,适合处理同义词、多语言和概念层面的模糊查询。
在混合搜索架构中,这两种检索方式不是串行执行后简单的结果拼接,而是在同一查询请求中并行执行,各自产生排序结果,再通过融合算法统一排序。这种设计让系统能够在利用关键词精确匹配能力的同时,不丢失语义搜索的泛化能力。
2.2 融合算法:RRF与线性加权
倒数排名融合是目前业界最广泛采用的混合搜索融合算法。其核心优势在于不依赖分数归一化,因为全文检索的BM25分数与向量检索的余弦距离使用完全不同的尺度,直接比较或加权会遇到困难。RRF通过排名位置替代原始分数,彻底回避了评分尺度不一致的问题。
RRF的计算公式为每个文档的最终得分等于其在各检索结果中得分的累加,其中rank是该文档在某一检索结果中的排名位置,k是一个常数,通常设置为60。这种设计使同时出现在两路结果前列的文档获得显著更高的总分,而仅出现在单一路结果中的文档也能获得合理的排名。
线性加权融合则提供了另一种思路。先通过MinMax归一化将不同检索器的分数映射到相同的数值范围,再进行加权求和。这种方法保留了实际分数的差异信息,对于需要精细调优的场景更加灵活。
2.3 混合搜索的查询结构
一个典型的混合搜索查询通常包含以下要素:全文搜索部分使用自然语言查询字符串,指定需要匹配的字段;向量搜索部分将同一查询文本转换为嵌入向量,指定向量字段和返回数量;融合参数指定使用的融合算法及相应参数;过滤器用于在搜索前后对结果进行标量条件筛选。这种结构使混合搜索能够同时满足语义理解、精确匹配和结构化过滤三种需求。
三、环境准备与基础配置
3.1 数据库选型与部署
目前支持混合搜索的主流AI数据库包括OceanBase seekdb、Oracle Database 23ai、Azure AI Search以及Milvus等。对于入门实践,OceanBase seekdb提供了较为完整的入门体验。
seekdb支持向量、全文、标量及空间地理数据的统一混合搜索,最低起步配置仅需1核CPU和2GB内存,可通过pip install一键安装并秒级启动。它提供两种部署模式:嵌入式模式适合移动应用和边缘设备开发,服务器模式适合CI/CD和测试环境。对于初次体验混合搜索的开发者,服务器模式配合MySQL客户端是最直接的路径。
部署完成后,通过MySQL客户端连接到seekdb实例,创建用于实验的数据库和示例表。示例表应包含标量列用于结构化过滤、向量列用于语义搜索以及全文索引列用于关键词匹配。
3.2 嵌入模型的选择
嵌入模型的选择直接影响向量检索的质量。对于中文场景,BAAI的bge系列模型效果较好,sentence-transformers库提供了丰富的多语言模型选项。入门阶段推荐使用轻量级模型,无需API费用即可本地运行。在使用seekdb时,可以通过配置大模型参数,调用AI Function直接在数据库内完成文本到向量的转换。
3.3 测试数据的准备
构建一个包含多种检索需求的测试数据集有助于理解混合搜索的实际效果。以新闻或产品描述数据为例,数据应同时包含精确关键词匹配需求和语义相似需求。例如,在球员荣誉类数据中,全文检索擅长匹配梅西和世界杯这类专有名词,向量检索擅长匹配荣誉和成就这类概念性描述。两类数据的合理搭配能够直观展现混合搜索相较单一检索方式的优势。
四、混合搜索的实战操作
4.1 创建支持混合搜索的数据表
在数据库中创建同时支持全文索引和向量索引的表,这是混合搜索的数据基础。表结构需要包含存储原始文本的字段、存储向量嵌入的向量列,以及全文索引列。向量列的维度需要与嵌入模型的输出维度匹配,全文索引列需要配置合适的分词器以支持中文。
在seekdb中,创建表的语句需要指定向量索引类型和距离度量方式,以及全文索引的配置参数。创建完成后,通过INSERT语句将测试数据写入表中,向量列的数据可以通过调用嵌入模型从文本字段生成。
4.2 执行纯向量检索
纯向量检索通过计算查询向量与数据集中向量列的相似度,返回语义最接近的若干条记录。在seekdb中,通过设置KNN查询参数指定向量字段、返回数量K值和查询向量,执行DBMS_HYBRID_SEARCH.SEARCH函数即可获得按相似度排序的结果。
观察纯向量检索的结果可以发现,它能够召回语义相近但关键词不完全匹配的内容,但在精确匹配特定术语时可能漏掉包含该术语但语义距离稍远的文档。这正是引入全文检索作为补充的原因。
4.3 执行纯全文检索
纯全文检索通过关键词匹配查找内容,适用于文档搜索和产品搜索等场景。在查询配置中指定需要在哪些字段上执行关键词匹配,以及查询字符串的内容,系统会基于BM25算法计算相关性分数并排序返回。
纯全文检索的优势在于精确匹配专有名词和特定术语,但它的局限在于无法理解同义词和概念层面的关联。当用户使用不同词汇表达相同含义时,全文检索可能无法召回相关文档。
4.4 执行混合搜索
混合搜索在同一查询中同时执行全文检索和向量检索,并通过融合算法合并结果。在seekdb中,通过在一个查询配置中同时包含query_string全文搜索参数和knn向量搜索参数来实现混合搜索。系统会并行执行两种检索,将两路结果送入融合层排序后返回统一的top K结果列表。
从实际效果来看,混合搜索的top结果同时满足了关键词精确匹配和语义相似度两个维度的要求。在测试数据中,纯全文检索返回的结果可能在专有名词匹配上表现良好但排序不够理想,纯向量检索可能在概念召回上表现出色但对精确术语的匹配不够精准,而混合搜索将两者结合,在整体排序质量上优于任一单一方法。
五、融合策略的调优与实践
5.1 RRF融合的配置与效果
RRF融合不需要分数归一化,配置相对简单。在Azure AI Search中,混合查询默认使用RRF合并全文和向量结果。在Milvus 2.5中,通过RRFRanker类指定融合参数,其中常数k的默认值为60。
RRF的一个关键特性是同时出现在两路结果中的文档会获得显著的排名提升。这意味着如果一个文档在全文检索和向量检索中都排在前列,它的最终排名将远高于仅在其中一路中排名靠前的文档。这种机制使RRF能够自然地融合两种检索信号,而不需要手动调整权重。
5.2 线性加权融合的精细调优
线性加权融合提供了更精细的控制能力。在Elasticsearch的线性检索器中,最终得分通过对各检索器得分进行加权求和得到,这要求先将不同检索器的分数通过MinMax归一化映射到相同范围。
归一化后的分数保留了每个文档在各自检索结果中的相对重要性,使加权求和的结果更有意义。通过调整各检索器的权重系数,可以根据具体业务场景灵活控制全文匹配和语义理解对最终排序的贡献比例。
5.3 融合策略的选择建议
RRF融合的优势在于无需分数归一化,对不同的评分尺度和数据分布具有较好的鲁棒性,适合入门场景和快速验证。线性加权融合的优势在于提供了更直观的调优空间,适合对搜索质量有精细化要求的场景。
在实际项目中,可以先使用RRF快速建立混合搜索基线,再根据搜索质量评估结果决定是否需要切换到线性加权融合进行更精细的权重调优。
六、从入门到生产的关键考量
6.1 性能优化
混合搜索的查询性能受多个因素影响。向量索引的类型和参数直接影响近似最近邻搜索的速度和召回率,HNSW和IVF是两种常用的索引类型。全文索引的分词器配置影响关键词匹配的精度和索引大小。融合阶段需要处理的数据量由各路检索返回的候选数量决定,候选数量越大融合精度越高但计算开销也越大。
一种常见的优化策略是控制各路检索返回的候选数量为最终返回结果的三到五倍,在保证融合质量的同时控制计算开销。对于大规模数据集,使用VECTOR_SEARCH替代精确的VECTOR_DISTANCE计算可以显著提升性能。
6.2 中文场景的特别处理
中文场景下的混合搜索面临一些特有的挑战。全文检索的分词器需要支持中文分词,IK分词器是常见的选择。向量检索的嵌入模型需要经过中文语料的训练,通用英文模型在中文语义理解上的表现往往不够理想。
在数据准备阶段,需要确保文本字段使用正确的字符编码,全文索引列配置了合适的中文分词参数。在查询阶段,用户输入的自然语言查询同样需要经过分词处理才能获得良好的全文检索效果。
6.3 从实验到生产的部署路径
从实验环境迁移到生产环境时,需要关注几个关键方面。数据量的增长可能需要调整向量索引的构建参数和全文索引的配置。查询并发量的增加需要考虑数据库连接池的配置和查询缓存策略。混合搜索的融合权重可能需要根据生产环境的搜索日志进行持续调优。
对于生产级部署,建议采用支持水平扩展的数据库方案。OceanBase的服务器模式支持单机部署,也可以扩展到多节点集群。Milvus等专业向量数据库也提供了分布式部署选项,以适应更大规模的数据和查询负载。
结语
混合搜索是AI应用从原型走向生产的关键技术。它通过融合全文检索的精确匹配能力和向量检索的语义理解能力,使搜索系统能够同时满足多种类型的查询需求。本文从混合搜索的基本原理出发,介绍了其核心技术组件、主流融合算法和实际操作步骤。
混合搜索的实践表明,在AI应用开发中,精确匹配与语义理解不是非此即彼的选择。将它们有机融合,才能构建出真正理解用户意图同时不丢失关键信息的智能搜索系统。随着AI数据库技术的持续演进,混合搜索的门槛正在不断降低,掌握这一能力已经成为AI应用开发者的基本功。