| 导语 腾讯云ES近期上线的8.8.1版本,提供了强大的云端AI增强能力,支持在统一技术栈中完成文本+向量的混合搜索,实现自然语言处理以及与大模型的集成,本文将从向量检索的优势与局限性介绍出发,说明混合搜索的原理、优势及其必要性,并通过效果演示为大家呈现腾讯云ES混合搜索的强大能力。
引言
向量检索的优势和局限性
首先,需要对文本进行预处理,比如主干提取,chunk,map等,以便将文本转化为适合词嵌入模型处理的大小,并将分块与原文档建立连接关系。 然后,需要对文本进行向量化,即将分块文本表示为一个高维的数值向量,这可以通过一些词嵌入模型来实现,比如Word2Vec、GloVe、BERT等。 最后,需要对查询语句进行向量化,即将查询语句表示为一个高维的数值向量,这可以通过与文档相同的文档嵌入模型来实现,或者通过一些特殊的查询嵌入模型来实现,比如Q-BERT、Q-Transformer等。 在得到了文档和查询语句的向量表示后,就可以通过计算它们之间的相似度,来实现文本的匹配和检索,这可以通过一些相似度度量来实现,比如余弦相似度、欧氏距离、曼哈顿距离等。注意,这里可以是和多个向量字段进行相似性计算,最终合并结果,并且一个文档可能会有多个分块,分块的向量相似性得分需要加权以比较文档的总体得分。
它可以处理自然语言中的复杂和模糊的表达方式,例如同义词,近义词,语言变体等。 它可以捕捉文本之间的语义关系,例如上下位关系,因果关系,相似关系等。 它可以支持多语言和跨语言的搜索,即用一种语言查询另一种语言的文档。 它可以支持多模态和跨模态的搜索,即用文本查询图像或视频等非文本类型的文档。
向量搜索在自然语言中的理解能力来自于深度学习模型,而非向量索引和向量相似性计算。 需要大量的计算资源和存储空间来训练和部署深度学习模型。 需要大量的标注数据来训练深度学习模型。如果数据质量不高或不足以覆盖所有可能的场景,模型可能无法泛化到新的数据上。 需要定期更新深度学习模型以适应数据和用户行为的变化。如果模型过时或不准确,可能会影响搜索结果的质量和用户满意度。 它需要考虑向量的维度和稠密程度,以选择合适的索引和查询方法。如果向量维度过高或过低,或者向量分布不均匀,可能会影响搜索效率和准确度。 向量搜索的实施和维护成本较高,涉及大量的计算资源和专业知识。对于一些资源有限的应用场景,这可能不是一个可行的选择。 在短文本搜索的场景中,向量搜索可能会面临语义理解的挑战。虽然向量搜索可以对查询进行语义分析,但当涉及到短文本时,语义的表示和理解可能不够准确,导致结果的相关性不佳。 向量搜索以词嵌入的方式表示数据,在搜索的透明性和可解释性上对人类有天然的障碍,人类即无法轻易理解两个嵌入到底第为何相似,也难以知道应该具体如何修改特征,以提升相关性。 embedding模型的修改、调优、再训练对于大多数的开发团队来说,门槛太高,ROI也充满了不确定性。


增加查询语句的长度,比如在ID、哈希码或产品名称后面加上一些描述性的词语,或者使用一些常见的问题作为查询语句,这样可以增加查询语句的语义信息,提高向量检索的效果。 使用一些特殊的符号或标记,比如在ID、哈希码或产品名称前后加上双引号,或者使用一些特定的字段名,这样可以告诉向量检索系统,这些词语是需要精确匹配的,而不是基于相似度的。 结合关键词检索,比如在向量检索的结果中,再使用关键词检索的方法,对查询语句和文档进行文本匹配和过滤,这样可以排除一些不相关的内容,提高检索的准确性。
增加查询语句的长度,可能会增加用户的输入成本,而且用户可能不知道如何扩展查询语句,或者扩展后的查询语句可能不符合用户的真实意图。 使用特殊的符号或标记,可能会增加用户的学习成本,而且用户可能不熟悉这些符号或标记的用法,或者忘记使用它们,导致检索效果不佳。 结合关键词检索,可能会降低检索的效率,而且关键词检索也有一些局限性,比如无法处理语义相似但文本不同的情况,或者无法处理模糊、错别字等情况。
混合搜索的原理和优势
更精准的检索结果。混合搜索可以同时利用关键词检索和向量搜索对数据进行查询,提高检索的准确性和可信度。 更多样的检索结果。混合搜索可以利用向量检索的多样性,返回多种不同的检索结果,而不是只返回一种最匹配的结果,这可以提供更多的选择和信息,满足不同的用户查询需求和偏好。 更复杂的查询需求。混合搜索可以利用关键词检索的逻辑运算、排序、过滤等功能,实现更复杂的查询需求,比如包含多个条件、多个字段、多个排序规则等的查询,这可以提高检索的功能和灵活性。 更可解释的检索结果。混合搜索可以利用关键词检索的文本匹配和高亮显示,实现更可解释的检索结果,比如显示查询语句和文档的匹配程度、匹配位置、匹配内容等,这可以提高用户对检索结果的理解和满意度。

更多的系统资源和设计成本。混合搜索需要同时使用向量检索和关键词检索的方法,这会增加系统的资源消耗和复杂度,也会增加系统的设计和维护的成本和难度。 一些向量检索和关键词检索的不一致性和冲突性。混合搜索需要对向量检索和关键词检索的结果进行合并和排序,这可能会出现一些不一致性和冲突性,比如两种检索方式返回的结果不同,或者两种检索方式的相似度或匹配度不同,或者两种检索方式的排序规则不同,这可能会影响检索结果的质量和可信度。 有效的过滤,可以使得搜索更加高效。
# Search ElasticSearch index and return body and URL of the resultdef search(es, embedding_model, query_text, search_mode):source_fields = ["body_content", "url", "title"]query = Noneknn = []highlight = Nonerank = Noneif search_mode in ["全文检索","混合搜索"]:query = {"multi_match": {"query": query_text,"fields": ["body_content^2","title","headings"],"boost": 1,"type": "most_fields","analyzer": "ik_max_word"}}if search_mode in ["密集向量搜索", "混合搜索"]:knn = [{"field": "ml.inference.headings_embeddings.predicted_value","query_vector_builder": {"text_embedding": {"model_id": embedding_model,"model_text": query_text}},"k": 5,"num_candidates": 10,"boost": 24}, {"field": "ml.inference.body_content_embeddings.predicted_value","query_vector_builder": {"text_embedding": {"model_id": embedding_model,"model_text": query_text}},"k": 5,"num_candidates": 10,"boost": 24},]if search_mode == "全文检索":highlight= {"pre_tags": ["`"],"post_tags": ["`"],"fields": {"body_content": {}}}if search_mode == "混合搜索":rank = {"rrf":{"window_size": 5,"rank_constant": 2}}resp = es.search(index="search-tencent-es-doc",fields=source_fields,query=query,knn=knn,highlight = highlight,rank = rank,size=3,source=False)return resp






body_content_filter = {"bool": {"must": [],"filter": [],"should": [],"must_not": [{"bool": {"minimum_should_match": 1,"should": [{"match_phrase": {"body_content.enum": ""}}]}}]}}
if search_mode in ["密集向量搜索", "混合搜索"]:knn = [{"field": "ml.inference.headings_embeddings.predicted_value","query_vector_builder": {"text_embedding": {"model_id": embedding_model,"model_text": query_text}},"k": 5,"num_candidates": 10,"boost": 24,"filter": body_content_filter}, {"field": "ml.inference.body_content_embeddings.predicted_value","query_vector_builder": {"text_embedding": {"model_id": embedding_model,"model_text": query_text}},"k": 5,"num_candidates": 10,"boost": 24,"filter": body_content_filter},]

总结
推荐阅读
关注腾讯云大数据公众号
邀您探索数据的无限可能

点击阅读原文,了解更多资讯
↓↓↓
文章转载自腾讯云大数据,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。







